1 |
3a515b92
|
cagy
|
var parse = require('../');
|
2 |
|
|
var test = require('tape');
|
3 |
|
|
|
4 |
|
|
test('flag boolean default false', function (t) {
|
5 |
|
|
var argv = parse(['moo'], {
|
6 |
|
|
boolean: ['t', 'verbose'],
|
7 |
|
|
default: { verbose: false, t: false }
|
8 |
|
|
});
|
9 |
|
|
|
10 |
|
|
t.deepEqual(argv, {
|
11 |
|
|
verbose: false,
|
12 |
|
|
t: false,
|
13 |
|
|
_: ['moo']
|
14 |
|
|
});
|
15 |
|
|
|
16 |
|
|
t.deepEqual(typeof argv.verbose, 'boolean');
|
17 |
|
|
t.deepEqual(typeof argv.t, 'boolean');
|
18 |
|
|
t.end();
|
19 |
|
|
|
20 |
|
|
});
|
21 |
|
|
|
22 |
|
|
test('boolean groups', function (t) {
|
23 |
|
|
var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
|
24 |
|
|
boolean: ['x','y','z']
|
25 |
|
|
});
|
26 |
|
|
|
27 |
|
|
t.deepEqual(argv, {
|
28 |
|
|
x : true,
|
29 |
|
|
y : false,
|
30 |
|
|
z : true,
|
31 |
|
|
_ : [ 'one', 'two', 'three' ]
|
32 |
|
|
});
|
33 |
|
|
|
34 |
|
|
t.deepEqual(typeof argv.x, 'boolean');
|
35 |
|
|
t.deepEqual(typeof argv.y, 'boolean');
|
36 |
|
|
t.deepEqual(typeof argv.z, 'boolean');
|
37 |
|
|
t.end();
|
38 |
|
|
});
|
39 |
|
|
test('boolean and alias with chainable api', function (t) {
|
40 |
|
|
var aliased = [ '-h', 'derp' ];
|
41 |
|
|
var regular = [ '--herp', 'derp' ];
|
42 |
|
|
var opts = {
|
43 |
|
|
herp: { alias: 'h', boolean: true }
|
44 |
|
|
};
|
45 |
|
|
var aliasedArgv = parse(aliased, {
|
46 |
|
|
boolean: 'herp',
|
47 |
|
|
alias: { h: 'herp' }
|
48 |
|
|
});
|
49 |
|
|
var propertyArgv = parse(regular, {
|
50 |
|
|
boolean: 'herp',
|
51 |
|
|
alias: { h: 'herp' }
|
52 |
|
|
});
|
53 |
|
|
var expected = {
|
54 |
|
|
herp: true,
|
55 |
|
|
h: true,
|
56 |
|
|
'_': [ 'derp' ]
|
57 |
|
|
};
|
58 |
|
|
|
59 |
|
|
t.same(aliasedArgv, expected);
|
60 |
|
|
t.same(propertyArgv, expected);
|
61 |
|
|
t.end();
|
62 |
|
|
});
|
63 |
|
|
|
64 |
|
|
test('boolean and alias with options hash', function (t) {
|
65 |
|
|
var aliased = [ '-h', 'derp' ];
|
66 |
|
|
var regular = [ '--herp', 'derp' ];
|
67 |
|
|
var opts = {
|
68 |
|
|
alias: { 'h': 'herp' },
|
69 |
|
|
boolean: 'herp'
|
70 |
|
|
};
|
71 |
|
|
var aliasedArgv = parse(aliased, opts);
|
72 |
|
|
var propertyArgv = parse(regular, opts);
|
73 |
|
|
var expected = {
|
74 |
|
|
herp: true,
|
75 |
|
|
h: true,
|
76 |
|
|
'_': [ 'derp' ]
|
77 |
|
|
};
|
78 |
|
|
t.same(aliasedArgv, expected);
|
79 |
|
|
t.same(propertyArgv, expected);
|
80 |
|
|
t.end();
|
81 |
|
|
});
|
82 |
|
|
|
83 |
|
|
test('boolean and alias array with options hash', function (t) {
|
84 |
|
|
var aliased = [ '-h', 'derp' ];
|
85 |
|
|
var regular = [ '--herp', 'derp' ];
|
86 |
|
|
var alt = [ '--harp', 'derp' ];
|
87 |
|
|
var opts = {
|
88 |
|
|
alias: { 'h': ['herp', 'harp'] },
|
89 |
|
|
boolean: 'h'
|
90 |
|
|
};
|
91 |
|
|
var aliasedArgv = parse(aliased, opts);
|
92 |
|
|
var propertyArgv = parse(regular, opts);
|
93 |
|
|
var altPropertyArgv = parse(alt, opts);
|
94 |
|
|
var expected = {
|
95 |
|
|
harp: true,
|
96 |
|
|
herp: true,
|
97 |
|
|
h: true,
|
98 |
|
|
'_': [ 'derp' ]
|
99 |
|
|
};
|
100 |
|
|
t.same(aliasedArgv, expected);
|
101 |
|
|
t.same(propertyArgv, expected);
|
102 |
|
|
t.same(altPropertyArgv, expected);
|
103 |
|
|
t.end();
|
104 |
|
|
});
|
105 |
|
|
|
106 |
|
|
test('boolean and alias using explicit true', function (t) {
|
107 |
|
|
var aliased = [ '-h', 'true' ];
|
108 |
|
|
var regular = [ '--herp', 'true' ];
|
109 |
|
|
var opts = {
|
110 |
|
|
alias: { h: 'herp' },
|
111 |
|
|
boolean: 'h'
|
112 |
|
|
};
|
113 |
|
|
var aliasedArgv = parse(aliased, opts);
|
114 |
|
|
var propertyArgv = parse(regular, opts);
|
115 |
|
|
var expected = {
|
116 |
|
|
herp: true,
|
117 |
|
|
h: true,
|
118 |
|
|
'_': [ ]
|
119 |
|
|
};
|
120 |
|
|
|
121 |
|
|
t.same(aliasedArgv, expected);
|
122 |
|
|
t.same(propertyArgv, expected);
|
123 |
|
|
t.end();
|
124 |
|
|
});
|
125 |
|
|
|
126 |
|
|
// regression, see https://github.com/substack/node-optimist/issues/71
|
127 |
|
|
test('boolean and --x=true', function(t) {
|
128 |
|
|
var parsed = parse(['--boool', '--other=true'], {
|
129 |
|
|
boolean: 'boool'
|
130 |
|
|
});
|
131 |
|
|
|
132 |
|
|
t.same(parsed.boool, true);
|
133 |
|
|
t.same(parsed.other, 'true');
|
134 |
|
|
|
135 |
|
|
parsed = parse(['--boool', '--other=false'], {
|
136 |
|
|
boolean: 'boool'
|
137 |
|
|
});
|
138 |
|
|
|
139 |
|
|
t.same(parsed.boool, true);
|
140 |
|
|
t.same(parsed.other, 'false');
|
141 |
|
|
t.end();
|
142 |
|
|
});
|
143 |
|
|
|
144 |
|
|
test('boolean --boool=true', function (t) {
|
145 |
|
|
var parsed = parse(['--boool=true'], {
|
146 |
|
|
default: {
|
147 |
|
|
boool: false
|
148 |
|
|
},
|
149 |
|
|
boolean: ['boool']
|
150 |
|
|
});
|
151 |
|
|
|
152 |
|
|
t.same(parsed.boool, true);
|
153 |
|
|
t.end();
|
154 |
|
|
});
|
155 |
|
|
|
156 |
|
|
test('boolean --boool=false', function (t) {
|
157 |
|
|
var parsed = parse(['--boool=false'], {
|
158 |
|
|
default: {
|
159 |
|
|
boool: true
|
160 |
|
|
},
|
161 |
|
|
boolean: ['boool']
|
162 |
|
|
});
|
163 |
|
|
|
164 |
|
|
t.same(parsed.boool, false);
|
165 |
|
|
t.end();
|
166 |
|
|
});
|
167 |
|
|
|
168 |
|
|
test('boolean using something similar to true', function (t) {
|
169 |
|
|
var opts = { boolean: 'h' };
|
170 |
|
|
var result = parse(['-h', 'true.txt'], opts);
|
171 |
|
|
var expected = {
|
172 |
|
|
h: true,
|
173 |
|
|
'_': ['true.txt']
|
174 |
|
|
};
|
175 |
|
|
|
176 |
|
|
t.same(result, expected);
|
177 |
|
|
t.end();
|
178 |
|
|
});
|