Skip to content

Commit 4a3a8b6

Browse files
committed
Add -update flag to gen tests
1 parent 6fa83ad commit 4a3a8b6

File tree

2 files changed

+43
-342
lines changed

2 files changed

+43
-342
lines changed

test/gen/gen_test.go

+43-4
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,66 @@
11
package main
22

33
import (
4+
"bufio"
5+
"flag"
46
"os"
57
"strings"
68
"testing"
79

8-
"github.com/expr-lang/expr/internal/testify/require"
9-
1010
"github.com/expr-lang/expr"
11+
"github.com/expr-lang/expr/internal/testify/require"
1112
)
1213

14+
var updateFlag = flag.Bool("update", false, "Drop failing lines from examples.txt")
15+
1316
func TestGenerated(t *testing.T) {
17+
flag.Parse()
18+
1419
b, err := os.ReadFile("../../testdata/examples.txt")
1520
require.NoError(t, err)
1621

1722
examples := strings.TrimSpace(string(b))
23+
var validLines []string
24+
1825
for _, line := range strings.Split(examples, "\n") {
26+
line := line
1927
t.Run(line, func(t *testing.T) {
2028
program, err := expr.Compile(line, expr.Env(env))
21-
require.NoError(t, err)
29+
if err != nil {
30+
if !*updateFlag {
31+
t.Errorf("Compilation failed: %v", err)
32+
}
33+
return
34+
}
2235

2336
_, err = expr.Run(program, env)
24-
require.NoError(t, err)
37+
if err != nil {
38+
if !*updateFlag {
39+
t.Errorf("Execution failed: %v", err)
40+
}
41+
return
42+
}
43+
44+
validLines = append(validLines, line)
2545
})
2646
}
47+
48+
if *updateFlag {
49+
file, err := os.Create("../../testdata/examples.txt")
50+
if err != nil {
51+
t.Fatalf("Failed to update examples.txt: %v", err)
52+
}
53+
defer func(file *os.File) {
54+
_ = file.Close()
55+
}(file)
56+
57+
writer := bufio.NewWriter(file)
58+
for _, line := range validLines {
59+
_, err := writer.WriteString(line + "\n")
60+
if err != nil {
61+
t.Fatalf("Failed to write to examples.txt: %v", err)
62+
}
63+
}
64+
_ = writer.Flush()
65+
}
2766
}

0 commit comments

Comments
 (0)