blob: b72826b901a36a7db56ee29f92f1960c8a3536d1 [file] [log] [blame]
var npa = require("../npa.js")
var path = require("path")
require("tap").test("basic", function (t) {
t.setMaxListeners(999)
var tests = {
"foo@1.2": {
name: "foo",
type: "range",
spec: ">=1.2.0 <1.3.0",
raw: "foo@1.2",
rawSpec: "1.2"
},
"@foo/bar": {
raw: "@foo/bar",
name: "@foo/bar",
scope: "@foo",
rawSpec: "",
spec: "latest",
type: "tag"
},
"@foo/bar@": {
raw: "@foo/bar@",
name: "@foo/bar",
scope: "@foo",
rawSpec: "",
spec: "latest",
type: "tag"
},
"@foo/bar@baz": {
raw: "@foo/bar@baz",
name: "@foo/bar",
scope: "@foo",
rawSpec: "baz",
spec: "baz",
type: "tag"
},
"@f fo o al/ a d s ;f ": {
raw: "@f fo o al/ a d s ;f",
name: null,
rawSpec: "@f fo o al/ a d s ;f",
spec: path.resolve("@f fo o al/ a d s ;f"),
type: "local"
},
"foo@1.2.3": {
name: "foo",
type: "version",
spec: "1.2.3",
raw: "foo@1.2.3"
},
"foo@=v1.2.3": {
name: "foo",
type: "version",
spec: "1.2.3",
raw: "foo@=v1.2.3",
rawSpec: "=v1.2.3"
},
"git+ssh://git@notgithub.com/user/foo#1.2.3": {
name: null,
type: "git",
spec: "ssh://git@notgithub.com/user/foo#1.2.3",
raw: "git+ssh://git@notgithub.com/user/foo#1.2.3"
},
"git+file://path/to/repo#1.2.3": {
name: null,
type: "git",
spec: "file://path/to/repo#1.2.3",
raw: "git+file://path/to/repo#1.2.3"
},
"git://notgithub.com/user/foo": {
name: null,
type: "git",
spec: "git://notgithub.com/user/foo",
raw: "git://notgithub.com/user/foo"
},
"@foo/bar@git+ssh://notgithub.com/user/foo": {
name: "@foo/bar",
scope: "@foo",
spec: "ssh://notgithub.com/user/foo",
rawSpec: "git+ssh://notgithub.com/user/foo",
raw: "@foo/bar@git+ssh://notgithub.com/user/foo"
},
"/path/to/foo": {
name: null,
type: "local",
spec: path.resolve(__dirname, "/path/to/foo"),
raw: "/path/to/foo"
},
"file:path/to/foo": {
name: null,
type: "local",
spec: "path/to/foo",
raw: "file:path/to/foo"
},
"file:~/path/to/foo": {
name: null,
type: "local",
spec: "~/path/to/foo",
raw: "file:~/path/to/foo"
},
"file:../path/to/foo": {
name: null,
type: "local",
spec: "../path/to/foo",
raw: "file:../path/to/foo"
},
"file:///path/to/foo": {
name: null,
type: "local",
spec: "/path/to/foo",
raw: "file:///path/to/foo"
},
"https://server.com/foo.tgz": {
name: null,
type: "remote",
spec: "https://server.com/foo.tgz",
raw: "https://server.com/foo.tgz"
},
"foo@latest": {
name: "foo",
type: "tag",
spec: "latest",
raw: "foo@latest"
},
"foo": {
name: "foo",
type: "tag",
spec: "latest",
raw: "foo"
}
}
Object.keys(tests).forEach(function (arg) {
var res = npa(arg)
t.type(res, "Result", arg + " is result")
t.has(res, tests[arg], arg + " matches expectations")
})
// Completely unreasonable invalid garbage throws an error
t.throws(function() {
npa("this is not a \0 valid package name or url")
})
t.throws(function() {
npa("gopher://yea right")
}, "Unsupported URL Type: gopher://yea right")
t.end()
})