1
1
package main
2
2
3
3
import (
4
+ "fmt"
4
5
"runtime"
5
6
"testing"
6
7
@@ -12,109 +13,85 @@ import (
12
13
func TestKnownCmd (t * testing.T ) {
13
14
t .Parallel ()
14
15
const tmux = "testdata/bin/tmux"
15
- {
16
- ctx := types.Context {Debug : true }
17
- cmd := KnownCmd {}
18
- cmd .OS .Attr = attr .Name
19
- err := cmd .Run (& ctx )
20
- assert .NoError (t , err )
21
- assert .True (t , ctx .Success )
22
- }
23
- if runtime .GOOS == "darwin" {
24
- ctx := types.Context {Debug : true }
25
- cmd := KnownCmd {}
26
- cmd .OS .Attr = attr .Version
27
- err := cmd .Run (& ctx )
28
- assert .NoError (t , err )
29
- assert .True (t , ctx .Success )
30
- }
31
- {
32
- ctx := types.Context {Debug : true }
33
- cmd := KnownCmd {}
34
- cmd .OS .Attr = attr .Version
35
- err := cmd .Run (& ctx )
36
- assert .NoError (t , err )
37
- assert .True (t , ctx .Success )
16
+ type testableOS struct {
17
+ Attr string
18
+ Error bool
19
+ Success bool
38
20
}
39
21
40
- {
41
- ctx := types.Context {Debug : true }
42
- cmd := KnownCmd {}
43
- cmd .OS .Attr = "tmuxxx"
44
- err := cmd .Run (& ctx )
45
- assert .NoError (t , err )
46
- assert .False (t , ctx .Success , "No success" )
22
+ osTests := []testableOS {
23
+ {attr .Name , false , true },
24
+ {attr .Version , false , true },
25
+ {"tmuxxx" , false , false },
26
+ {"tmuxxx" , false , false },
47
27
}
48
28
49
- {
50
- ctx := types.Context {Debug : true }
51
- cmd := KnownCmd {}
52
- cmd .CLI .Attr = attr .Version
53
- cmd .CLI .Name = "gitzzz"
54
- err := cmd .Run (& ctx )
55
- assert .NoError (t , err )
56
- assert .False (t , ctx .Success , "No success" )
29
+ if runtime .GOOS == "darwin" {
30
+ osTests = append (osTests , testableOS {attr .Version , false , true })
57
31
}
58
32
59
- {
33
+ for _ , test := range osTests {
60
34
ctx := types.Context {Debug : true }
61
35
cmd := KnownCmd {}
62
- cmd .Arch .Attr = "arch"
36
+ cmd .OS .Attr = test . Attr
63
37
err := cmd .Run (& ctx )
64
- assert .NoError (t , err )
65
- assert .True (t , ctx .Success , "success" )
38
+ name := fmt .Sprintf ("%s err: %t success: %t" , test .Attr , test .Error , test .Success )
39
+ if test .Error {
40
+ assert .Error (t , err , name )
41
+ } else {
42
+ assert .NoError (t , err , name )
43
+ }
44
+ if test .Success {
45
+ assert .True (t , ctx .Success , name )
46
+ } else {
47
+ assert .False (t , ctx .Success , name )
48
+ }
66
49
}
67
50
68
- {
69
- ctx := types.Context {Debug : true }
70
- cmd := KnownCmd {}
71
- cmd .CLI .Attr = attr .Version
72
- cmd .CLI .Name = tmux
73
- cmd .Major = true
74
- err := cmd .Run (& ctx )
75
- assert .NoError (t , err )
76
- assert .True (t , ctx .Success , "success" )
51
+ type testableCLI struct {
52
+ Cmd KnownCmd
53
+ Error bool
54
+ Success bool
77
55
}
78
-
79
- {
80
- ctx := types.Context {Debug : true }
81
- cmd := KnownCmd {}
82
- cmd .CLI .Attr = attr .Version
83
- cmd .CLI .Name = tmux
84
- cmd .Minor = true
85
- err := cmd .Run (& ctx )
86
- assert .NoError (t , err )
87
- assert .True (t , ctx .Success , "success" )
56
+ cliTests := []testableCLI {
57
+ {KnownCmd {CLI : KnownCLI {attr .Version , "gitzzz" }}, false , false },
58
+ {KnownCmd {CLI : KnownCLI {attr .Version , tmux }}, false , true },
59
+ {KnownCmd {CLI : KnownCLI {attr .Version , tmux }, Major : true }, false , true },
60
+ {KnownCmd {CLI : KnownCLI {attr .Version , tmux }, Minor : true }, false , true },
61
+ {KnownCmd {CLI : KnownCLI {attr .Version , tmux }, Patch : true }, false , true },
88
62
}
89
63
90
- {
64
+ for _ , test := range cliTests {
91
65
ctx := types.Context {Debug : true }
92
- cmd := KnownCmd {}
93
- cmd .CLI .Attr = attr .Version
94
- cmd .CLI .Name = tmux
95
- cmd .Patch = true
96
- err := cmd .Run (& ctx )
97
- assert .NoError (t , err )
98
- assert .True (t , ctx .Success , "success" )
66
+ err := test .Cmd .Run (& ctx )
67
+
68
+ switch test .Error {
69
+ case true :
70
+ assert .Error (t , err )
71
+ default :
72
+ assert .NoError (t , err )
73
+ }
74
+
75
+ switch test .Success {
76
+ case true :
77
+ assert .True (t , ctx .Success )
78
+ default :
79
+ assert .False (t , ctx .Success )
80
+ }
99
81
}
100
82
101
83
{
102
84
ctx := types.Context {Debug : true }
103
85
cmd := KnownCmd {}
104
- cmd .CLI .Attr = attr .Version
105
- cmd .CLI .Name = tmux
106
- cmd .Major = true
86
+ cmd .Arch .Attr = "arch"
107
87
err := cmd .Run (& ctx )
108
88
assert .NoError (t , err )
109
89
assert .True (t , ctx .Success , "success" )
110
90
}
111
-
112
91
{
113
92
ctx := types.Context {Debug : true }
114
- cmd := KnownCmd {}
115
- cmd .CLI .Attr = attr .Name
116
- cmd .CLI .Name = tmux
117
- cmd .Major = true
93
+ cmd := KnownCmd {Major : true }
94
+ cmd .OS .Attr = "name"
118
95
err := cmd .Run (& ctx )
119
96
assert .Error (t , err )
120
97
assert .False (t , ctx .Success , "success" )
0 commit comments