package cli_test import ( "bytes" "runtime" "strings" "testing" "sneak.berlin/go/simplexcalc/internal/cli" ) func TestVersionPrintsVersion(t *testing.T) { t.Parallel() var stdout, stderr bytes.Buffer root := cli.RootCmd("1.2.3") root.SetArgs([]string{"version"}) root.SetOut(&stdout) root.SetErr(&stderr) status := cli.Execute(root) if status != 0 { t.Fatalf("status = %d, want 0; stderr: %q", status, stderr.String()) } want := "simplexcalc 1.2.3 " + runtime.GOOS + "/" + runtime.GOARCH + "\n" if stdout.String() != want { t.Errorf("stdout = %q, want %q", stdout.String(), want) } } func TestUnknownCommandFails(t *testing.T) { t.Parallel() var stdout, stderr bytes.Buffer root := cli.RootCmd("1.2.3") root.SetArgs([]string{"frobnicate"}) root.SetOut(&stdout) root.SetErr(&stderr) status := cli.Execute(root) if status == 0 { t.Fatal("status = 0, want non-zero") } if !strings.HasPrefix(stderr.String(), "exiting: ") { t.Errorf("stderr = %q, want the error after \"exiting: \"", stderr.String()) } }