1
1
package cli_test
2
2
3
3
import (
4
+ "bytes"
4
5
"testing"
5
6
7
+ "github.com/coder/coder/buildinfo"
8
+
6
9
"github.com/stretchr/testify/require"
7
10
8
11
"github.com/coder/coder/cli"
@@ -15,8 +18,43 @@ func TestRoot(t *testing.T) {
15
18
16
19
cmd , _ := clitest .New (t , "delete" )
17
20
18
- cmd , err := cmd .ExecuteC ()
21
+ err := cmd .Execute ()
19
22
errStr := cli .FormatCobraError (err , cmd )
20
23
require .Contains (t , errStr , "Run 'coder delete --help' for usage." )
21
24
})
25
+
26
+ // The "-v" short flag should return the usage output, not a version output
27
+ t .Run ("TestVShortFlag" , func (t * testing.T ) {
28
+ t .Parallel ()
29
+
30
+ buf := new (bytes.Buffer )
31
+ cmd , _ := clitest .New (t , "-v" )
32
+ cmd .SetOut (buf )
33
+
34
+ err := cmd .Execute ()
35
+ require .NoError (t , err )
36
+ // Check the usage string is the output when using "-v"
37
+ require .Contains (t , buf .String (), cmd .UsageString ())
38
+ require .Contains (t , buf .String (), cmd .Root ().Long )
39
+ })
40
+
41
+ t .Run ("TestVersion" , func (t * testing.T ) {
42
+ t .Parallel ()
43
+
44
+ bufFlag := new (bytes.Buffer )
45
+ cmd , _ := clitest .New (t , "--version" )
46
+ cmd .SetOut (bufFlag )
47
+ err := cmd .Execute ()
48
+ require .NoError (t , err )
49
+
50
+ bufCmd := new (bytes.Buffer )
51
+ cmd , _ = clitest .New (t , "version" )
52
+ cmd .SetOut (bufCmd )
53
+ err = cmd .Execute ()
54
+ require .NoError (t , err )
55
+
56
+ require .Equal (t , bufFlag .String (), bufCmd .String (), "cmd and flag identical output" )
57
+ require .Contains (t , bufFlag .String (), buildinfo .Version (), "has version" )
58
+ require .Contains (t , bufFlag .String (), buildinfo .ExternalURL (), "has url" )
59
+ })
22
60
}
0 commit comments