github.com/wunderio/silta-cli@v0.0.0-20240508100559-3017e4ab3a20/tests/cmd_test.go (about) 1 package cmd_test 2 3 import ( 4 "bytes" 5 "os" 6 "os/exec" 7 "strings" 8 "testing" 9 ) 10 11 var cliBinaryName = "./silta" 12 13 func CliExecTest(t *testing.T, command string, environment []string, testString string, equals bool) { 14 15 // TMP: Do not build 16 // cliBinaryName = "go run main.go" 17 // environment = os.Environ() 18 19 // fmt.Printf("%s", command) 20 21 cmd := exec.Command("bash", "-c", cliBinaryName+" "+command) 22 23 // PATH is missing from exec env, we'll merge in existing os.Environ() as a base 24 mergedEnv := os.Environ() 25 for index, _ := range environment { 26 mergedEnv = append(mergedEnv, environment[index]) 27 } 28 29 cmd.Env = mergedEnv 30 31 var out, err bytes.Buffer 32 cmd.Stderr = &err 33 cmd.Stdout = &out 34 cmd.Run() 35 36 if equals == true { 37 if out.String() == testString || err.String() == testString { 38 } else { 39 t.Logf("Error: %s", err.String()) 40 t.Errorf("Expected :\n '%s' \n Received: \n '%s'\n'%s'", testString, out.String(), err.String()) 41 } 42 43 } else { 44 if strings.Contains(out.String(), testString) || strings.Contains(err.String(), testString) { 45 } else { 46 t.Logf("Error: %s", err.String()) 47 t.Errorf("Expected :\n '%s' \n Received: \n '%s'\n'%s'", testString, out.String(), err.String()) 48 } 49 } 50 }