package main import ( "bytes" "os" "os/exec" "testing" "git.hrafn.xyz/aether/gosick/internal/homesick/version" ) func TestRunVersionCommand(t *testing.T) { stdout := &bytes.Buffer{} stderr := &bytes.Buffer{} exitCode := run([]string{"version"}, bytes.NewBuffer(nil), stdout, stderr) if exitCode != 0 { t.Fatalf("run(version) exit code = %d, want 0", exitCode) } if got := stdout.String(); got != version.String+"\n" { t.Fatalf("stdout = %q, want %q", got, version.String+"\n") } if got := stderr.String(); got != "" { t.Fatalf("stderr = %q, want empty", got) } } func TestMainVersionCommand(t *testing.T) { if os.Getenv("GO_WANT_HELPER_PROCESS") == "1" { os.Args = []string{"gosick", "version"} main() return } cmd := exec.Command(os.Args[0], "-test.run=TestMainVersionCommand") cmd.Env = append(os.Environ(), "GO_WANT_HELPER_PROCESS=1") stdout := &bytes.Buffer{} stderr := &bytes.Buffer{} cmd.Stdout = stdout cmd.Stderr = stderr if err := cmd.Run(); err != nil { t.Fatalf("helper process failed: %v, stderr: %s", err, stderr.String()) } if got := stdout.String(); got != version.String+"\n" { t.Fatalf("stdout = %q, want %q", got, version.String+"\n") } if got := stderr.String(); got != "" { t.Fatalf("stderr = %q, want empty", got) } }