mirror of https://github.com/nodejs/node.git
122 lines
3.9 KiB
JavaScript
122 lines
3.9 KiB
JavaScript
|
"use strict"
|
||
|
var test = require("tap").test
|
||
|
var requireInject = require("require-inject")
|
||
|
var path = require("path")
|
||
|
|
||
|
var re = {
|
||
|
tarball: /[\/\\]a.tar.gz$/,
|
||
|
packagedir: /[\/\\]b$/,
|
||
|
packagejson: /[\/\\]b[\/\\]package.json$/,
|
||
|
nonpackagedir: /[\/\\]c$/,
|
||
|
nopackagejson: /[\/\\]c[\/\\]package.json$/,
|
||
|
remotename: /[\/\\]d$/,
|
||
|
packagedirlikegithub: /[\/\\]e[\/\\]1$/,
|
||
|
packagejsonlikegithub: /[\/\\]e[\/\\]1[\/\\]package.json$/,
|
||
|
github: /[\/\\]e[\/\\]2$/
|
||
|
}
|
||
|
|
||
|
var rps = requireInject("../index", {
|
||
|
"fs": {
|
||
|
"stat": function (path, callback) {
|
||
|
if (re.tarball.test(path)) {
|
||
|
callback(null,{isDirectory:function(){ return false }})
|
||
|
}
|
||
|
else if (re.packagedir.test(path)) {
|
||
|
callback(null,{isDirectory:function(){ return true }})
|
||
|
}
|
||
|
else if (re.packagejson.test(path)) {
|
||
|
callback(null,{})
|
||
|
}
|
||
|
else if (re.nonpackagedir.test(path)) {
|
||
|
callback(null,{isDirectory:function(){ return true }})
|
||
|
}
|
||
|
else if (re.nopackagejson.test(path)) {
|
||
|
callback(new Error("EFILENOTFOUND"))
|
||
|
}
|
||
|
else if (re.remotename.test(path)) {
|
||
|
callback(new Error("EFILENOTFOUND"))
|
||
|
}
|
||
|
else if (re.packagedirlikegithub.test(path)) {
|
||
|
callback(null,{isDirectory:function(){ return true }})
|
||
|
}
|
||
|
else if (re.packagejsonlikegithub.test(path)) {
|
||
|
callback(null,{})
|
||
|
}
|
||
|
else if (re.github.test(path)) {
|
||
|
callback(new Error("EFILENOTFOUND"))
|
||
|
}
|
||
|
else {
|
||
|
throw new Error("Unknown stat fixture path: "+path)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
test("realize-package-specifier", function (t) {
|
||
|
t.plan(10)
|
||
|
rps("a.tar.gz", function (err, result) {
|
||
|
t.is(result.type, "local", "local tarball")
|
||
|
})
|
||
|
rps("b", function (err, result) {
|
||
|
t.is(result.type, "directory", "local package directory")
|
||
|
})
|
||
|
rps("c", function (err, result) {
|
||
|
t.is(result.type, "range", "remote package, non-package local directory")
|
||
|
})
|
||
|
rps("d", function (err, result) {
|
||
|
t.is(result.type, "range", "remote package, no local directory")
|
||
|
})
|
||
|
rps("file:./a.tar.gz", function (err, result) {
|
||
|
t.is(result.type, "local", "local tarball")
|
||
|
})
|
||
|
rps("file:./b", function (err, result) {
|
||
|
t.is(result.type, "directory", "local package directory")
|
||
|
})
|
||
|
rps("file:./c", function (err, result) {
|
||
|
t.is(result.type, "local", "non-package local directory, specified with a file URL")
|
||
|
})
|
||
|
rps("file:./d", function (err, result) {
|
||
|
t.is(result.type, "local", "no local directory, specified with a file URL")
|
||
|
})
|
||
|
rps("e/1", function (err, result) {
|
||
|
t.is(result.type, "directory", "local package directory")
|
||
|
})
|
||
|
rps("e/2", function (err, result) {
|
||
|
t.is(result.type, "github", "github package dependency")
|
||
|
})
|
||
|
})
|
||
|
test("named realize-package-specifier", function (t) {
|
||
|
t.plan(10)
|
||
|
|
||
|
rps("a@a.tar.gz", function (err, result) {
|
||
|
t.is(result.type, "local", "named local tarball")
|
||
|
})
|
||
|
rps("b@b", function (err, result) {
|
||
|
t.is(result.type, "directory", "named local package directory")
|
||
|
})
|
||
|
rps("c@c", function (err, result) {
|
||
|
t.is(result.type, "tag", "remote package, non-package local directory")
|
||
|
})
|
||
|
rps("d@d", function (err, result) {
|
||
|
t.is(result.type, "tag", "remote package, no local directory")
|
||
|
})
|
||
|
rps("a@file:./a.tar.gz", function (err, result) {
|
||
|
t.is(result.type, "local", "local tarball")
|
||
|
})
|
||
|
rps("b@file:./b", function (err, result) {
|
||
|
t.is(result.type, "directory", "local package directory")
|
||
|
})
|
||
|
rps("c@file:./c", function (err, result) {
|
||
|
t.is(result.type, "local", "non-package local directory, specified with a file URL")
|
||
|
})
|
||
|
rps("d@file:./d", function (err, result) {
|
||
|
t.is(result.type, "local", "no local directory, specified with a file URL")
|
||
|
})
|
||
|
rps("e@e/1", function (err, result) {
|
||
|
t.is(result.type, "directory", "local package directory")
|
||
|
})
|
||
|
rps("e@e/2", function (err, result) {
|
||
|
t.is(result.type, "github", "github package dependency")
|
||
|
})
|
||
|
})
|