react / wstein / node_modules / jest-cli / node_modules / istanbul / node_modules / handlebars / node_modules / uglify-js / node_modules / optimist / test / parse.js
80742 viewsvar optimist = require('../index');1var path = require('path');2var test = require('tap').test;34var $0 = 'node ./' + path.relative(process.cwd(), __filename);56test('short boolean', function (t) {7var parse = optimist.parse([ '-b' ]);8t.same(parse, { b : true, _ : [], $0 : $0 });9t.same(typeof parse.b, 'boolean');10t.end();11});1213test('long boolean', function (t) {14t.same(15optimist.parse([ '--bool' ]),16{ bool : true, _ : [], $0 : $0 }17);18t.end();19});2021test('bare', function (t) {22t.same(23optimist.parse([ 'foo', 'bar', 'baz' ]),24{ _ : [ 'foo', 'bar', 'baz' ], $0 : $0 }25);26t.end();27});2829test('short group', function (t) {30t.same(31optimist.parse([ '-cats' ]),32{ c : true, a : true, t : true, s : true, _ : [], $0 : $0 }33);34t.end();35});3637test('short group next', function (t) {38t.same(39optimist.parse([ '-cats', 'meow' ]),40{ c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 }41);42t.end();43});4445test('short capture', function (t) {46t.same(47optimist.parse([ '-h', 'localhost' ]),48{ h : 'localhost', _ : [], $0 : $0 }49);50t.end();51});5253test('short captures', function (t) {54t.same(55optimist.parse([ '-h', 'localhost', '-p', '555' ]),56{ h : 'localhost', p : 555, _ : [], $0 : $0 }57);58t.end();59});6061test('long capture sp', function (t) {62t.same(63optimist.parse([ '--pow', 'xixxle' ]),64{ pow : 'xixxle', _ : [], $0 : $0 }65);66t.end();67});6869test('long capture eq', function (t) {70t.same(71optimist.parse([ '--pow=xixxle' ]),72{ pow : 'xixxle', _ : [], $0 : $0 }73);74t.end()75});7677test('long captures sp', function (t) {78t.same(79optimist.parse([ '--host', 'localhost', '--port', '555' ]),80{ host : 'localhost', port : 555, _ : [], $0 : $0 }81);82t.end();83});8485test('long captures eq', function (t) {86t.same(87optimist.parse([ '--host=localhost', '--port=555' ]),88{ host : 'localhost', port : 555, _ : [], $0 : $0 }89);90t.end();91});9293test('mixed short bool and capture', function (t) {94t.same(95optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),96{97f : true, p : 555, h : 'localhost',98_ : [ 'script.js' ], $0 : $0,99}100);101t.end();102});103104test('short and long', function (t) {105t.same(106optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),107{108f : true, p : 555, h : 'localhost',109_ : [ 'script.js' ], $0 : $0,110}111);112t.end();113});114115test('no', function (t) {116t.same(117optimist.parse([ '--no-moo' ]),118{ moo : false, _ : [], $0 : $0 }119);120t.end();121});122123test('multi', function (t) {124t.same(125optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),126{ v : ['a','b','c'], _ : [], $0 : $0 }127);128t.end();129});130131test('comprehensive', function (t) {132t.same(133optimist.parse([134'--name=meowmers', 'bare', '-cats', 'woo',135'-h', 'awesome', '--multi=quux',136'--key', 'value',137'-b', '--bool', '--no-meep', '--multi=baz',138'--', '--not-a-flag', 'eek'139]),140{141c : true,142a : true,143t : true,144s : 'woo',145h : 'awesome',146b : true,147bool : true,148key : 'value',149multi : [ 'quux', 'baz' ],150meep : false,151name : 'meowmers',152_ : [ 'bare', '--not-a-flag', 'eek' ],153$0 : $0154}155);156t.end();157});158159test('nums', function (t) {160var argv = optimist.parse([161'-x', '1234',162'-y', '5.67',163'-z', '1e7',164'-w', '10f',165'--hex', '0xdeadbeef',166'789',167]);168t.same(argv, {169x : 1234,170y : 5.67,171z : 1e7,172w : '10f',173hex : 0xdeadbeef,174_ : [ 789 ],175$0 : $0176});177t.same(typeof argv.x, 'number');178t.same(typeof argv.y, 'number');179t.same(typeof argv.z, 'number');180t.same(typeof argv.w, 'string');181t.same(typeof argv.hex, 'number');182t.same(typeof argv._[0], 'number');183t.end();184});185186test('flag boolean', function (t) {187var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv;188t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 });189t.same(typeof parse.t, 'boolean');190t.end();191});192193test('flag boolean value', function (t) {194var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true'])195.boolean(['t', 'verbose']).default('verbose', true).argv;196197t.same(parse, {198verbose: false,199t: true,200_: ['moo'],201$0 : $0202});203204t.same(typeof parse.verbose, 'boolean');205t.same(typeof parse.t, 'boolean');206t.end();207});208209test('flag boolean default false', function (t) {210var parse = optimist(['moo'])211.boolean(['t', 'verbose'])212.default('verbose', false)213.default('t', false).argv;214215t.same(parse, {216verbose: false,217t: false,218_: ['moo'],219$0 : $0220});221222t.same(typeof parse.verbose, 'boolean');223t.same(typeof parse.t, 'boolean');224t.end();225226});227228test('boolean groups', function (t) {229var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ])230.boolean(['x','y','z']).argv;231232t.same(parse, {233x : true,234y : false,235z : true,236_ : [ 'one', 'two', 'three' ],237$0 : $0238});239240t.same(typeof parse.x, 'boolean');241t.same(typeof parse.y, 'boolean');242t.same(typeof parse.z, 'boolean');243t.end();244});245246test('newlines in params' , function (t) {247var args = optimist.parse([ '-s', "X\nX" ])248t.same(args, { _ : [], s : "X\nX", $0 : $0 });249250// reproduce in bash:251// VALUE="new252// line"253// node program.js --s="$VALUE"254args = optimist.parse([ "--s=X\nX" ])255t.same(args, { _ : [], s : "X\nX", $0 : $0 });256t.end();257});258259test('strings' , function (t) {260var s = optimist([ '-s', '0001234' ]).string('s').argv.s;261t.same(s, '0001234');262t.same(typeof s, 'string');263264var x = optimist([ '-x', '56' ]).string('x').argv.x;265t.same(x, '56');266t.same(typeof x, 'string');267t.end();268});269270test('stringArgs', function (t) {271var s = optimist([ ' ', ' ' ]).string('_').argv._;272t.same(s.length, 2);273t.same(typeof s[0], 'string');274t.same(s[0], ' ');275t.same(typeof s[1], 'string');276t.same(s[1], ' ');277t.end();278});279280test('slashBreak', function (t) {281t.same(282optimist.parse([ '-I/foo/bar/baz' ]),283{ I : '/foo/bar/baz', _ : [], $0 : $0 }284);285t.same(286optimist.parse([ '-xyz/foo/bar/baz' ]),287{ x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 }288);289t.end();290});291292test('alias', function (t) {293var argv = optimist([ '-f', '11', '--zoom', '55' ])294.alias('z', 'zoom')295.argv296;297t.equal(argv.zoom, 55);298t.equal(argv.z, argv.zoom);299t.equal(argv.f, 11);300t.end();301});302303test('multiAlias', function (t) {304var argv = optimist([ '-f', '11', '--zoom', '55' ])305.alias('z', [ 'zm', 'zoom' ])306.argv307;308t.equal(argv.zoom, 55);309t.equal(argv.z, argv.zoom);310t.equal(argv.z, argv.zm);311t.equal(argv.f, 11);312t.end();313});314315test('boolean default true', function (t) {316var argv = optimist.options({317sometrue: {318boolean: true,319default: true320}321}).argv;322323t.equal(argv.sometrue, true);324t.end();325});326327test('boolean default false', function (t) {328var argv = optimist.options({329somefalse: {330boolean: true,331default: false332}333}).argv;334335t.equal(argv.somefalse, false);336t.end();337});338339test('nested dotted objects', function (t) {340var argv = optimist([341'--foo.bar', '3', '--foo.baz', '4',342'--foo.quux.quibble', '5', '--foo.quux.o_O',343'--beep.boop'344]).argv;345346t.same(argv.foo, {347bar : 3,348baz : 4,349quux : {350quibble : 5,351o_O : true352},353});354t.same(argv.beep, { boop : true });355t.end();356});357358test('boolean and alias with chainable api', function (t) {359var aliased = [ '-h', 'derp' ];360var regular = [ '--herp', 'derp' ];361var opts = {362herp: { alias: 'h', boolean: true }363};364var aliasedArgv = optimist(aliased)365.boolean('herp')366.alias('h', 'herp')367.argv;368var propertyArgv = optimist(regular)369.boolean('herp')370.alias('h', 'herp')371.argv;372var expected = {373herp: true,374h: true,375'_': [ 'derp' ],376'$0': $0,377};378379t.same(aliasedArgv, expected);380t.same(propertyArgv, expected);381t.end();382});383384test('boolean and alias with options hash', function (t) {385var aliased = [ '-h', 'derp' ];386var regular = [ '--herp', 'derp' ];387var opts = {388herp: { alias: 'h', boolean: true }389};390var aliasedArgv = optimist(aliased)391.options(opts)392.argv;393var propertyArgv = optimist(regular).options(opts).argv;394var expected = {395herp: true,396h: true,397'_': [ 'derp' ],398'$0': $0,399};400401t.same(aliasedArgv, expected);402t.same(propertyArgv, expected);403404t.end();405});406407test('boolean and alias using explicit true', function (t) {408var aliased = [ '-h', 'true' ];409var regular = [ '--herp', 'true' ];410var opts = {411herp: { alias: 'h', boolean: true }412};413var aliasedArgv = optimist(aliased)414.boolean('h')415.alias('h', 'herp')416.argv;417var propertyArgv = optimist(regular)418.boolean('h')419.alias('h', 'herp')420.argv;421var expected = {422herp: true,423h: true,424'_': [ ],425'$0': $0,426};427428t.same(aliasedArgv, expected);429t.same(propertyArgv, expected);430t.end();431});432433// regression, see https://github.com/substack/node-optimist/issues/71434test('boolean and --x=true', function(t) {435var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv;436437t.same(parsed.boool, true);438t.same(parsed.other, 'true');439440parsed = optimist(['--boool', '--other=false']).boolean('boool').argv;441442t.same(parsed.boool, true);443t.same(parsed.other, 'false');444t.end();445});446447448