package main import ( "io" "os" "testing" "github.com/stretchr/testify/require" ) func TestVersionCommandPrintsBuildVersion(t *testing.T) { original := version version = "test-version" t.Cleanup(func() { version = original }) require.Equal(t, "test-version\n", commandOutput(t, "version")) } func TestHelpListsVersionCommand(t *testing.T) { require.Contains(t, commandOutput(t, "help"), " version show the build version\n") } func commandOutput(t *testing.T, args ...string) string { t.Helper() reader, writer, err := os.Pipe() require.NoError(t, err) originalArgs, originalStdout := os.Args, os.Stdout os.Args = append([]string{"onechat"}, args...) os.Stdout = writer t.Cleanup(func() { os.Args, os.Stdout = originalArgs, originalStdout require.NoError(t, reader.Close()) }) err = run() require.NoError(t, err) require.NoError(t, writer.Close()) output, err := io.ReadAll(reader) require.NoError(t, err) return string(output) }