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