@@ -17,6 +17,11 @@ type testType struct {
17
17
Tag string
18
18
}
19
19
20
+ type testTypeManyTags struct {
21
+ NameID string
22
+ Tags []string
23
+ }
24
+
20
25
type testDate struct {
21
26
Date * time.Time
22
27
}
@@ -78,6 +83,45 @@ func testGetCommands() *core.Commands {
78
83
return argsI , nil
79
84
},
80
85
},
86
+ & core.Command {
87
+ Namespace : "test" ,
88
+ Resource : "many-positional" ,
89
+ ArgSpecs : core.ArgSpecs {
90
+ {
91
+ Name : "name-id" ,
92
+ Positional : true ,
93
+ },
94
+ {
95
+ Name : "tag" ,
96
+ Positional : true ,
97
+ },
98
+ },
99
+ AllowAnonymousClient : true ,
100
+ ArgsType : reflect .TypeOf (testType {}),
101
+ Run : func (_ context.Context , argsI interface {}) (i interface {}, e error ) {
102
+ return argsI , nil
103
+ },
104
+ },
105
+ & core.Command {
106
+ Namespace : "test" ,
107
+ Resource : "many-multi-positional" ,
108
+ ArgSpecs : core.ArgSpecs {
109
+ {
110
+ Name : "name-id" ,
111
+ Positional : true ,
112
+ },
113
+ {
114
+ Name : "tags" ,
115
+ Positional : true ,
116
+ },
117
+ },
118
+ AcceptMultiplePositionalArgs : true ,
119
+ AllowAnonymousClient : true ,
120
+ ArgsType : reflect .TypeOf (testTypeManyTags {}),
121
+ Run : func (_ context.Context , argsI interface {}) (i interface {}, e error ) {
122
+ return argsI , nil
123
+ },
124
+ },
81
125
& core.Command {
82
126
Namespace : "test" ,
83
127
Resource : "raw-args" ,
@@ -196,42 +240,6 @@ func Test_PositionalArg(t *testing.T) {
196
240
}),
197
241
),
198
242
}))
199
-
200
- t .Run ("Invalid1" , core .Test (& core.TestConfig {
201
- Commands : testGetCommands (),
202
- Cmd : "scw test positional name-id=plop tag=world" ,
203
- Check : core .TestCheckCombine (
204
- core .TestCheckExitCode (1 ),
205
- core .TestCheckError (& core.CliError {
206
- Err : errors .New ("a positional argument is required for this command" ),
207
- Hint : "Try running: scw test positional plop tag=world" ,
208
- }),
209
- ),
210
- }))
211
-
212
- t .Run ("Invalid2" , core .Test (& core.TestConfig {
213
- Commands : testGetCommands (),
214
- Cmd : "scw test positional tag=world name-id=plop" ,
215
- Check : core .TestCheckCombine (
216
- core .TestCheckExitCode (1 ),
217
- core .TestCheckError (& core.CliError {
218
- Err : errors .New ("a positional argument is required for this command" ),
219
- Hint : "Try running: scw test positional plop tag=world" ,
220
- }),
221
- ),
222
- }))
223
-
224
- t .Run ("Invalid3" , core .Test (& core.TestConfig {
225
- Commands : testGetCommands (),
226
- Cmd : "scw test positional plop name-id=plop" ,
227
- Check : core .TestCheckCombine (
228
- core .TestCheckExitCode (1 ),
229
- core .TestCheckError (& core.CliError {
230
- Err : errors .New ("a positional argument is required for this command" ),
231
- Hint : "Try running: scw test positional plop" ,
232
- }),
233
- ),
234
- }))
235
243
})
236
244
237
245
t .Run ("simple" , core .Test (& core.TestConfig {
@@ -240,6 +248,24 @@ func Test_PositionalArg(t *testing.T) {
240
248
Check : core .TestCheckExitCode (0 ),
241
249
}))
242
250
251
+ t .Run ("simple2" , core .Test (& core.TestConfig {
252
+ Commands : testGetCommands (),
253
+ Cmd : "scw test positional name-id=plop tag=world" ,
254
+ Check : core .TestCheckExitCode (0 ),
255
+ }))
256
+
257
+ t .Run ("simple3" , core .Test (& core.TestConfig {
258
+ Commands : testGetCommands (),
259
+ Cmd : "scw test positional tag=world name-id=plop" ,
260
+ Check : core .TestCheckExitCode (0 ),
261
+ }))
262
+
263
+ t .Run ("simple4" , core .Test (& core.TestConfig {
264
+ Commands : testGetCommands (),
265
+ Cmd : "scw test positional plop name-id=plop" ,
266
+ Check : core .TestCheckExitCode (0 ),
267
+ }))
268
+
243
269
t .Run ("full command" , core .Test (& core.TestConfig {
244
270
Commands : testGetCommands (),
245
271
Cmd : "scw test positional plop tag=world" ,
@@ -272,6 +298,41 @@ func Test_PositionalArg(t *testing.T) {
272
298
core .TestCheckGolden (),
273
299
),
274
300
}))
301
+
302
+ t .Run ("many positional" , core .Test (& core.TestConfig {
303
+ Commands : testGetCommands (),
304
+ Cmd : "scw test many-positional tag1 name-id=plop" ,
305
+ Check : core .TestCheckExitCode (0 ),
306
+ }))
307
+
308
+ t .Run ("many positional" , core .Test (& core.TestConfig {
309
+ Commands : testGetCommands (),
310
+ Cmd : "scw test many-positional tag1 name-id=plop" ,
311
+ Check : core .TestCheckCombine (
312
+ core .TestCheckExitCode (0 ),
313
+ func (t * testing.T , ctx * core.CheckFuncCtx ) {
314
+ t .Helper ()
315
+ res := ctx .Result .(* testType )
316
+ assert .Equal (t , "plop" , res .NameID )
317
+ assert .Equal (t , "tag1" , res .Tag )
318
+ },
319
+ ),
320
+ }))
321
+
322
+ t .Run ("many multi-positional" , core .Test (& core.TestConfig {
323
+ Commands : testGetCommands (),
324
+ Cmd : "scw test many-multi-positional pos1 pos2 name-id=plop" ,
325
+ Check : core .TestCheckCombine (
326
+ core .TestCheckExitCode (0 ),
327
+ func (t * testing.T , ctx * core.CheckFuncCtx ) {
328
+ t .Helper ()
329
+ res := ctx .Result .(* testTypeManyTags )
330
+ assert .Equal (t , "plop" , res .NameID )
331
+ assert .Equal (t , "pos1" , res .Tags [0 ])
332
+ assert .Equal (t , "pos2" , res .Tags [1 ])
333
+ },
334
+ ),
335
+ }))
275
336
}
276
337
277
338
func Test_MultiPositionalArg (t * testing.T ) {
0 commit comments