diff options
Diffstat (limited to 'deps/npm/test/tap/lifecycle-path.js')
-rw-r--r-- | deps/npm/test/tap/lifecycle-path.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/deps/npm/test/tap/lifecycle-path.js b/deps/npm/test/tap/lifecycle-path.js new file mode 100644 index 0000000000..34684a0c39 --- /dev/null +++ b/deps/npm/test/tap/lifecycle-path.js @@ -0,0 +1,61 @@ +var test = require("tap").test +var common = require("../common-tap.js") +var path = require("path") +var rimraf = require("rimraf") +var mkdirp = require("mkdirp") +var pkg = path.resolve(__dirname, "lifecycle-path") +var fs = require("fs") +var link = path.resolve(pkg, "node-bin") + +// Without the path to the shell, nothing works usually. +var PATH +if (process.platform === "win32") { + PATH = "C:\\Windows\\system32;C:\\Windows" +} else { + 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, stderr) { + 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() +}) + |