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  }