argparser
Version:
object to parse commandline-args and options.
133 lines (105 loc) • 4.63 kB
JavaScript
const ArgParser= require('../ArgParser');
const test = require('./shinout.test');
var parser = ArgParser.create();
parser.vals(['m', 'mmm', 'set-hoge']);
parser.nonvals(['h', 'hhh', 'non-val']);
parser.parse(['-h', 'aa', 'hoge', 'fuga', '--mmm', 'piyo']);
var options = parser.opt();
var args = parser.arg();
test('equal', options.h, true, 'invalid : options.h');
test('deepEqual', options['non-val'], false, 'invalid : options[non-val]');
test('deepEqual', options['non-option'], undefined, 'invalid : options[non-option]');
test('equal', args[0], 'aa', 'invalid : args[0]');
test('equal', args[1], 'hoge', 'invalid : args[1]');
test('equal', args[2], 'fuga', 'invalid : args[2]');
test('equal', parser.opt('hhh'), false, 'invalid : opt(hhh)');
test('equal', parser.opt('h'), true, 'invalid : opt(h)');
test('equal', parser.opt('h', 'hhh'), true, 'invalid : opt(h, hhh)');
test('equal', parser.opt('hhh', 'h'), true, 'invalid : opt(hhh, h)');
test('deepEqual', parser.opt('non-val'), false, 'invalid : opt(non-val)');
test('deepEqual', parser.opt('non-option'), undefined, 'invalid : opt(non-option)');
test('deepEqual', parser.opt('mmm'), 'piyo', 'invalid : opt(mmm)');
test('deepEqual', parser.opt('m'), false, 'invalid : opt(m)');
test('deepEqual', parser.opt('m', 'mmm'), 'piyo', 'invalid : opt(m, mmm)');
test('deepEqual', parser.opt('mmm', 'm'), 'piyo', 'invalid : opt(mmm, m)');
test('equal', parser.arg(0), 'aa', 'invalid : arg(0)');
test('equal', parser.arg(1), 'hoge', 'invalid : arg(1)');
test('equal', parser.arg(2), 'fuga', 'invalid : arg(2)');
test('result', 'simple option test');
parser.parse(['--set-hoge', 'foo', 'bar', '-m', '23', '-h']);
var options = parser.opt();
var args = parser.arg();
test('equal', options.h, true, 'invalid : options.h');
test('equal', options.m, '23', 'invalid : options.m');
test('equal', options['set-hoge'], 'foo', 'invalid : options[set-hoge]');
test('equal', args[0], 'bar', 'invalid : args[0]');
test('result', 'option with val test');
parser.parse(['--not-option', 'foo', 'bar', '-h']);
var options = parser.opt();
var args = parser.arg();
test('equal', options.h, true, 'invalid : options.h');
test('equal', options['not-option'], true, 'invalid : options[not-option]');
test('equal', args[0], 'foo', 'invalid : args[0]');
test('equal', args[1], 'bar', 'invalid : args[1]');
test('equal', parser.getInvalids()[0], 'not-option');
test('equal', parser.getInvalids(0), 'not-option', 'invalid : getInvalids(0)');
test('result', 'invalid option test');
parser.parse(['-this-is-not-option', 'foo', 'bar', '-h']);
var options = parser.opt();
var args = parser.arg();
test('equal', options.h, true, 'invalid : options.h');
test('equal', options['this-is-not-option'], null, 'invalid : options[this-is-not-option]');
test('equal', args[0], '-this-is-not-option', 'invalid : args[0]');
test('equal', args[1], 'foo', 'invalid : args[1]');
test('equal', args[2], 'bar', 'invalid : args[2]');
test('result', '-long-name test');
parser.parse();
test('ok', process.argv[0], 'process.argv[0] is deleted');
test('ok', process.argv[1], 'process.argv[1] is deleted');
test('result', 'argv test');
// getOptionString
var opts = {s: "shortval", looong: "longval", innt: 1, nullval: null, floaat: 0.222, falseval: false};
test('equal', ArgParser.getOptionString(opts), '-s shortval --looong longval --innt 1 --floaat 0.222');
test('result', 'getOptionString test');
// file
parser = ArgParser.create().files(0, "hoge", "f");
try {
parser.parse([__filename, '-f', __filename, "--hoge", "notexistfile"]);
}
catch (e) {
test('ok', e.message.match("notexistfile"));
}
test('result', 'file test');
// dir
parser = ArgParser.dirs(0, "hoge", "f");
try {
parser.parse([__dirname, '-f', __dirname, "--hoge", __filename]);
}
catch (e) {
test('ok', e.message.match(__filename));
}
// num
parser = ArgParser.nums(0, "hoge", "f");
parser.parse(["3", '-f', "43.3", "--hoge", "-22.2"]);
test("strictEqual", parser.arg(0), 3);
test("strictEqual", parser.opt("f"), 43.3);
test("strictEqual", parser.opt("hoge"), -22.2);
test('result', 'num test');
//default
parser = ArgParser.defaults({ "hoge" : 14 });
parser.parse(["eeeee"]);
test("strictEqual", parser.opt("hoge"), 14);
parser.parse(["--hoge", "13"]);
test("strictEqual", parser.opt("hoge"), 13);
test('result', 'default test');
try {
parser = ArgParser.nonvals("s").defaults({ "s" : 14 });
test("ng");
}
catch (e) {
test("ok", e.message.match("cannot have default"));
}
// ap shortcut creating
var parsed = ArgParser.parse(['ageage']);
test("strictEqual", parsed.arg(0), "ageage");
test('result', 'shortcut test');