-
Notifications
You must be signed in to change notification settings - Fork 240
/
parseopts.js
118 lines (100 loc) · 2.49 KB
/
parseopts.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
var assert = require('assert')
, parseopts = require('../lib/parseopts')
, Parser = parseopts.Parser
, tests
, _opts;
_opts = [
{ full: 'howdy'
, abbr: 'h'
, args: true
, canon: 'howdy'
}
, { full: ['derp', 'zoom']
, abbr: 'd'
, args: false
, canon: 'derp'
}
, { full: ['zong', 'asdf']
, abbr: ['n', 'b']
, args: false
, canon: 'zong'
}
];
tests = {
'constructor': function () {
var p = new Parser(_opts);
assert.equal(p.longOpts.howdy.canon, 'howdy');
assert.equal(p.shortOpts.h.canon, 'howdy');
}
, 'parse short': function () {
var p = new Parser(_opts);
p.parse(['-h', 'foo']);
assert.equal(p.opts.howdy, 'foo');
}
, 'parse long': function () {
var p = new Parser(_opts);
p.parse(['--howdy=bar']);
assert.equal(p.opts.howdy, 'bar');
}
, 'parse short with cmds': function () {
var p = new Parser(_opts);
p.parse(['asdf', '-h', 'foo', 'qwer']);
assert.equal(p.opts.howdy, 'foo');
assert.equal(p.cmds[0], 'asdf');
assert.equal(p.cmds[1], 'qwer');
}
, 'parse short with cmds': function () {
var p = new Parser(_opts);
p.parse(['asdf', '--howdy=bar', 'qwer']);
assert.equal(p.opts.howdy, 'bar');
assert.equal(p.cmds[0], 'asdf');
assert.equal(p.cmds[1], 'qwer');
}
, 'parse short null value': function () {
var p = new Parser(_opts);
p.parse(['-h']);
assert.equal(p.opts.howdy.canon, null);
}
, 'parse long null value': function () {
var p = new Parser(_opts);
p.parse(['--howdy']);
assert.equal(p.opts.howdy.canon, null);
}
, 'parse short not passed': function () {
var p = new Parser(_opts);
p.parse(['foo']);
assert.equal(p.opts.howdy, undefined);
}
, 'parse long not passed': function () {
var p = new Parser(_opts);
p.parse(['foo']);
assert.equal(p.opts.howdy, undefined);
}
, 'parse short doesn\'t exist': function () {
var p = new Parser(_opts);
try {
p.parse(['-i', 'foo']);
}
catch (e) {
assert.ok(e.message.indexOf('Unknown option') > -1);
}
}
, 'parse long doesn\'t exist': function () {
var p = new Parser(_opts);
try {
p.parse(['--hello=bar']);
}
catch (e) {
assert.ok(e.message.indexOf('Unknown option') > -1);
}
}
, 'long alias': function () {
var p = new Parser(_opts);
assert.equal(p.longOpts.derp, p.longOpts.zoom);
}
, 'short alias': function () {
var p = new Parser(_opts);
assert.equal(p.shortOpts.n, p.shortOpts.b);
}
};
module.exports = tests;