react / wstein / node_modules / browserify / node_modules / subarg / node_modules / minimist / test / parse.js
80540 viewsvar parse = require('../');1var test = require('tape');23test('parse args', function (t) {4t.deepEqual(5parse([ '--no-moo' ]),6{ moo : false, _ : [] },7'no'8);9t.deepEqual(10parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),11{ v : ['a','b','c'], _ : [] },12'multi'13);14t.end();15});1617test('comprehensive', function (t) {18t.deepEqual(19parse([20'--name=meowmers', 'bare', '-cats', 'woo',21'-h', 'awesome', '--multi=quux',22'--key', 'value',23'-b', '--bool', '--no-meep', '--multi=baz',24'--', '--not-a-flag', 'eek'25]),26{27c : true,28a : true,29t : true,30s : 'woo',31h : 'awesome',32b : true,33bool : true,34key : 'value',35multi : [ 'quux', 'baz' ],36meep : false,37name : 'meowmers',38_ : [ 'bare', '--not-a-flag', 'eek' ]39}40);41t.end();42});4344test('flag boolean', function (t) {45var argv = parse([ '-t', 'moo' ], { boolean: 't' });46t.deepEqual(argv, { t : true, _ : [ 'moo' ] });47t.deepEqual(typeof argv.t, 'boolean');48t.end();49});5051test('flag boolean value', function (t) {52var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {53boolean: [ 't', 'verbose' ],54default: { verbose: true }55});5657t.deepEqual(argv, {58verbose: false,59t: true,60_: ['moo']61});6263t.deepEqual(typeof argv.verbose, 'boolean');64t.deepEqual(typeof argv.t, 'boolean');65t.end();66});6768test('newlines in params' , function (t) {69var args = parse([ '-s', "X\nX" ])70t.deepEqual(args, { _ : [], s : "X\nX" });7172// reproduce in bash:73// VALUE="new74// line"75// node program.js --s="$VALUE"76args = parse([ "--s=X\nX" ])77t.deepEqual(args, { _ : [], s : "X\nX" });78t.end();79});8081test('strings' , function (t) {82var s = parse([ '-s', '0001234' ], { string: 's' }).s;83t.equal(s, '0001234');84t.equal(typeof s, 'string');8586var x = parse([ '-x', '56' ], { string: 'x' }).x;87t.equal(x, '56');88t.equal(typeof x, 'string');89t.end();90});9192test('stringArgs', function (t) {93var s = parse([ ' ', ' ' ], { string: '_' })._;94t.same(s.length, 2);95t.same(typeof s[0], 'string');96t.same(s[0], ' ');97t.same(typeof s[1], 'string');98t.same(s[1], ' ');99t.end();100});101102test('empty strings', function(t) {103var s = parse([ '-s' ], { string: 's' }).s;104t.equal(s, '');105t.equal(typeof s, 'string');106107var str = parse([ '--str' ], { string: 'str' }).str;108t.equal(str, '');109t.equal(typeof str, 'string');110111var letters = parse([ '-art' ], {112string: [ 'a', 't' ]113});114115t.equal(letters.a, '');116t.equal(letters.r, true);117t.equal(letters.t, '');118119t.end();120});121122123test('string and alias', function(t) {124var x = parse([ '--str', '000123' ], {125string: 's',126alias: { s: 'str' }127});128129t.equal(x.str, '000123');130t.equal(typeof x.str, 'string');131t.equal(x.s, '000123');132t.equal(typeof x.s, 'string');133134var y = parse([ '-s', '000123' ], {135string: 'str',136alias: { str: 's' }137});138139t.equal(y.str, '000123');140t.equal(typeof y.str, 'string');141t.equal(y.s, '000123');142t.equal(typeof y.s, 'string');143t.end();144});145146test('slashBreak', function (t) {147t.same(148parse([ '-I/foo/bar/baz' ]),149{ I : '/foo/bar/baz', _ : [] }150);151t.same(152parse([ '-xyz/foo/bar/baz' ]),153{ x : true, y : true, z : '/foo/bar/baz', _ : [] }154);155t.end();156});157158test('alias', function (t) {159var argv = parse([ '-f', '11', '--zoom', '55' ], {160alias: { z: 'zoom' }161});162t.equal(argv.zoom, 55);163t.equal(argv.z, argv.zoom);164t.equal(argv.f, 11);165t.end();166});167168test('multiAlias', function (t) {169var argv = parse([ '-f', '11', '--zoom', '55' ], {170alias: { z: [ 'zm', 'zoom' ] }171});172t.equal(argv.zoom, 55);173t.equal(argv.z, argv.zoom);174t.equal(argv.z, argv.zm);175t.equal(argv.f, 11);176t.end();177});178179test('nested dotted objects', function (t) {180var argv = parse([181'--foo.bar', '3', '--foo.baz', '4',182'--foo.quux.quibble', '5', '--foo.quux.o_O',183'--beep.boop'184]);185186t.same(argv.foo, {187bar : 3,188baz : 4,189quux : {190quibble : 5,191o_O : true192}193});194t.same(argv.beep, { boop : true });195t.end();196});197198199