mirror of
https://github.com/hanzoai/expr.git
synced 2026-09-24 16:58:58 +00:00
Add -update flag to gen tests
This commit is contained in:
+43
-4
@@ -1,27 +1,66 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"flag"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/expr-lang/expr/internal/testify/require"
|
||||
|
||||
"github.com/expr-lang/expr"
|
||||
"github.com/expr-lang/expr/internal/testify/require"
|
||||
)
|
||||
|
||||
var updateFlag = flag.Bool("update", false, "Drop failing lines from examples.txt")
|
||||
|
||||
func TestGenerated(t *testing.T) {
|
||||
flag.Parse()
|
||||
|
||||
b, err := os.ReadFile("../../testdata/examples.txt")
|
||||
require.NoError(t, err)
|
||||
|
||||
examples := strings.TrimSpace(string(b))
|
||||
var validLines []string
|
||||
|
||||
for _, line := range strings.Split(examples, "\n") {
|
||||
line := line
|
||||
t.Run(line, func(t *testing.T) {
|
||||
program, err := expr.Compile(line, expr.Env(env))
|
||||
require.NoError(t, err)
|
||||
if err != nil {
|
||||
if !*updateFlag {
|
||||
t.Errorf("Compilation failed: %v", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
_, err = expr.Run(program, env)
|
||||
require.NoError(t, err)
|
||||
if err != nil {
|
||||
if !*updateFlag {
|
||||
t.Errorf("Execution failed: %v", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
validLines = append(validLines, line)
|
||||
})
|
||||
}
|
||||
|
||||
if *updateFlag {
|
||||
file, err := os.Create("../../testdata/examples.txt")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to update examples.txt: %v", err)
|
||||
}
|
||||
defer func(file *os.File) {
|
||||
_ = file.Close()
|
||||
}(file)
|
||||
|
||||
writer := bufio.NewWriter(file)
|
||||
for _, line := range validLines {
|
||||
_, err := writer.WriteString(line + "\n")
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to write to examples.txt: %v", err)
|
||||
}
|
||||
}
|
||||
_ = writer.Flush()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user