+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)
+}