| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | var parse = require('../');var test = require('tape');test('parse args', function (t) {    t.deepEqual(        parse([ '--no-moo' ]),        { moo : false, _ : [] },        'no'    );    t.deepEqual(        parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),        { v : ['a','b','c'], _ : [] },        'multi'    );    t.end();}); test('comprehensive', function (t) {    t.deepEqual(        parse([            '--name=meowmers', 'bare', '-cats', 'woo',            '-h', 'awesome', '--multi=quux',            '--key', 'value',            '-b', '--bool', '--no-meep', '--multi=baz',            '--', '--not-a-flag', 'eek'        ]),        {            c : true,            a : true,            t : true,            s : 'woo',            h : 'awesome',            b : true,            bool : true,            key : 'value',            multi : [ 'quux', 'baz' ],            meep : false,            name : 'meowmers',            _ : [ 'bare', '--not-a-flag', 'eek' ]        }    );    t.end();});test('flag boolean', function (t) {    var argv = parse([ '-t', 'moo' ], { boolean: 't' });    t.deepEqual(argv, { t : true, _ : [ 'moo' ] });    t.deepEqual(typeof argv.t, 'boolean');    t.end();});test('flag boolean value', function (t) {    var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {        boolean: [ 't', 'verbose' ],        default: { verbose: true }    });        t.deepEqual(argv, {        verbose: false,        t: true,        _: ['moo']    });        t.deepEqual(typeof argv.verbose, 'boolean');    t.deepEqual(typeof argv.t, 'boolean');    t.end();});test('newlines in params' , function (t) {    var args = parse([ '-s', "X\nX" ])    t.deepEqual(args, { _ : [], s : "X\nX" });        // reproduce in bash:    // VALUE="new    // line"    // node program.js --s="$VALUE"    args = parse([ "--s=X\nX" ])    t.deepEqual(args, { _ : [], s : "X\nX" });    t.end();});test('strings' , function (t) {    var s = parse([ '-s', '0001234' ], { string: 's' }).s;    t.equal(s, '0001234');    t.equal(typeof s, 'string');        var x = parse([ '-x', '56' ], { string: 'x' }).x;    t.equal(x, '56');    t.equal(typeof x, 'string');    t.end();});test('stringArgs', function (t) {    var s = parse([ '  ', '  ' ], { string: '_' })._;    t.same(s.length, 2);    t.same(typeof s[0], 'string');    t.same(s[0], '  ');    t.same(typeof s[1], 'string');    t.same(s[1], '  ');    t.end();});test('empty strings', function(t) {    var s = parse([ '-s' ], { string: 's' }).s;    t.equal(s, '');    t.equal(typeof s, 'string');    var str = parse([ '--str' ], { string: 'str' }).str;    t.equal(str, '');    t.equal(typeof str, 'string');    var letters = parse([ '-art' ], {        string: [ 'a', 't' ]    });    t.equal(letters.a, '');    t.equal(letters.r, true);    t.equal(letters.t, '');    t.end();});test('string and alias', function(t) {    var x = parse([ '--str',  '000123' ], {        string: 's',        alias: { s: 'str' }    });    t.equal(x.str, '000123');    t.equal(typeof x.str, 'string');    t.equal(x.s, '000123');    t.equal(typeof x.s, 'string');    var y = parse([ '-s',  '000123' ], {        string: 'str',        alias: { str: 's' }    });    t.equal(y.str, '000123');    t.equal(typeof y.str, 'string');    t.equal(y.s, '000123');    t.equal(typeof y.s, 'string');    t.end();});test('slashBreak', function (t) {    t.same(        parse([ '-I/foo/bar/baz' ]),        { I : '/foo/bar/baz', _ : [] }    );    t.same(        parse([ '-xyz/foo/bar/baz' ]),        { x : true, y : true, z : '/foo/bar/baz', _ : [] }    );    t.end();});test('alias', function (t) {    var argv = parse([ '-f', '11', '--zoom', '55' ], {        alias: { z: 'zoom' }    });    t.equal(argv.zoom, 55);    t.equal(argv.z, argv.zoom);    t.equal(argv.f, 11);    t.end();});test('multiAlias', function (t) {    var argv = parse([ '-f', '11', '--zoom', '55' ], {        alias: { z: [ 'zm', 'zoom' ] }    });    t.equal(argv.zoom, 55);    t.equal(argv.z, argv.zoom);    t.equal(argv.z, argv.zm);    t.equal(argv.f, 11);    t.end();});test('nested dotted objects', function (t) {    var argv = parse([        '--foo.bar', '3', '--foo.baz', '4',        '--foo.quux.quibble', '5', '--foo.quux.o_O',        '--beep.boop'    ]);        t.same(argv.foo, {        bar : 3,        baz : 4,        quux : {            quibble : 5,            o_O : true        }    });    t.same(argv.beep, { boop : true });    t.end();});
 |