| '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(); | |
| });
 |