You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

61 lines
1.7 KiB

var test = require("tap").test
var common = require("../common-tap.js")
var path = require("path")
var rimraf = require("rimraf")
var pkg = path.resolve(__dirname, "lifecycle-path")
var fs = require("fs")
var link = path.resolve(pkg, "node-bin")
var PATH
if (process.platform === "win32") {
// On Windows the 'comspec' environment variable is used,
// so cmd.exe does not need to be on the path.
PATH = "C:\\foo\\bar"
} else {
// On non-Windows, without the path to the shell, nothing usually works.
PATH = "/bin:/usr/bin"
}
test("setup", function (t) {
rimraf.sync(link)
fs.symlinkSync(path.dirname(process.execPath), link, "dir")
t.end()
})
test("make sure the path is correct", function (t) {
common.npm(["run-script", "path"], {
cwd: pkg,
env: {
PATH: PATH,
stdio: [ 0, "pipe", 2 ]
}
}, function (er, code, stdout) {
if (er) throw er
t.equal(code, 0, "exit code")
// remove the banner, we just care about the last line
stdout = stdout.trim().split(/\r|\n/).pop()
var pathSplit = process.platform === "win32" ? ";" : ":"
var root = path.resolve(__dirname, "../..")
var actual = stdout.split(pathSplit).map(function (p) {
if (p.indexOf(root) === 0) {
p = "{{ROOT}}" + p.substr(root.length)
}
return p.replace(/\\/g, "/")
})
// get the ones we tacked on, then the system-specific requirements
var expect = [
"{{ROOT}}/bin/node-gyp-bin",
"{{ROOT}}/test/tap/lifecycle-path/node_modules/.bin"
].concat(PATH.split(pathSplit).map(function (p) {
return p.replace(/\\/g, "/")
}))
t.same(actual, expect)
t.end()
})
})
test("clean", function (t) {
rimraf.sync(link)
t.end()
})