1
|
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
|
});
|