Project rename

This commit is contained in:
2019-03-24 08:28:57 +01:00
parent 1728e0e6e1
commit 7926230faf
7262 changed files with 0 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
var nomnom = require("../nomnom");
exports.testVersion = function(test) {
test.expect(1);
nomnom().options({
date: {
callback: function(date) {
test.equal(date, "2010-02-03", "date should match value")
}
}
}).parse(["--date=2010-02-03"]);
test.done();
}
exports.testReturnString = function(test) {
test.expect(1);
nomnom().options({
version: {
flag: true,
callback: function() {
return "v0.3";
}
}
})
.printer(function(string) {
test.equal(0, string.indexOf("v0.3"))
test.done();
})
.parse(["--version"]);
}
+120
View File
@@ -0,0 +1,120 @@
var nomnom = require("../nomnom");
function strip(str) {
return str.replace(/\s+/g, '');
}
exports.testCallback = function(test) {
test.expect(1);
var parser = nomnom();
parser.command('run').callback(function(options) {
test.equal(options.v, 3);
});
parser.command('other').callback(function() {
test.ok(false, "callback for other command shouldn't be called");
});
parser.parse(["run","-v", "3"]);
test.done();
}
exports.testMissingCommand = function(test) {
test.expect(1);
var parser = nomnom().scriptName("test");
parser.command('run');
parser.printer(function(string) {
test.equal(string, "test: no such command 'other'");
test.done();
});
parser.parse(["other"]);
}
exports.testNoCommand = function(test) {
test.expect(2);
var parser = nomnom();
parser.nocommand()
.options({
version: {
flag: true
}
})
.callback(function(options) {
test.strictEqual(options.version, true);
})
.usage("fallback usage");
parser.command('run');
var options = parser.parse(["--version"]);
test.strictEqual(options.version, true);
test.done();
}
function createParser() {
var parser = nomnom().scriptName("test")
.options({
debug: {
flag: true
}
});
parser.command('run')
.options({
file: {
help: 'file to run'
}
})
.help("run all");
parser.command('test').usage("test usage");
parser.nocommand()
.options({
verbose: {
flag: true
}
})
.help("nocommand");
return parser;
}
exports.testUsage = function(test) {
test.expect(4);
var parser = createParser();
parser.printer(function(string) {
test.equal(strip(string), "testusage");
});
parser.parse(["test", "-h"]);
parser = createParser().nocolors();
parser.printer(function(string) {
test.equal(strip(string), "Usage:testrun[options]Options:--debug--filefiletorunrunall");
});
parser.parse(["run", "-h"]);
parser = createParser().nocolors();
parser.printer(function(string) {
test.equal(strip(string), "Usage:test[command][options]commandoneof:run,testOptions:--debug--verbosenocommand");
});
parser.parse(["-h"]);
parser = createParser().nocolors();
parser.nocommand()
.usage("fallback");
parser.printer(function(string) {
test.equal(strip(string), "fallback");
});
parser.parse(["-h"]);
test.done();
}
+60
View File
@@ -0,0 +1,60 @@
var nomnom = require("../nomnom");
var opts = {
file: {
position: 0,
required: true
}
}
var parser = nomnom().options(opts);
exports.testFlag = function(test) {
test.expect(1);
nomnom().options({
file: {
position: 0,
}
})
.printer(function(string) {
test.equal(0, string.indexOf("'--key1' expects a value"))
test.done();
})
.parse(["--key1"]);
}
exports.testRequired = function(test) {
test.expect(1);
nomnom().options({
file: {
required: true
}
})
.printer(function(string) {
test.equal(0, string.trim().indexOf("file argument is required"))
test.done();
})
.nocolors()
.parse([]);
}
exports.testChoices = function(test) {
test.expect(2);
var parser = nomnom().options({
color: {
choices: ['green', 'blue']
}
})
.printer(function(string) {
test.equal(0, string.indexOf("color must be one of: green, blue"))
});
parser.parse(['--color', 'red']);
var options = parser.parse(['--color', 'green']);
test.equal(options.color, 'green');
test.done();
}
+70
View File
@@ -0,0 +1,70 @@
var nomnom = require("../nomnom");
var opts = {
pos1: {
position: 0
},
pos2: {
position: 1
},
flag1: {
flag: true
},
debug: {
abbr: 'd'
},
numLines: {
abbr: 'n',
full: 'num-lines'
},
version: {
string: '-v, --version'
},
config: {
string: '-c FILE, --config=FILE'
},
skey : {
string: '-k val'
},
skey2: {
string: '-k2 val2, --key2 val2'
},
skey3: {
string: '--key3=val'
},
skey4: {
string: '--key4=val, -y val'
}
}
var parser = nomnom().options(opts);
exports.testPositional = function(test) {
var options = parser.parse(["--flag1", "val1", "--config", "file", "val2"]);
test.equal(options.pos1, "val1");
test.equal(options.pos2, "val2");
test.deepEqual(options._, ["val1", "val2"])
test.done();
}
exports.testAbbr = function(test) {
var options = parser.parse(["-d", "yes", "--num-lines", "3"]);
test.equal(options.debug, "yes")
test.equal(options.numLines, 3)
test.done();
}
exports.testString = function(test) {
var options = parser.parse(["-k", "val", "--config=test.js",
"--key2", "val2", "--key3", "val3", "--key4=val4", "-v", "v0.3"]);
test.equal(options.version, "v0.3")
test.equal(options.config, "test.js")
test.equal(options.skey, "val")
test.equal(options.skey2, "val2")
test.equal(options.skey3, "val3")
test.equal(options.skey4, "val4")
test.done();
}
+44
View File
@@ -0,0 +1,44 @@
var nomnom = require("../nomnom");
var parser = nomnom()
.option('debug', {
abbr: 'x',
flag: true,
help: 'Print debugging info'
})
.option('config', {
abbr: 'c',
default: 'config.json',
help: 'JSON file with tests to run'
})
.option('version', {
flag: true,
help: 'print version and exit',
callback: function() {
return "version 1.2.4";
}
});
exports.testOption = function(test) {
var opts = parser.parse(["-x", "--no-verbose"]);
test.strictEqual(opts.debug, true);
test.equal(opts.config, "config.json");
test.done();
}
exports.testCommandOption = function(test) {
var parser = nomnom()
parser.command('test')
.option('fruit', {
abbr: 'f',
flag: true
})
var opts = parser.parse(["test", "-f"]);
test.strictEqual(opts.fruit, true);
test.done();
}
+65
View File
@@ -0,0 +1,65 @@
var nomnom = require("../nomnom");
var parser = nomnom()
.option("addr", {
abbr: "a",
help: "host:port address",
transform: function(value) {
var parts = value.split(":");
return {host: parts[0], port: Number(parts[1])};
}
})
.option("string", {
abbr: "s",
help: "always a string",
transform: function(value) {
return value.toString();
}
});
exports.testTransformComplexValue = function(test) {
var opts = parser.parse(["-a", "localhost:1234"]);
test.strictEqual(opts.addr.host, "localhost");
test.strictEqual(opts.addr.port, 1234);
test.done();
};
exports.testTransformString = function(test) {
var opts = parser.parse(["-s", "3"]);
test.strictEqual(opts.string, "3");
test.done();
};
exports.testTransformCommand = function(test) {
test.expect(1);
var parser = nomnom().scriptName("test")
.options({
addr: {
transform: function(value) {
var parts = value.split(":");
return {host: parts[0], port: Number(parts[1])};
}
}
});
parser.command("run")
.options({
string: {
transform: function(value) {
return value.toString();
}
}
})
.callback(function(options) {
test.strictEqual(options.string, "true");
});
parser.parse(["run", "--string=true"]);
test.done();
};
+121
View File
@@ -0,0 +1,121 @@
var nomnom = require("../nomnom");
function strip(str) {
return str.replace(/\s+/g, '');
};
var opts = {
apple: {
abbr: 'a',
help: 'how many apples'
},
banana: {
full: "b-nana"
},
carrot: {
string: '-c NUM, --carrots=NUM'
},
dill: {
metavar: 'PICKLE'
},
egg: {
position: 0,
help: 'robin'
}
}
var parser = nomnom().options(opts).help("all the best foods").scriptName("test").nocolors();
var expected = "Usage:test[egg][options]eggrobinOptions:-a,--applehowmanyapples--b-nana-cNUM,--carrots=NUM--dillPICKLEallthebestfoods"
exports.testH = function(test) {
test.expect(1);
parser.printer(function(string) {
test.equal(strip(string), expected)
test.done();
})
.nocolors()
.parse(["-h"]);
}
exports.testHelp = function(test) {
test.expect(1);
parser.printer(function(string) {
test.equal(strip(string), expected)
test.done();
})
.nocolors()
.parse(["--help"]);
}
exports.testScriptName = function(test) {
test.expect(1);
nomnom()
.script("test")
.printer(function(string) {
test.equal(strip(string),"Usage:test")
test.done();
})
.nocolors()
.parse(["-h"]);
}
exports.testUsage = function(test) {
test.expect(1);
parser
.usage("test usage")
.printer(function(string) {
test.equal(string, "test usage")
test.done();
})
.nocolors()
.parse(["--help"]);
}
exports.testHidden = function(test) {
test.expect(1);
nomnom().options({
file: {
hidden: true
}
})
.scriptName("test")
.printer(function(string) {
test.equal(strip("Usage:test[options]Options:"), strip(string))
test.done();
})
.nocolors()
.parse(["-h"]);
}
exports.testRequiredOptional = function(test) {
test.expect(1);
nomnom().options({
foo: {
position: 0,
required: true,
help: 'The foo'
},
bar: {
position: 1,
help: 'The bar'
}
})
.scriptName("test")
.printer(function(string) {
test.equal(strip("Usage:test<foo>[bar]fooThefoobarThebar"), strip(string))
test.done();
})
.nocolors()
.parse(["-h"]);
}
+75
View File
@@ -0,0 +1,75 @@
var nomnom = require("../nomnom");
var opts = {
debug: {
flag: true
},
verbose: {
flag: true,
default: true
},
list1: {
list: true
},
list2: {
list: true
},
list3: {
position: 1,
list: true
},
num1: {
type: "string"
},
def1: {
default: "val1"
},
def2: {
default: "val1"
}
}
var parser = nomnom().options(opts);
exports.testFlag = function(test) {
var options = parser.parse(["--debug", "pos0", "--no-verbose"]);
test.strictEqual(options.debug, true);
test.strictEqual(options.verbose, false);
test.equal(options[0], "pos0");
test.equal(options._[0], "pos0");
test.done();
}
exports.testList = function(test) {
var options = parser.parse(["pos0", "pos1", "--list1=val0", "--list2", "val1",
"--list2", "val2", "pos2"]);
test.deepEqual(options.list1, ["val0"]);
test.deepEqual(options.list2, ["val1", "val2"]);
test.deepEqual(options.list3, ["pos1", "pos2"]);
test.done();
}
exports.testDefault = function(test) {
var options = parser.parse(["--def2", "val2", "--def3", "val3"]);
test.strictEqual(options.def1, "val1");
test.strictEqual(options.def2, "val2");
test.strictEqual(options.def3, "val3");
test.done();
}
exports.testTypes = function(test) {
var options = parser.parseArgs(["", "-x", "3.14", "-w", "true", "-q", "120",
"--num1", "4"]);
test.strictEqual(options[0], "");
test.strictEqual(options.x, 3.14);
test.strictEqual(options.w, true);
test.strictEqual(options.q, 120);
test.strictEqual(options.num1, "4");
test.done();
}