diff options
Diffstat (limited to 'src/urubu/cmd/vartan/test.go')
-rw-r--r-- | src/urubu/cmd/vartan/test.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/urubu/cmd/vartan/test.go b/src/urubu/cmd/vartan/test.go new file mode 100644 index 0000000..eb24c0c --- /dev/null +++ b/src/urubu/cmd/vartan/test.go @@ -0,0 +1,50 @@ +package main + +import ( + "errors" + "fmt" + "os" + + "urubu/tester" +) + + + +func runTest(args []string) error { + gram, _, err := readGrammar(args[0]) + if err != nil { + return fmt.Errorf("Cannot read a grammar: %w", err) + } + + var cs []*tester.TestCaseWithMetadata + { + cs = tester.ListTestCases(args[1]) + errOccurred := false + for _, c := range cs { + if c.Error != nil { + fmt.Fprintf(os.Stderr, "Failed to read a test case or a directory: %v\n%v\n", c.FilePath, c.Error) + errOccurred = true + } + } + if errOccurred { + return errors.New("Cannot run test") + } + } + + t := &tester.Tester{ + Grammar: gram, + Cases: cs, + } + rs := t.Run() + testFailed := false + for _, r := range rs { + fmt.Fprintln(os.Stdout, r) + if r.Error != nil { + testFailed = true + } + } + if testFailed { + return errors.New("Test failed") + } + return nil +} |