@@ -3182,6 +3182,19 @@ describe('yargs-parser', function () {
3182
3182
k : 1
3183
3183
} )
3184
3184
} )
3185
+ it ( 'should ignore unknown options in short format followed by a dash character' , function ( ) {
3186
+ // Somewhat redundant test since '-' is a non-word character (see next test) but '-' has own code in parser.
3187
+ const argv = parser ( '-k- -u-' , {
3188
+ string : [ 'k' ] ,
3189
+ configuration : {
3190
+ 'unknown-options-as-args' : true
3191
+ }
3192
+ } )
3193
+ argv . should . deep . equal ( {
3194
+ _ : [ '-u-' ] ,
3195
+ k : '-'
3196
+ } )
3197
+ } )
3185
3198
it ( 'should ignore unknown options in short format followed by a non-word character' , function ( ) {
3186
3199
const argv = parser ( '-k/1/ -u/2/' , {
3187
3200
string : [ 'k' ] ,
@@ -3217,6 +3230,103 @@ describe('yargs-parser', function () {
3217
3230
k : true ,
3218
3231
v : true
3219
3232
} )
3233
+ } )
3234
+ // Fixes: https://github.com/yargs/yargs-parser/issues/501
3235
+ it ( 'should allow an unknown arg that resembles a known arg and contains hyphens to be used as the value of another flag in short form' , function ( ) {
3236
+ {
3237
+ const argv = parser ( '--known-arg /1/ -k --known-arg-unknown' , {
3238
+ string : [ 'k' , 'known-arg' ] ,
3239
+ narg : { k : 1 , 'known-arg' : 1 } ,
3240
+ configuration : {
3241
+ 'unknown-options-as-args' : true
3242
+ }
3243
+ } )
3244
+ argv . should . deep . equal ( {
3245
+ _ : [ ] ,
3246
+ k : '--known-arg-unknown' ,
3247
+ 'knownArg' : '/1/' ,
3248
+ 'known-arg' : '/1/' ,
3249
+ } )
3250
+ }
3251
+
3252
+ {
3253
+ const argv = parser ( '-k --u-u' , {
3254
+ string : [ 'k' , 'u' ] ,
3255
+ narg : { k : 1 , u : 1 } ,
3256
+ configuration : {
3257
+ 'unknown-options-as-args' : true
3258
+ }
3259
+ } )
3260
+ argv . should . deep . equal ( {
3261
+ _ : [ ] ,
3262
+ k : '--u-u'
3263
+ } )
3264
+ }
3265
+ } )
3266
+ // Fixes: https://github.com/yargs/yargs-parser/issues/501
3267
+ it ( 'should allow an unknown arg that resembles a known arg and contains hyphens to be used as the value of another flag in long form' , function ( ) {
3268
+ {
3269
+ const argv = parser ( '-k /1/ --known-arg --k-u' , {
3270
+ string : [ 'k' , 'known-arg' ] ,
3271
+ narg : { k : 1 , 'known-arg' : 1 } ,
3272
+ configuration : {
3273
+ 'unknown-options-as-args' : true
3274
+ }
3275
+ } )
3276
+ argv . should . deep . equal ( {
3277
+ _ : [ ] ,
3278
+ k : '/1/' ,
3279
+ 'knownArg' : '--k-u' ,
3280
+ 'known-arg' : '--k-u' ,
3281
+ } )
3282
+ }
3283
+
3284
+ {
3285
+ const argv = parser ( '--known-arg --known-unknown' , {
3286
+ string : [ 'known-arg' , 'known' ] ,
3287
+ narg : { 'known-arg' : 1 , 'known' : 1 } ,
3288
+ configuration : {
3289
+ 'unknown-options-as-args' : true
3290
+ }
3291
+ } )
3292
+ argv . should . deep . equal ( {
3293
+ _ : [ ] ,
3294
+ 'knownArg' : '--known-unknown' ,
3295
+ 'known-arg' : '--known-unknown' ,
3296
+ } )
3297
+ }
3298
+ } )
3299
+ // Fixes: https://github.com/yargs/yargs-parser/issues/501
3300
+ it ( 'should allow an unknown arg that resembles a known arg and contains hyphens to be used as the value of another flag in array form' , function ( ) {
3301
+ {
3302
+ const argv = parser ( '--known-arg --known-unknown --known-not-known' , {
3303
+ array : [ 'known-arg' , 'known' ] ,
3304
+ configuration : {
3305
+ 'unknown-options-as-args' : true
3306
+ }
3307
+ } )
3308
+ argv . should . deep . equal ( {
3309
+ _ : [ ] ,
3310
+ knownArg : [ '--known-unknown' , '--known-not-known' ] ,
3311
+ 'known-arg' : [ '--known-unknown' , '--known-not-known' ]
3312
+ } )
3313
+ }
3314
+
3315
+ {
3316
+ const argv = parser ( '--known-arg --k-unknown --k-not-known' , {
3317
+ array : [ 'known-arg' ] ,
3318
+ alias : { 'known-arg' : [ 'k' ] } ,
3319
+ configuration : {
3320
+ 'unknown-options-as-args' : true
3321
+ }
3322
+ } )
3323
+ argv . should . deep . equal ( {
3324
+ _ : [ ] ,
3325
+ knownArg : [ '--k-unknown' , '--k-not-known' ] ,
3326
+ 'known-arg' : [ '--k-unknown' , '--k-not-known' ] ,
3327
+ k : [ '--k-unknown' , '--k-not-known' ]
3328
+ } )
3329
+ }
3220
3330
} )
3221
3331
it ( 'should parse negative numbers' , function ( ) {
3222
3332
const argv = parser ( '-k -33' , {
0 commit comments