package main import ( "errors" "fmt" "os" "tester" ) /* func init() { cmd := &cobra.Command{ Use: "test |", Short: "Test a grammar", Example: ` vartan test grammar.vartan test`, Args: cobra.ExactArgs(2), RunE: runTest, } rootCmd.AddCommand(cmd) } */ 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 }