1var parse = require('../'); 2var test = require('tape'); 3 4test('boolean and alias is not unknown', function (t) { 5 var unknown = []; 6 function unknownFn(arg) { 7 unknown.push(arg); 8 return false; 9 } 10 var aliased = [ '-h', 'true', '--derp', 'true' ]; 11 var regular = [ '--herp', 'true', '-d', 'true' ]; 12 var opts = { 13 alias: { h: 'herp' }, 14 boolean: 'h', 15 unknown: unknownFn 16 }; 17 var aliasedArgv = parse(aliased, opts); 18 var propertyArgv = parse(regular, opts); 19 20 t.same(unknown, ['--derp', '-d']); 21 t.end(); 22}); 23 24test('flag boolean true any double hyphen argument is not unknown', function (t) { 25 var unknown = []; 26 function unknownFn(arg) { 27 unknown.push(arg); 28 return false; 29 } 30 var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], { 31 boolean: true, 32 unknown: unknownFn 33 }); 34 t.same(unknown, ['--tacos=good', 'cow', '-p']); 35 t.same(argv, { 36 honk: true, 37 _: [] 38 }); 39 t.end(); 40}); 41 42test('string and alias is not unknown', function (t) { 43 var unknown = []; 44 function unknownFn(arg) { 45 unknown.push(arg); 46 return false; 47 } 48 var aliased = [ '-h', 'hello', '--derp', 'goodbye' ]; 49 var regular = [ '--herp', 'hello', '-d', 'moon' ]; 50 var opts = { 51 alias: { h: 'herp' }, 52 string: 'h', 53 unknown: unknownFn 54 }; 55 var aliasedArgv = parse(aliased, opts); 56 var propertyArgv = parse(regular, opts); 57 58 t.same(unknown, ['--derp', '-d']); 59 t.end(); 60}); 61 62test('default and alias is not unknown', function (t) { 63 var unknown = []; 64 function unknownFn(arg) { 65 unknown.push(arg); 66 return false; 67 } 68 var aliased = [ '-h', 'hello' ]; 69 var regular = [ '--herp', 'hello' ]; 70 var opts = { 71 default: { 'h': 'bar' }, 72 alias: { 'h': 'herp' }, 73 unknown: unknownFn 74 }; 75 var aliasedArgv = parse(aliased, opts); 76 var propertyArgv = parse(regular, opts); 77 78 t.same(unknown, []); 79 t.end(); 80 unknownFn(); // exercise fn for 100% coverage 81}); 82 83test('value following -- is not unknown', function (t) { 84 var unknown = []; 85 function unknownFn(arg) { 86 unknown.push(arg); 87 return false; 88 } 89 var aliased = [ '--bad', '--', 'good', 'arg' ]; 90 var opts = { 91 '--': true, 92 unknown: unknownFn 93 }; 94 var argv = parse(aliased, opts); 95 96 t.same(unknown, ['--bad']); 97 t.same(argv, { 98 '--': ['good', 'arg'], 99 '_': [] 100 }) 101 t.end(); 102}); 103