103 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			103 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var parse = require('../'); | ||
|  | var test = require('tape'); | ||
|  | 
 | ||
|  | test('boolean and alias is not unknown', function (t) { | ||
|  |     var unknown = []; | ||
|  |     function unknownFn(arg) { | ||
|  |         unknown.push(arg); | ||
|  |         return false; | ||
|  |     } | ||
|  |     var aliased = [ '-h', 'true', '--derp', 'true' ]; | ||
|  |     var regular = [ '--herp',  'true', '-d', 'true' ]; | ||
|  |     var opts = { | ||
|  |         alias: { h: 'herp' }, | ||
|  |         boolean: 'h', | ||
|  |         unknown: unknownFn | ||
|  |     }; | ||
|  |     var aliasedArgv = parse(aliased, opts); | ||
|  |     var propertyArgv = parse(regular, opts); | ||
|  | 
 | ||
|  |     t.same(unknown, ['--derp', '-d']); | ||
|  |     t.end(); | ||
|  | }); | ||
|  | 
 | ||
|  | test('flag boolean true any double hyphen argument is not unknown', function (t) { | ||
|  |     var unknown = []; | ||
|  |     function unknownFn(arg) { | ||
|  |         unknown.push(arg); | ||
|  |         return false; | ||
|  |     } | ||
|  |     var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], { | ||
|  |         boolean: true, | ||
|  |         unknown: unknownFn | ||
|  |     }); | ||
|  |     t.same(unknown, ['--tacos=good', 'cow', '-p']); | ||
|  |     t.same(argv, { | ||
|  |         honk: true, | ||
|  |         _: [] | ||
|  |     }); | ||
|  |     t.end(); | ||
|  | }); | ||
|  | 
 | ||
|  | test('string and alias is not unknown', function (t) { | ||
|  |     var unknown = []; | ||
|  |     function unknownFn(arg) { | ||
|  |         unknown.push(arg); | ||
|  |         return false; | ||
|  |     } | ||
|  |     var aliased = [ '-h', 'hello', '--derp', 'goodbye' ]; | ||
|  |     var regular = [ '--herp',  'hello', '-d', 'moon' ]; | ||
|  |     var opts = { | ||
|  |         alias: { h: 'herp' }, | ||
|  |         string: 'h', | ||
|  |         unknown: unknownFn | ||
|  |     }; | ||
|  |     var aliasedArgv = parse(aliased, opts); | ||
|  |     var propertyArgv = parse(regular, opts); | ||
|  | 
 | ||
|  |     t.same(unknown, ['--derp', '-d']); | ||
|  |     t.end(); | ||
|  | }); | ||
|  | 
 | ||
|  | test('default and alias is not unknown', function (t) { | ||
|  |     var unknown = []; | ||
|  |     function unknownFn(arg) { | ||
|  |         unknown.push(arg); | ||
|  |         return false; | ||
|  |     } | ||
|  |     var aliased = [ '-h', 'hello' ]; | ||
|  |     var regular = [ '--herp',  'hello' ]; | ||
|  |     var opts = { | ||
|  |         default: { 'h': 'bar' }, | ||
|  |         alias: { 'h': 'herp' }, | ||
|  |         unknown: unknownFn | ||
|  |     }; | ||
|  |     var aliasedArgv = parse(aliased, opts); | ||
|  |     var propertyArgv = parse(regular, opts); | ||
|  | 
 | ||
|  |     t.same(unknown, []); | ||
|  |     t.end(); | ||
|  |     unknownFn(); // exercise fn for 100% coverage
 | ||
|  | }); | ||
|  | 
 | ||
|  | test('value following -- is not unknown', function (t) { | ||
|  |     var unknown = []; | ||
|  |     function unknownFn(arg) { | ||
|  |         unknown.push(arg); | ||
|  |         return false; | ||
|  |     } | ||
|  |     var aliased = [ '--bad', '--', 'good', 'arg' ]; | ||
|  |     var opts = { | ||
|  |         '--': true, | ||
|  |         unknown: unknownFn | ||
|  |     }; | ||
|  |     var argv = parse(aliased, opts); | ||
|  | 
 | ||
|  |     t.same(unknown, ['--bad']); | ||
|  |     t.same(argv, { | ||
|  |         '--': ['good', 'arg'], | ||
|  |         '_': [] | ||
|  |     }) | ||
|  |     t.end(); | ||
|  | }); |