105 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			105 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | 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, | ||
|  | 	}; | ||
|  | 	parse(aliased, opts); | ||
|  | 	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, | ||
|  | 	}; | ||
|  | 	parse(aliased, opts); | ||
|  | 	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, | ||
|  | 	}; | ||
|  | 	parse(aliased, opts); | ||
|  | 	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(); | ||
|  | }); |