| var test = require("tap").test |
| var npm = require.resolve("../../bin/npm-cli.js") |
| |
| var spawn = require("child_process").spawn |
| var node = process.execPath |
| |
| // ignore-scripts/package.json has scripts that always exit with non-zero error |
| // codes. The "install" script is omitted so that npm tries to run node-gyp, |
| // which should also fail. |
| var pkg = __dirname + "/ignore-scripts" |
| |
| test("ignore-scripts: install using the option", function(t) { |
| createChild([npm, "install", "--ignore-scripts"]).on("close", function(code) { |
| t.equal(code, 0) |
| t.end() |
| }) |
| }) |
| |
| test("ignore-scripts: install NOT using the option", function(t) { |
| createChild([npm, "install"]).on("close", function(code) { |
| t.notEqual(code, 0) |
| t.end() |
| }) |
| }) |
| |
| var scripts = [ |
| "prepublish", "publish", "postpublish", |
| "preinstall", "install", "postinstall", |
| "preuninstall", "uninstall", "postuninstall", |
| "preupdate", "update", "postupdate", |
| "pretest", "test", "posttest", |
| "prestop", "stop", "poststop", |
| "prestart", "start", "poststart", |
| "prerestart", "restart", "postrestart" |
| ] |
| |
| scripts.forEach(function(script) { |
| test("ignore-scripts: run-script"+script+" using the option", function(t) { |
| createChild([npm, "--ignore-scripts", "run-script", script]) |
| .on("close", function(code) { |
| t.equal(code, 0) |
| t.end() |
| }) |
| }) |
| }) |
| |
| scripts.forEach(function(script) { |
| test("ignore-scripts: run-script "+script+" NOT using the option", function(t) { |
| createChild([npm, "run-script", script]).on("close", function(code) { |
| t.notEqual(code, 0) |
| t.end() |
| }) |
| }) |
| }) |
| |
| function createChild (args) { |
| var env = { |
| HOME: process.env.HOME, |
| Path: process.env.PATH, |
| PATH: process.env.PATH |
| } |
| |
| if (process.platform === "win32") |
| env.npm_config_cache = "%APPDATA%\\npm-cache" |
| |
| return spawn(node, args, { |
| cwd: pkg, |
| stdio: "inherit", |
| env: env |
| }) |
| } |