Browse Source

Delete repretitions in error message

Also added automated tests, but the sometimes the test can fail only
for the order the lines are displayed
pull/646/head
Augusto 5 years ago committed by xpetit
parent
commit
3966dffaf0
  1. 1
      go/tests/rc/rc.go
  2. 207
      go/tests/rc/rc_test.go

1
go/tests/rc/rc.go

@ -537,6 +537,7 @@ func analyseProgram(filename, path string, load loadedSource) *info {
info.illegals = append(info.illegals, analyseArrayTypes(info.arrays, noArrays, noTheseArrays)...)
info.illegals = append(info.illegals, analyseLits(info.lits, noLit)...)
info.illegals = append(info.illegals, analyseRepetition(info.callRep, allowedRep)...)
info.illegals = removeRepetitions(info.illegals)
return info
}

207
go/tests/rc/rc_test.go

@ -2,142 +2,125 @@ package main
import (
"fmt"
"runtime"
"strings"
"testing"
"github.com/01-edu/z01"
)
func challengeProgram(t *testing.T, stuPath, solPath string, args ...string) {
exercise := strings.ToLower(
strings.TrimPrefix(t.Name(), "Test"))
out, err := z01.MainOut(stuPath+exercise, args...)
if err != nil {
t.Error(err)
}
correct, err := z01.MainOut(solPath+exercise, args...)
if err != nil {
t.Error(err)
}
if out != correct {
t.Errorf("./%s %s prints %q instead of %q\n",
exercise, strings.Join(args, " "), out, correct)
}
}
func TestFlags(t *testing.T) {
argsAndSolution := map[string]string{
"tests/alphacount.go": `Parsing
OK
Cheating
illegal-import regexp tests/alphacount.go:4:2
illegal-access regexp.MustCompile tests/alphacount.go:8:8
illegal-call len tests/alphacount.go:10:9
illegal-call AlphaCount tests/alphacount.go:7:1
"tests/testingSimpleFunc.go": `Parsing:
Ok
Cheating:
TYPE: NAME: LOCATION:
illegal-import regexp tests/testingSimpleFunc.go:4:2
illegal-call len tests/testingSimpleFunc.go:10:9
illegal-access regexp.MustCompile tests/testingSimpleFunc.go:8:8
illegal-definition SimpleFunc tests/testingSimpleFunc.go:7:1
`,
"-no-for -no-lit=[a-z] tests/printalphabet/printalphabet.go": `Parsing
OK
Cheating
illegal-import github.com/01-edu/z01 tests/printalphabet/printalphabet.go:4:2
illegal-call append tests/printalphabet/printalphabet.go:9:7
illegal-call fillArray tests/printalphabet/printalphabet.go:15:2
illegal-call fillArray tests/printalphabet/printalphabet.go:7:1
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:17:3
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:19:2
illegal-call main tests/printalphabet/printalphabet.go:13:1
illegal-literal 'a' tests/printalphabet/printalphabet.go:8:11
illegal-literal 'z' tests/printalphabet/printalphabet.go:8:21
illegal-literal '\n' tests/printalphabet/printalphabet.go:19:16
illegal-literal 'a' tests/printalphabet/printalphabet.go:8:11
illegal-literal 'z' tests/printalphabet/printalphabet.go:8:21
illegal-literal 'a' tests/printalphabet/printalphabet.go:8:11
illegal-literal 'z' tests/printalphabet/printalphabet.go:8:21
illegal-loop for tests/printalphabet/printalphabet.go:8:2
illegal-loop for tests/printalphabet/printalphabet.go:8:2
illegal-loop for tests/printalphabet/printalphabet.go:8:2
"-no-for -no-lit=[a-z] tests/printalphabet/printalphabet.go": `Parsing:
Ok
Cheating:
TYPE: NAME: LOCATION:
illegal-import fmt tests/printalphabet/printalphabet.go:4:2
illegal-import github.com/01-edu/z01 tests/printalphabet/printalphabet.go:6:2
illegal-call append tests/printalphabet/printalphabet.go:11:7
illegal-definition fillArray tests/printalphabet/printalphabet.go:9:1
illegal-call int tests/printalphabet/printalphabet.go:17:7
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:19:3
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:21:2
illegal-definition main tests/printalphabet/printalphabet.go:15:1
illegal-access fmt.Println tests/printalphabet/printalphabet.go:26:3
illegal-definition defFun tests/printalphabet/printalphabet.go:25:2
illegal-call defFun tests/printalphabet/printalphabet.go:28:2
illegal-definition testingScope tests/printalphabet/printalphabet.go:24:1
illegal-loop for tests/printalphabet/printalphabet.go:10:2
illegal-lit 'a' tests/printalphabet/printalphabet.go:10:11
illegal-lit 'z' tests/printalphabet/printalphabet.go:10:21
illegal-lit 'a' tests/printalphabet/printalphabet.go:16:14
illegal-lit 'b' tests/printalphabet/printalphabet.go:16:19
illegal-lit 'c' tests/printalphabet/printalphabet.go:16:24
illegal-lit 'd' tests/printalphabet/printalphabet.go:16:29
illegal-lit 'e' tests/printalphabet/printalphabet.go:16:34
illegal-lit 'f' tests/printalphabet/printalphabet.go:16:39
illegal-lit 'a' tests/printalphabet/printalphabet.go:17:11
illegal-lit '\n' tests/printalphabet/printalphabet.go:21:16
illegal-lit "Hello" tests/printalphabet/printalphabet.go:28:9
`,
"tests/eightqueens.go": `Parsing
OK
Cheating
illegal-import github.com/01-edu/z01 tests/eightqueens.go:4:2
illegal-access z01.PrintRune tests/eightqueens.go:49:5
illegal-access z01.PrintRune tests/eightqueens.go:55:2
illegal-call rune tests/eightqueens.go:49:19
illegal-call printQueens tests/eightqueens.go:70:5
illegal-call printQueens tests/eightqueens.go:42:1
illegal-call tryX tests/eightqueens.go:73:5
illegal-call tryX tests/eightqueens.go:85:2
illegal-call tryX tests/eightqueens.go:60:1
illegal-call EightQueens tests/eightqueens.go:83:1
"-cast tests/eightqueens.go": `Parsing:
Ok
Cheating:
TYPE: NAME: LOCATION:
illegal-import github.com/01-edu/z01 tests/eightqueens.go:4:2
illegal-access z01.PrintRune tests/eightqueens.go:49:5
illegal-access z01.PrintRune tests/eightqueens.go:55:2
illegal-definition printQueens tests/eightqueens.go:42:1
`,
"-cast tests/eightqueens.go": `Parsing
OK
Cheating
illegal-import github.com/01-edu/z01 tests/eightqueens.go:4:2
illegal-access z01.PrintRune tests/eightqueens.go:49:5
illegal-access z01.PrintRune tests/eightqueens.go:55:2
"-no-arrays tests/printalphabet/printalphabet.go": `Parsing:
Ok
Cheating:
TYPE: NAME: LOCATION:
illegal-import fmt tests/printalphabet/printalphabet.go:4:2
illegal-import github.com/01-edu/z01 tests/printalphabet/printalphabet.go:6:2
illegal-call append tests/printalphabet/printalphabet.go:11:7
illegal-definition fillArray tests/printalphabet/printalphabet.go:9:1
illegal-call int tests/printalphabet/printalphabet.go:17:7
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:19:3
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:21:2
illegal-definition main tests/printalphabet/printalphabet.go:15:1
illegal-access fmt.Println tests/printalphabet/printalphabet.go:26:3
illegal-definition defFun tests/printalphabet/printalphabet.go:25:2
illegal-call defFun tests/printalphabet/printalphabet.go:28:2
illegal-definition testingScope tests/printalphabet/printalphabet.go:24:1
illegal-array rune tests/printalphabet/printalphabet.go:9:18
illegal-array rune tests/printalphabet/printalphabet.go:16:7
`,
"-no-arrays tests/printalphabet/printalphabet.go ": `Parsing
OK
Cheating
illegal-import github.com/01-edu/z01 tests/printalphabet/printalphabet.go:4:2
illegal-call append tests/printalphabet/printalphabet.go:9:7
illegal-call fillArray tests/printalphabet/printalphabet.go:15:2
illegal-call fillArray tests/printalphabet/printalphabet.go:7:1
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:17:3
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:19:2
illegal-call main tests/printalphabet/printalphabet.go:13:1
illegal-array-type rune tests/printalphabet/printalphabet.go:14:8
"-no-these-arrays=int,rune tests/printalphabet/printalphabet.go": `Parsing:
Ok
Cheating:
TYPE: NAME: LOCATION:
illegal-import fmt tests/printalphabet/printalphabet.go:4:2
illegal-import github.com/01-edu/z01 tests/printalphabet/printalphabet.go:6:2
illegal-call append tests/printalphabet/printalphabet.go:11:7
illegal-definition fillArray tests/printalphabet/printalphabet.go:9:1
illegal-call int tests/printalphabet/printalphabet.go:17:7
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:19:3
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:21:2
illegal-definition main tests/printalphabet/printalphabet.go:15:1
illegal-access fmt.Println tests/printalphabet/printalphabet.go:26:3
illegal-definition defFun tests/printalphabet/printalphabet.go:25:2
illegal-call defFun tests/printalphabet/printalphabet.go:28:2
illegal-definition testingScope tests/printalphabet/printalphabet.go:24:1
illegal-array rune tests/printalphabet/printalphabet.go:9:18
illegal-array rune tests/printalphabet/printalphabet.go:16:7
`,
"-no-these-arrays rune tests/printalphabet/printalphabet.go ": `Parsing
OK
Cheating
illegal-import github.com/01-edu/z01 tests/printalphabet/printalphabet.go:4:2
illegal-call append tests/printalphabet/printalphabet.go:9:7
illegal-call fillArray tests/printalphabet/printalphabet.go:15:2
illegal-call fillArray tests/printalphabet/printalphabet.go:7:1
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:17:3
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:19:2
illegal-call main tests/printalphabet/printalphabet.go:13:1
illegal-array-type rune tests/printalphabet/printalphabet.go:14:8
`-allow-builtin tests/doopprog/main.go fmt.Println strconv.Atoi os.Args`: `Parsing:
Ok
Cheating:
Ok
`,
`-no-these-arrays "int" tests/printalphabet/printalphabet.go`: `Parsing
OK
Cheating
illegal-import github.com/01-edu/z01 tests/printalphabet/printalphabet.go:4:2
illegal-call append tests/printalphabet/printalphabet.go:9:7
illegal-call fillArray tests/printalphabet/printalphabet.go:15:2
illegal-call fillArray tests/printalphabet/printalphabet.go:7:1
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:17:3
illegal-access z01.PrintRune tests/printalphabet/printalphabet.go:19:2
illegal-call main tests/printalphabet/printalphabet.go:13:1
`-cast tests/doopprog/main.go fmt.Println strconv.Atoi os.Args len`: `Parsing:
Ok
Cheating:
Ok
`,
}
_, filename, _, _ := runtime.Caller(1)
fmt.Println("Filename:", filename)
Compare(t, argsAndSolution)
}
func Compare(t *testing.T, argsAndSol map[string]string) {
for args, sol := range argsAndSol {
out, err := z01.MainOut("../rc", strings.Split(args, " ")...)
if err.Error() != sol && out != sol {
fmt.Println("Error:", err)
fmt.Println("Out:", out)
if out != sol && err != nil && err.Error() != sol {
fmt.Println(args, "\nError:", err)
fmt.Println("Solution:", sol)
// fmt.Println("Out:", out)
t.Errorf("./rc %s prints %q\n instead of %q\n", args, out, sol)
}
}
}
func TestWrapping(t *testing.T) {
argsAndSolution := map[string]string{
"tests/testingWrapping.go ./util": `Parsing
OK
Cheating
illegal-call len tests/util/util.go:6:9
illegal-call util.LenWrapper tests/util/util.go:5:1
illegal-call Length tests/testingWrapping.go:7:1
`,
}
Compare(t, argsAndSolution)
}

Loading…
Cancel
Save