Этот код выполняет команды для двоичного кода и возврата std.out
и std.error
func exe(bin string, args string, path string) (string, error string) {
cmd := exec.Command(bin, strings.Split(args, " ")...)
cmd.Dir = path
stdoutBuf := &bytes.Buffer{}
cmd.Stdout = stdoutBuf
stdErrBuf := &bytes.Buffer{}
cmd.Stderr = stdErrBuf
cmd.Run()
return stdoutBuf.String(), stdErrBuf.String()
}
Проблема в том, что я не знаю, как выполнить хороший тест для него, который будет поддерживаться в каждомсистема, например, если я пытаюсь запустить команду "echo", тестовый запуск выполняется в Darwin и Linux, но не в Windows.как я должен это сделать?
func Test_execute(t *testing.T) {
type args struct {
bin string
args string
path string
}
tests := []struct {
name string
args args
wantString string
wantError string
}{
// TODO: Add test cases.
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
gotString, gotError := exe(tt.args.bin, tt.args.args, tt.args.path)
if gotString != tt.wantString {
t.Errorf("exe() gotString = %v, want %v", gotString, tt.wantString)
}
if gotError != tt.wantError {
t.Errorf("exe() gotError = %v, want %v", gotError, tt.wantError)
}
})
}
}
Я искал это и нашел это, https://www.joeshaw.org/testing-with-os-exec-and-testmain/ Но теперь уверен, как объединить env с моим тестом ...