github.com/mulmuri/grassflow@v0.0.0-20231104195507-6847badb0f07/cmd/run_test.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "os" 6 "os/exec" 7 "strings" 8 "testing" 9 ) 10 11 func TestMain(m *testing.M) { 12 13 if err := os.Chdir("../"); err != nil { 14 panic(err) 15 } 16 17 cmd := exec.Command("go", "build", "-o", "grassflow", "cmd/run.go") 18 if err := cmd.Run(); err != nil { 19 panic(err) 20 } 21 22 code := m.Run() 23 24 cmd = exec.Command("rm", "grassflow") 25 if err := cmd.Run(); err != nil { 26 panic(err) 27 } 28 29 os.Exit(code) 30 } 31 32 33 func Test_main(t *testing.T) { 34 35 tests := []struct { 36 name string 37 args[]string 38 wantErr bool 39 }{ 40 { 41 name: "grassflow execute", 42 args: []string{"./grassflow", "execute", "-f" ,"test/config.yml"}, 43 wantErr: false, 44 }, 45 { 46 name: "grassflow execute", 47 args: []string{"./grassflow", "execute", "-f" ,"."}, 48 wantErr: true, 49 }, 50 { 51 name: "grassflow rollback", 52 args: []string{"./grassflow", "rollback"}, 53 wantErr: false, 54 }, 55 { 56 name: "grassflow statistic", 57 args: []string{"./grassflow", "statistic"}, 58 wantErr: false, 59 }, 60 { 61 name: "grassflow help", 62 args: []string{"./grassflow", "help"}, 63 wantErr: false, 64 }, 65 { 66 name: "grassflow --version", 67 args: []string{"./grassflow", "version"}, 68 wantErr: false, 69 }, 70 { 71 name: "grassflow -v", 72 args: []string{"./grassflow", "version"}, 73 wantErr: false, 74 }, 75 } 76 77 for _, tt := range tests { 78 t.Run(tt.name, func(t *testing.T) { 79 cmd := exec.Command(tt.args[0], tt.args[1:]...) 80 81 var stderr bytes.Buffer 82 cmd.Stderr = &stderr 83 84 if err := cmd.Run(); (err != nil) != tt.wantErr { 85 t.Errorf("failed to run %s : %v", strings.Join(tt.args, " "), stderr.String()) 86 } 87 }) 88 } 89 }