@@ -10,95 +10,121 @@ import (
10
10
)
11
11
12
12
//nolint:forbidigo
13
- func Test_New (t * testing.T ) {
13
+ func Test_Root (t * testing.T ) {
14
14
t .Parallel ()
15
15
16
- root := cmd . New ()
17
- require . Equal ( t , "k6deps [flags] [script-file]" , root . Use )
16
+ t . Run ( " New" , func ( t * testing. T ) {
17
+ t . Parallel ( )
18
18
19
- dir := t .TempDir ()
19
+ root := cmd .New ()
20
+ require .Equal (t , "k6deps [flags] [script-file]" , root .Use )
21
+ })
20
22
21
23
scriptfile := filepath .Join ("testdata" , "script.js" )
22
24
archive := filepath .Join ("testdata" , "archive.tar" )
23
25
24
- out := filepath .Clean (filepath .Join (dir , "output" ))
25
-
26
- root = cmd .New ()
27
- root .SetArgs ([]string {"--ingnore-env" , "--ignore-manifest" , "-o" , out , scriptfile })
28
- err := root .Execute ()
29
- require .NoError (t , err )
30
-
31
- contents , err := os .ReadFile (out )
32
- require .NoError (t , err )
33
- require .Equal (t , `{"k6/x/faker":">v0.3.0","xk6-top":"*"}` + "\n " , string (contents ))
34
-
35
- root = cmd .New ()
36
- root .SetArgs ([]string {"--ingnore-env" , "--ignore-manifest" , "-o" , out , archive })
37
- err = root .Execute ()
38
- require .NoError (t , err )
39
-
40
- contents , err = os .ReadFile (out )
41
- require .NoError (t , err )
42
- require .Equal (t , `{"k6":">0.54","k6/x/faker":">0.4.0","k6/x/sql":">=1.0.1","k6/x/sql/driver/ramsql":"*"}` + "\n " , string (contents ))
43
-
44
- root = cmd .New ()
45
- root .SetArgs ([]string {"--ingnore-env" , "--ignore-manifest" , "--format" , "json" , "-o" , out , scriptfile })
46
- err = root .Execute ()
47
- require .NoError (t , err )
48
-
49
- contents , err = os .ReadFile (out )
50
- require .NoError (t , err )
51
- require .Equal (t , `{"k6/x/faker":">v0.3.0","xk6-top":"*"}` + "\n " , string (contents ))
52
-
53
- root = cmd .New ()
54
- root .SetArgs ([]string {"--ingnore-env" , "--ignore-manifest" , "--format" , "text" , "-o" , out , scriptfile })
55
- err = root .Execute ()
56
- require .NoError (t , err )
57
-
58
- contents , err = os .ReadFile (out )
59
- require .NoError (t , err )
60
- require .Equal (t , `k6/x/faker>v0.3.0;xk6-top*` + "\n " , string (contents ))
61
-
62
- root = cmd .New ()
63
- root .SetArgs ([]string {"--ingnore-env" , "--ignore-manifest" , "--format" , "js" , "-o" , out , scriptfile })
64
- err = root .Execute ()
65
- require .NoError (t , err )
66
-
67
- contents , err = os .ReadFile (out )
68
- require .NoError (t , err )
69
- require .Equal (t , `"use k6 with k6/x/faker>v0.3.0";
70
- "use k6 with xk6-top*";
71
- ` , string (contents ))
72
-
73
- root = cmd .New ()
74
- stdin := os .Stdin
75
- os .Stdin , err = os .Open (scriptfile ) //nolint:gosec
76
- if err != nil {
77
- t .Fatal (err )
26
+ testCases := []struct {
27
+ name string
28
+ args []string
29
+ source string
30
+ expected string
31
+ }{
32
+ {
33
+ name : "script default format" ,
34
+ args : []string {"--ingnore-env" , "--ignore-manifest" },
35
+ source : scriptfile ,
36
+ expected : `{"k6/x/faker":">v0.3.0","xk6-top":"*"}` + "\n " ,
37
+ },
38
+ {
39
+ name : "script json format" ,
40
+ args : []string {"--ingnore-env" , "--ignore-manifest" , "--format" , "json" },
41
+ source : scriptfile ,
42
+ expected : `{"k6/x/faker":">v0.3.0","xk6-top":"*"}` + "\n " ,
43
+ },
44
+ {
45
+ name : "script text format" ,
46
+ args : []string {"--ingnore-env" , "--ignore-manifest" , "--format" , "text" },
47
+ source : scriptfile ,
48
+ expected : `k6/x/faker>v0.3.0;xk6-top*` + "\n " ,
49
+ },
50
+ {
51
+ name : "script js format" ,
52
+ args : []string {"--ingnore-env" , "--ignore-manifest" , "--format" , "js" },
53
+ source : scriptfile ,
54
+ expected : `"use k6 with k6/x/faker>v0.3.0";` + "\n " + `"use k6 with xk6-top*";` + "\n " ,
55
+ },
56
+ {
57
+ name : "archive" ,
58
+ args : []string {"--ingnore-env" , "--ignore-manifest" },
59
+ source : archive ,
60
+ expected : `{"k6":">0.54","k6/x/faker":">0.4.0","k6/x/sql":">=1.0.1","k6/x/sql/driver/ramsql":"*"}` + "\n " ,
61
+ },
78
62
}
79
- root .SetArgs ([]string {"--ingnore-env" , "--ignore-manifest" , "--input" , "js" , "--format" , "text" , "-o" , out })
80
- err = root .Execute ()
81
- os .Stdin = stdin
82
63
83
- require .NoError (t , err )
84
-
85
- contents , err = os .ReadFile (out )
86
- require .NoError (t , err )
87
- require .Equal (t , `k6/x/faker>v0.3.0;xk6-top*` + "\n " , string (contents ))
88
-
89
- root = cmd .New ()
90
- stdin = os .Stdin
91
- os .Stdin , err = os .Open (archive ) //nolint:gosec
92
- if err != nil {
93
- t .Fatal (err )
64
+ for _ , tc := range testCases {
65
+ t .Run (tc .name , func (t * testing.T ) {
66
+ t .Parallel ()
67
+ out := filepath .Clean (filepath .Join (t .TempDir (), "output" ))
68
+
69
+ root := cmd .New ()
70
+ args := tc .args
71
+ args = append (args , "-o" , out , tc .source )
72
+ root .SetArgs (args )
73
+ err := root .Execute ()
74
+ require .NoError (t , err )
75
+
76
+ contents , err := os .ReadFile (out )
77
+ require .NoError (t , err )
78
+ require .Equal (t , tc .expected , string (contents ))
79
+ })
94
80
}
95
- root .SetArgs ([]string {"--ingnore-env" , "--ignore-manifest" , "--input" , "tar" , "--format" , "json" , "-o" , out })
96
- err = root .Execute ()
97
- os .Stdin = stdin
98
-
99
- require .NoError (t , err )
100
81
101
- contents , err = os .ReadFile (out )
102
- require .NoError (t , err )
103
- require .Equal (t , `{"k6":">0.54","k6/x/faker":">0.4.0","k6/x/sql":">=1.0.1","k6/x/sql/driver/ramsql":"*"}` + "\n " , string (contents ))
82
+ t .Run ("using input" , func (t * testing.T ) {
83
+ t .Parallel ()
84
+
85
+ testCases := []struct {
86
+ name string
87
+ source string
88
+ input string
89
+ expected string
90
+ }{
91
+ {
92
+ name : "script" ,
93
+ input : "js" ,
94
+ source : scriptfile ,
95
+ expected : `{"k6/x/faker":">v0.3.0","xk6-top":"*"}` + "\n " ,
96
+ },
97
+ {
98
+ name : "archive" ,
99
+ input : "tar" ,
100
+ source : archive ,
101
+ expected : `{"k6":">0.54","k6/x/faker":">0.4.0","k6/x/sql":">=1.0.1","k6/x/sql/driver/ramsql":"*"}` + "\n " ,
102
+ },
103
+ }
104
+
105
+ // the following tests cannot be executed in parallel because they modify the stdin
106
+ for _ , tc := range testCases {
107
+ t .Run (tc .name , func (t * testing.T ) {
108
+ var err error
109
+ stdin := os .Stdin
110
+ t .Cleanup (func () { os .Stdin = stdin })
111
+
112
+ out := filepath .Clean (filepath .Join (t .TempDir (), "output" ))
113
+
114
+ root := cmd .New ()
115
+ os .Stdin , err = os .Open (tc .source )
116
+ if err != nil {
117
+ t .Fatal (err )
118
+ }
119
+ root .SetArgs ([]string {"--ingnore-env" , "--ignore-manifest" , "--input" , tc .input , "--format" , "json" , "-o" , out })
120
+ err = root .Execute ()
121
+
122
+ require .NoError (t , err )
123
+
124
+ contents , err := os .ReadFile (out )
125
+ require .NoError (t , err )
126
+ require .Equal (t , tc .expected , string (contents ))
127
+ })
128
+ }
129
+ })
104
130
}
0 commit comments