You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					103 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					103 lines
				
				2.5 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								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();
							 | 
						||
| 
								 | 
							
								});
							 |