]> git.giacomolli.uk - onechat/blob - command_test.go
Accept owner photos and image files in Telegram
[onechat] / command_test.go
1 package main
2
3 import (
4         "io"
5         "os"
6         "testing"
7
8         "github.com/stretchr/testify/require"
9 )
10
11 func TestVersionCommandPrintsBuildVersion(t *testing.T) {
12         original := version
13         version = "test-version"
14         t.Cleanup(func() {
15                 version = original
16         })
17
18         require.Equal(t, "test-version\n", commandOutput(t, "version"))
19 }
20
21 func TestHelpListsVersionCommand(t *testing.T) {
22         require.Contains(t, commandOutput(t, "help"), "  version                  show the build version\n")
23 }
24
25 func TestHelpListsTheImportTargetFlag(t *testing.T) {
26         help := commandOutput(t, "help")
27         require.Contains(t, help, "import [-n] [--agent NAME] ZIP...")
28         require.Contains(t, help, "--agent NAME           import into an existing direct child (default: root)")
29 }
30
31 func commandOutput(t *testing.T, args ...string) string {
32         t.Helper()
33
34         reader, writer, err := os.Pipe()
35         require.NoError(t, err)
36
37         originalArgs, originalStdout := os.Args, os.Stdout
38         os.Args = append([]string{"onechat"}, args...)
39         os.Stdout = writer
40         t.Cleanup(func() {
41                 os.Args, os.Stdout = originalArgs, originalStdout
42
43                 require.NoError(t, reader.Close())
44         })
45
46         err = run()
47         require.NoError(t, err)
48
49         require.NoError(t, writer.Close())
50
51         output, err := io.ReadAll(reader)
52         require.NoError(t, err)
53
54         return string(output)
55 }