basant307/AI_Governance_Project
045
1'use strict';2 3var parse = require('../');4var test = require('tape');5 6test('parse args', function (t) {7 t.deepEqual(8 parse(['--no-moo']),9 { moo: false, _: [] },10 'no'11 );12 t.deepEqual(13 parse(['-v', 'a', '-v', 'b', '-v', 'c']),14 { v: ['a', 'b', 'c'], _: [] },15 'multi'16 );17 t.end();18});19 20test('comprehensive', function (t) {21 t.deepEqual(22 parse([23 '--name=meowmers', 'bare', '-cats', 'woo',24 '-h', 'awesome', '--multi=quux',25 '--key', 'value',26 '-b', '--bool', '--no-meep', '--multi=baz',27 '--', '--not-a-flag', 'eek',28 ]),29 {30 c: true,31 a: true,32 t: true,33 s: 'woo',34 h: 'awesome',35 b: true,36 bool: true,37 key: 'value',38 multi: ['quux', 'baz'],39 meep: false,40 name: 'meowmers',41 _: ['bare', '--not-a-flag', 'eek'],42 }43 );44 t.end();45});46 47test('flag boolean', function (t) {48 var argv = parse(['-t', 'moo'], { boolean: 't' });49 t.deepEqual(argv, { t: true, _: ['moo'] });50 t.deepEqual(typeof argv.t, 'boolean');51 t.end();52});53 54test('flag boolean value', function (t) {55 var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {56 boolean: ['t', 'verbose'],57 default: { verbose: true },58 });59 60 t.deepEqual(argv, {61 verbose: false,62 t: true,63 _: ['moo'],64 });65 66 t.deepEqual(typeof argv.verbose, 'boolean');67 t.deepEqual(typeof argv.t, 'boolean');68 t.end();69});70 71test('newlines in params', function (t) {72 var args = parse(['-s', 'X\nX']);73 t.deepEqual(args, { _: [], s: 'X\nX' });74 75 // reproduce in bash:76 // VALUE="new77 // line"78 // node program.js --s="$VALUE"79 args = parse(['--s=X\nX']);80 t.deepEqual(args, { _: [], s: 'X\nX' });81 t.end();82});83 84test('strings', function (t) {85 var s = parse(['-s', '0001234'], { string: 's' }).s;86 t.equal(s, '0001234');87 t.equal(typeof s, 'string');88 89 var x = parse(['-x', '56'], { string: 'x' }).x;90 t.equal(x, '56');91 t.equal(typeof x, 'string');92 t.end();93});94 95test('stringArgs', function (t) {96 var s = parse([' ', ' '], { string: '_' })._;97 t.same(s.length, 2);98 t.same(typeof s[0], 'string');99 t.same(s[0], ' ');100 t.same(typeof s[1], 'string');101 t.same(s[1], ' ');102 t.end();103});104 105test('empty strings', function (t) {106 var s = parse(['-s'], { string: 's' }).s;107 t.equal(s, '');108 t.equal(typeof s, 'string');109 110 var str = parse(['--str'], { string: 'str' }).str;111 t.equal(str, '');112 t.equal(typeof str, 'string');113 114 var letters = parse(['-art'], {115 string: ['a', 't'],116 });117 118 t.equal(letters.a, '');119 t.equal(letters.r, true);120 t.equal(letters.t, '');121 122 t.end();123});124 125test('string and alias', function (t) {126 var x = parse(['--str', '000123'], {127 string: 's',128 alias: { s: 'str' },129 });130 131 t.equal(x.str, '000123');132 t.equal(typeof x.str, 'string');133 t.equal(x.s, '000123');134 t.equal(typeof x.s, 'string');135 136 var y = parse(['-s', '000123'], {137 string: 'str',138 alias: { str: 's' },139 });140 141 t.equal(y.str, '000123');142 t.equal(typeof y.str, 'string');143 t.equal(y.s, '000123');144 t.equal(typeof y.s, 'string');145 146 var z = parse(['-s123'], {147 alias: { str: ['s', 'S'] },148 string: ['str'],149 });150 151 t.deepEqual(152 z,153 { _: [], s: '123', S: '123', str: '123' },154 'opt.string works with multiple aliases'155 );156 t.end();157});158 159test('slashBreak', function (t) {160 t.same(161 parse(['-I/foo/bar/baz']),162 { I: '/foo/bar/baz', _: [] }163 );164 t.same(165 parse(['-xyz/foo/bar/baz']),166 { x: true, y: true, z: '/foo/bar/baz', _: [] }167 );168 t.end();169});170 171test('alias', function (t) {172 var argv = parse(['-f', '11', '--zoom', '55'], {173 alias: { z: 'zoom' },174 });175 t.equal(argv.zoom, 55);176 t.equal(argv.z, argv.zoom);177 t.equal(argv.f, 11);178 t.end();179});180 181test('multiAlias', function (t) {182 var argv = parse(['-f', '11', '--zoom', '55'], {183 alias: { z: ['zm', 'zoom'] },184 });185 t.equal(argv.zoom, 55);186 t.equal(argv.z, argv.zoom);187 t.equal(argv.z, argv.zm);188 t.equal(argv.f, 11);189 t.end();190});191 192test('nested dotted objects', function (t) {193 var argv = parse([194 '--foo.bar', '3', '--foo.baz', '4',195 '--foo.quux.quibble', '5', '--foo.quux.o_O',196 '--beep.boop',197 ]);198 199 t.same(argv.foo, {200 bar: 3,201 baz: 4,202 quux: {203 quibble: 5,204 o_O: true,205 },206 });207 t.same(argv.beep, { boop: true });208 t.end();209});210 