react / wstein / node_modules / jest-cli / node_modules / istanbul / node_modules / nopt / test / basic.js
80684 viewsvar nopt = require("../")1, test = require('tap').test234test("passing a string results in a string", function (t) {5var parsed = nopt({ key: String }, {}, ["--key", "myvalue"], 0)6t.same(parsed.key, "myvalue")7t.end()8})910// https://github.com/npm/nopt/issues/3111test("Empty String results in empty string, not true", function (t) {12var parsed = nopt({ empty: String }, {}, ["--empty"], 0)13t.same(parsed.empty, "")14t.end()15})1617test("~ path is resolved to $HOME", function (t) {18var path = require("path")19if (!process.env.HOME) process.env.HOME = "/tmp"20var parsed = nopt({key: path}, {}, ["--key=~/val"], 0)21t.same(parsed.key, path.resolve(process.env.HOME, "val"))22t.end()23})2425// https://github.com/npm/nopt/issues/2426test("Unknown options are not parsed as numbers", function (t) {27var parsed = nopt({"parse-me": Number}, null, ['--leave-as-is=1.20', '--parse-me=1.20'], 0)28t.equal(parsed['leave-as-is'], '1.20')29t.equal(parsed['parse-me'], 1.2)30t.end()31});3233test("other tests", function (t) {3435var util = require("util")36, Stream = require("stream")37, path = require("path")38, url = require("url")3940, shorthands =41{ s : ["--loglevel", "silent"]42, d : ["--loglevel", "info"]43, dd : ["--loglevel", "verbose"]44, ddd : ["--loglevel", "silly"]45, noreg : ["--no-registry"]46, reg : ["--registry"]47, "no-reg" : ["--no-registry"]48, silent : ["--loglevel", "silent"]49, verbose : ["--loglevel", "verbose"]50, h : ["--usage"]51, H : ["--usage"]52, "?" : ["--usage"]53, help : ["--usage"]54, v : ["--version"]55, f : ["--force"]56, desc : ["--description"]57, "no-desc" : ["--no-description"]58, "local" : ["--no-global"]59, l : ["--long"]60, p : ["--parseable"]61, porcelain : ["--parseable"]62, g : ["--global"]63}6465, types =66{ aoa: Array67, nullstream: [null, Stream]68, date: Date69, str: String70, browser : String71, cache : path72, color : ["always", Boolean]73, depth : Number74, description : Boolean75, dev : Boolean76, editor : path77, force : Boolean78, global : Boolean79, globalconfig : path80, group : [String, Number]81, gzipbin : String82, logfd : [Number, Stream]83, loglevel : ["silent","win","error","warn","info","verbose","silly"]84, long : Boolean85, "node-version" : [false, String]86, npaturl : url87, npat : Boolean88, "onload-script" : [false, String]89, outfd : [Number, Stream]90, parseable : Boolean91, pre: Boolean92, prefix: path93, proxy : url94, "rebuild-bundle" : Boolean95, registry : url96, searchopts : String97, searchexclude: [null, String]98, shell : path99, t: [Array, String]100, tag : String101, tar : String102, tmp : path103, "unsafe-perm" : Boolean104, usage : Boolean105, user : String106, username : String107, userconfig : path108, version : Boolean109, viewer: path110, _exit : Boolean111, path: path112}113114; [["-v", {version:true}, []]115,["---v", {version:true}, []]116,["ls -s --no-reg connect -d",117{loglevel:"info",registry:null},["ls","connect"]]118,["ls ---s foo",{loglevel:"silent"},["ls","foo"]]119,["ls --registry blargle", {}, ["ls"]]120,["--no-registry", {registry:null}, []]121,["--no-color true", {color:false}, []]122,["--no-color false", {color:true}, []]123,["--no-color", {color:false}, []]124,["--color false", {color:false}, []]125,["--color --logfd 7", {logfd:7,color:true}, []]126,["--color=true", {color:true}, []]127,["--logfd=10", {logfd:10}, []]128,["--tmp=/tmp -tar=gtar",{tmp:"/tmp",tar:"gtar"},[]]129,["--tmp=tmp -tar=gtar",130{tmp:path.resolve(process.cwd(), "tmp"),tar:"gtar"},[]]131,["--logfd x", {}, []]132,["a -true -- -no-false", {true:true},["a","-no-false"]]133,["a -no-false", {false:false},["a"]]134,["a -no-no-true", {true:true}, ["a"]]135,["a -no-no-no-false", {false:false}, ["a"]]136,["---NO-no-No-no-no-no-nO-no-no"+137"-No-no-no-no-no-no-no-no-no"+138"-no-no-no-no-NO-NO-no-no-no-no-no-no"+139"-no-body-can-do-the-boogaloo-like-I-do"140,{"body-can-do-the-boogaloo-like-I-do":false}, []]141,["we are -no-strangers-to-love "+142"--you-know=the-rules --and=so-do-i "+143"---im-thinking-of=a-full-commitment "+144"--no-you-would-get-this-from-any-other-guy "+145"--no-gonna-give-you-up "+146"-no-gonna-let-you-down=true "+147"--no-no-gonna-run-around false "+148"--desert-you=false "+149"--make-you-cry false "+150"--no-tell-a-lie "+151"--no-no-and-hurt-you false"152,{"strangers-to-love":false153,"you-know":"the-rules"154,"and":"so-do-i"155,"you-would-get-this-from-any-other-guy":false156,"gonna-give-you-up":false157,"gonna-let-you-down":false158,"gonna-run-around":false159,"desert-you":false160,"make-you-cry":false161,"tell-a-lie":false162,"and-hurt-you":false163},["we", "are"]]164,["-t one -t two -t three"165,{t: ["one", "two", "three"]}166,[]]167,["-t one -t null -t three four five null"168,{t: ["one", "null", "three"]}169,["four", "five", "null"]]170,["-t foo"171,{t:["foo"]}172,[]]173,["--no-t"174,{t:["false"]}175,[]]176,["-no-no-t"177,{t:["true"]}178,[]]179,["-aoa one -aoa null -aoa 100"180,{aoa:["one", null, '100']}181,[]]182,["-str 100"183,{str:"100"}184,[]]185,["--color always"186,{color:"always"}187,[]]188,["--no-nullstream"189,{nullstream:null}190,[]]191,["--nullstream false"192,{nullstream:null}193,[]]194,["--notadate=2011-01-25"195,{notadate: "2011-01-25"}196,[]]197,["--date 2011-01-25"198,{date: new Date("2011-01-25")}199,[]]200,["-cl 1"201,{config: true, length: 1}202,[]203,{config: Boolean, length: Number, clear: Boolean}204,{c: "--config", l: "--length"}]205,["--acount bla"206,{"acount":true}207,["bla"]208,{account: Boolean, credentials: Boolean, options: String}209,{a:"--account", c:"--credentials",o:"--options"}]210,["--clear"211,{clear:true}212,[]213,{clear:Boolean,con:Boolean,len:Boolean,exp:Boolean,add:Boolean,rep:Boolean}214,{c:"--con",l:"--len",e:"--exp",a:"--add",r:"--rep"}]215,["--file -"216,{"file":"-"}217,[]218,{file:String}219,{}]220,["--file -"221,{"file":true}222,["-"]223,{file:Boolean}224,{}]225,["--path"226,{"path":null}227,[]]228,["--path ."229,{"path":process.cwd()}230,[]]231].forEach(function (test) {232var argv = test[0].split(/\s+/)233, opts = test[1]234, rem = test[2]235, actual = nopt(test[3] || types, test[4] || shorthands, argv, 0)236, parsed = actual.argv237delete actual.argv238for (var i in opts) {239var e = JSON.stringify(opts[i])240, a = JSON.stringify(actual[i] === undefined ? null : actual[i])241if (e && typeof e === "object") {242t.deepEqual(e, a)243} else {244t.equal(e, a)245}246}247t.deepEqual(rem, parsed.remain)248})249t.end()250})251252253