@@ -82,6 +82,9 @@ class ArgumentParserTests: XCTestCase {
82
82
XCTAssertEqual ( args. get ( inputFiles) ?? [ ] , [ " input1 " , " input2 " ] )
83
83
XCTAssertEqual ( args. get ( outputFiles) ?? [ ] , [ " output1 " , " output2 " ] )
84
84
XCTAssertEqual ( args. get ( remaining) ?? [ ] , [ " --foo " , " -Xld " , " bar " ] )
85
+ XCTAssertEqual ( try args. get ( " --verbose " ) as Int ? , 2 )
86
+ XCTAssertEqual ( try args. get ( " input files " ) as [ String ] ? ?? [ ] , [ " input1 " , " input2 " ] )
87
+ XCTAssertEqual ( try args. get ( " invalid " ) as Int ? , nil )
85
88
86
89
let stream = BufferedOutputByteStream ( )
87
90
parser. printUsage ( on: stream)
@@ -136,6 +139,15 @@ class ArgumentParserTests: XCTestCase {
136
139
XCTAssertEqual ( error, ArgumentConversionError . typeMismatch ( value: " yes " , expectedType: Int . self) )
137
140
}
138
141
142
+ do {
143
+ let results = try parser. parse ( [ " foo " , " --verbosity " , " 2 " ] )
144
+ _ = try results. get ( " --verbosity " ) as String ?
145
+ XCTFail ( " unexpected success " )
146
+ } catch ArgumentParserError . invalidValue( let value, let error) {
147
+ XCTAssertEqual ( value, " --verbosity " )
148
+ XCTAssertEqual ( error, ArgumentConversionError . typeMismatch ( value: " 2 " , expectedType: String . self) )
149
+ }
150
+
139
151
do {
140
152
_ = try parser. parse ( [ " foo " , " --foo=hello " ] )
141
153
XCTFail ( " unexpected success " )
@@ -198,6 +210,8 @@ class ArgumentParserTests: XCTestCase {
198
210
let foo = parser. add ( option: " --foo " , kind: String . self, usage: " The foo option " )
199
211
let bar = parser. add ( option: " --bar " , shortName: " -b " , kind: String . self, usage: " The bar option " )
200
212
213
+ let parentArg = parser. add ( option: " --parent " , kind: String . self, usage: " The parent option " )
214
+
201
215
let parserA = parser. add ( subparser: " a " , overview: " A! " )
202
216
let branchOption = parserA. add ( option: " --branch " , kind: String . self, usage: " The branch to use " )
203
217
@@ -211,13 +225,15 @@ class ArgumentParserTests: XCTestCase {
211
225
XCTAssertEqual ( args. get ( noFlyOption) , nil )
212
226
XCTAssertEqual ( args. subparser ( parser) , " a " )
213
227
214
- args = try parser. parse ( [ " --bar " , " bar " , " --foo " , " foo " , " b " , " --no-fly " ] )
228
+ args = try parser. parse ( [ " --parent " , " p " , " -- bar" , " bar " , " --foo " , " foo " , " b " , " --no-fly " ] )
215
229
216
230
XCTAssertEqual ( args. get ( foo) , " foo " )
217
231
XCTAssertEqual ( args. get ( bar) , " bar " )
218
232
XCTAssertEqual ( args. get ( branchOption) , nil )
219
233
XCTAssertEqual ( args. get ( noFlyOption) , true )
220
234
XCTAssertEqual ( args. subparser ( parser) , " b " )
235
+ XCTAssertEqual ( args. get ( parentArg) , " p " )
236
+ XCTAssertEqual ( try args. get ( " --parent " ) as String ? , " p " )
221
237
222
238
do {
223
239
args = try parser. parse ( [ " c " ] )
@@ -251,6 +267,7 @@ class ArgumentParserTests: XCTestCase {
251
267
XCTAssert ( usage. contains ( " USAGE: SomeBinary sample parser " ) )
252
268
XCTAssert ( usage. contains ( " --bar, -b The bar option " ) )
253
269
XCTAssert ( usage. contains ( " --foo The foo option " ) )
270
+ XCTAssert ( usage. contains ( " --parent The parent option " ) )
254
271
XCTAssert ( usage. contains ( " SUBCOMMANDS: " ) )
255
272
XCTAssert ( usage. contains ( " b B! " ) )
256
273
XCTAssert ( usage. contains ( " --help " ) )
0 commit comments