| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 | 
							- var nopt = require("../")
 
-   , test = require('tap').test
 
- test("passing a string results in a string", function (t) {
 
-   var parsed = nopt({ key: String }, {}, ["--key", "myvalue"], 0)
 
-   t.same(parsed.key, "myvalue")
 
-   t.end()
 
- })
 
- // https://github.com/npm/nopt/issues/31
 
- test("Empty String results in empty string, not true", function (t) {
 
-   var parsed = nopt({ empty: String }, {}, ["--empty"], 0)
 
-   t.same(parsed.empty, "")
 
-   t.end()
 
- })
 
- test("~ path is resolved to $HOME", function (t) {
 
-   var path = require("path")
 
-   if (!process.env.HOME) process.env.HOME = "/tmp"
 
-   var parsed = nopt({key: path}, {}, ["--key=~/val"], 0)
 
-   t.same(parsed.key, path.resolve(process.env.HOME, "val"))
 
-   t.end()
 
- })
 
- // https://github.com/npm/nopt/issues/24
 
- test("Unknown options are not parsed as numbers", function (t) {
 
-     var parsed = nopt({"parse-me": Number}, null, ['--leave-as-is=1.20', '--parse-me=1.20'], 0)
 
-     t.equal(parsed['leave-as-is'], '1.20')
 
-     t.equal(parsed['parse-me'], 1.2)
 
-     t.end()
 
- });
 
- // https://github.com/npm/nopt/issues/48
 
- test("Check types based on name of type", function (t) {
 
-   var parsed = nopt({"parse-me": {name: "Number"}}, null, ['--parse-me=1.20'], 0)
 
-   t.equal(parsed['parse-me'], 1.2)
 
-   t.end()
 
- })
 
- test("Missing types are not parsed", function (t) {
 
-   var parsed = nopt({"parse-me": {}}, null, ['--parse-me=1.20'], 0)
 
-   //should only contain argv
 
-   t.equal(Object.keys(parsed).length, 1)
 
-   t.end()
 
- })
 
- test("Types passed without a name are not parsed", function (t) {
 
-   var parsed = nopt({"parse-me": {}}, {}, ['--parse-me=1.20'], 0)
 
-   //should only contain argv
 
-   t.equal(Object.keys(parsed).length, 1)
 
-   t.end()
 
- })
 
- test("other tests", function (t) {
 
-   var util = require("util")
 
-     , Stream = require("stream")
 
-     , path = require("path")
 
-     , url = require("url")
 
-     , shorthands =
 
-       { s : ["--loglevel", "silent"]
 
-       , d : ["--loglevel", "info"]
 
-       , dd : ["--loglevel", "verbose"]
 
-       , ddd : ["--loglevel", "silly"]
 
-       , noreg : ["--no-registry"]
 
-       , reg : ["--registry"]
 
-       , "no-reg" : ["--no-registry"]
 
-       , silent : ["--loglevel", "silent"]
 
-       , verbose : ["--loglevel", "verbose"]
 
-       , h : ["--usage"]
 
-       , H : ["--usage"]
 
-       , "?" : ["--usage"]
 
-       , help : ["--usage"]
 
-       , v : ["--version"]
 
-       , f : ["--force"]
 
-       , desc : ["--description"]
 
-       , "no-desc" : ["--no-description"]
 
-       , "local" : ["--no-global"]
 
-       , l : ["--long"]
 
-       , p : ["--parseable"]
 
-       , porcelain : ["--parseable"]
 
-       , g : ["--global"]
 
-       }
 
-     , types =
 
-       { aoa: Array
 
-       , nullstream: [null, Stream]
 
-       , date: Date
 
-       , str: String
 
-       , browser : String
 
-       , cache : path
 
-       , color : ["always", Boolean]
 
-       , depth : Number
 
-       , description : Boolean
 
-       , dev : Boolean
 
-       , editor : path
 
-       , force : Boolean
 
-       , global : Boolean
 
-       , globalconfig : path
 
-       , group : [String, Number]
 
-       , gzipbin : String
 
-       , logfd : [Number, Stream]
 
-       , loglevel : ["silent","win","error","warn","info","verbose","silly"]
 
-       , long : Boolean
 
-       , "node-version" : [false, String]
 
-       , npaturl : url
 
-       , npat : Boolean
 
-       , "onload-script" : [false, String]
 
-       , outfd : [Number, Stream]
 
-       , parseable : Boolean
 
-       , pre: Boolean
 
-       , prefix: path
 
-       , proxy : url
 
-       , "rebuild-bundle" : Boolean
 
-       , registry : url
 
-       , searchopts : String
 
-       , searchexclude: [null, String]
 
-       , shell : path
 
-       , t: [Array, String]
 
-       , tag : String
 
-       , tar : String
 
-       , tmp : path
 
-       , "unsafe-perm" : Boolean
 
-       , usage : Boolean
 
-       , user : String
 
-       , username : String
 
-       , userconfig : path
 
-       , version : Boolean
 
-       , viewer: path
 
-       , _exit : Boolean
 
-       , path: path
 
-       }
 
-   ; [["-v", {version:true}, []]
 
-     ,["---v", {version:true}, []]
 
-     ,["ls -s --no-reg connect -d",
 
-       {loglevel:"info",registry:null},["ls","connect"]]
 
-     ,["ls ---s foo",{loglevel:"silent"},["ls","foo"]]
 
-     ,["ls --registry blargle", {}, ["ls"]]
 
-     ,["--no-registry", {registry:null}, []]
 
-     ,["--no-color true", {color:false}, []]
 
-     ,["--no-color false", {color:true}, []]
 
-     ,["--no-color", {color:false}, []]
 
-     ,["--color false", {color:false}, []]
 
-     ,["--color --logfd 7", {logfd:7,color:true}, []]
 
-     ,["--color=true", {color:true}, []]
 
-     ,["--logfd=10", {logfd:10}, []]
 
-     ,["--tmp=/tmp -tar=gtar",{tmp:"/tmp",tar:"gtar"},[]]
 
-     ,["--tmp=tmp -tar=gtar",
 
-       {tmp:path.resolve(process.cwd(), "tmp"),tar:"gtar"},[]]
 
-     ,["--logfd x", {}, []]
 
-     ,["a -true -- -no-false", {true:true},["a","-no-false"]]
 
-     ,["a -no-false", {false:false},["a"]]
 
-     ,["a -no-no-true", {true:true}, ["a"]]
 
-     ,["a -no-no-no-false", {false:false}, ["a"]]
 
-     ,["---NO-no-No-no-no-no-nO-no-no"+
 
-       "-No-no-no-no-no-no-no-no-no"+
 
-       "-no-no-no-no-NO-NO-no-no-no-no-no-no"+
 
-       "-no-body-can-do-the-boogaloo-like-I-do"
 
-      ,{"body-can-do-the-boogaloo-like-I-do":false}, []]
 
-     ,["we are -no-strangers-to-love "+
 
-       "--you-know=the-rules --and=so-do-i "+
 
-       "---im-thinking-of=a-full-commitment "+
 
-       "--no-you-would-get-this-from-any-other-guy "+
 
-       "--no-gonna-give-you-up "+
 
-       "-no-gonna-let-you-down=true "+
 
-       "--no-no-gonna-run-around false "+
 
-       "--desert-you=false "+
 
-       "--make-you-cry false "+
 
-       "--no-tell-a-lie "+
 
-       "--no-no-and-hurt-you false"
 
-      ,{"strangers-to-love":false
 
-       ,"you-know":"the-rules"
 
-       ,"and":"so-do-i"
 
-       ,"you-would-get-this-from-any-other-guy":false
 
-       ,"gonna-give-you-up":false
 
-       ,"gonna-let-you-down":false
 
-       ,"gonna-run-around":false
 
-       ,"desert-you":false
 
-       ,"make-you-cry":false
 
-       ,"tell-a-lie":false
 
-       ,"and-hurt-you":false
 
-       },["we", "are"]]
 
-     ,["-t one -t two -t three"
 
-      ,{t: ["one", "two", "three"]}
 
-      ,[]]
 
-     ,["-t one -t null -t three four five null"
 
-      ,{t: ["one", "null", "three"]}
 
-      ,["four", "five", "null"]]
 
-     ,["-t foo"
 
-      ,{t:["foo"]}
 
-      ,[]]
 
-     ,["--no-t"
 
-      ,{t:["false"]}
 
-      ,[]]
 
-     ,["-no-no-t"
 
-      ,{t:["true"]}
 
-      ,[]]
 
-     ,["-aoa one -aoa null -aoa 100"
 
-      ,{aoa:["one", null, '100']}
 
-      ,[]]
 
-     ,["-str 100"
 
-      ,{str:"100"}
 
-      ,[]]
 
-     ,["--color always"
 
-      ,{color:"always"}
 
-      ,[]]
 
-     ,["--no-nullstream"
 
-      ,{nullstream:null}
 
-      ,[]]
 
-     ,["--nullstream false"
 
-      ,{nullstream:null}
 
-      ,[]]
 
-     ,["--notadate=2011-01-25"
 
-      ,{notadate: "2011-01-25"}
 
-      ,[]]
 
-     ,["--date 2011-01-25"
 
-      ,{date: new Date("2011-01-25")}
 
-      ,[]]
 
-     ,["-cl 1"
 
-      ,{config: true, length: 1}
 
-      ,[]
 
-      ,{config: Boolean, length: Number, clear: Boolean}
 
-      ,{c: "--config", l: "--length"}]
 
-     ,["--acount bla"
 
-      ,{"acount":true}
 
-      ,["bla"]
 
-      ,{account: Boolean, credentials: Boolean, options: String}
 
-      ,{a:"--account", c:"--credentials",o:"--options"}]
 
-     ,["--clear"
 
-      ,{clear:true}
 
-      ,[]
 
-      ,{clear:Boolean,con:Boolean,len:Boolean,exp:Boolean,add:Boolean,rep:Boolean}
 
-      ,{c:"--con",l:"--len",e:"--exp",a:"--add",r:"--rep"}]
 
-     ,["--file -"
 
-      ,{"file":"-"}
 
-      ,[]
 
-      ,{file:String}
 
-      ,{}]
 
-     ,["--file -"
 
-      ,{"file":true}
 
-      ,["-"]
 
-      ,{file:Boolean}
 
-      ,{}]
 
-     ,["--path"
 
-      ,{"path":null}
 
-      ,[]]
 
-     ,["--path ."
 
-      ,{"path":process.cwd()}
 
-      ,[]]
 
-     ].forEach(function (test) {
 
-       var argv = test[0].split(/\s+/)
 
-         , opts = test[1]
 
-         , rem = test[2]
 
-         , actual = nopt(test[3] || types, test[4] || shorthands, argv, 0)
 
-         , parsed = actual.argv
 
-       delete actual.argv
 
-       for (var i in opts) {
 
-         var e = JSON.stringify(opts[i])
 
-           , a = JSON.stringify(actual[i] === undefined ? null : actual[i])
 
-         if (e && typeof e === "object") {
 
-           t.deepEqual(e, a)
 
-         } else {
 
-           t.equal(e, a)
 
-         }
 
-       }
 
-       t.deepEqual(rem, parsed.remain)
 
-     })
 
-   t.end()
 
- })
 
 
  |