package app import ( "bytes" "io" "strings" "testing" "gitea.maximumdirect.net/eric/narratio/internal/buildinfo" ) func TestExecuteVersionReportsEmbeddedBuildVersion(t *testing.T) { original := buildinfo.Version buildinfo.Version = "v1.5.0-test" t.Cleanup(func() { buildinfo.Version = original }) var stdout bytes.Buffer var stderr bytes.Buffer if code := Execute([]string{"version"}, &stdout, &stderr); code != 0 { t.Fatalf("Execute() code = %d, stderr = %q", code, stderr.String()) } if got, want := stdout.String(), "narratio v1.5.0-test\n"; got != want { t.Fatalf("stdout = %q, want %q", got, want) } if stderr.Len() != 0 { t.Fatalf("stderr = %q, want empty", stderr.String()) } } func TestExecuteVersionRejectsArguments(t *testing.T) { var stderr bytes.Buffer if code := Execute([]string{"version", "extra"}, io.Discard, &stderr); code == 0 { t.Fatal("Execute() code = 0, want failure") } if !strings.Contains(stderr.String(), "version: unexpected arguments") { t.Fatalf("stderr = %q, want argument error", stderr.String()) } }