var common = require("../common-tap") var test = require("tap").test var path = require("path") // 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 = path.resolve(__dirname, "ignore-scripts") test("ignore-scripts: install using the option", function (t) { createChild(["install", "--ignore-scripts"], function (err, code) { t.ifError(err, "install with scripts ignored finished successfully") t.equal(code, 0, "npm install exited with code") t.end() }) }) test("ignore-scripts: install NOT using the option", function (t) { createChild(["install"], function (err, code) { t.ifError(err, "install with scripts successful") t.notEqual(code, 0, "npm install exited with code") t.end() }) }) var scripts = [ "prepublish", "publish", "postpublish", "preinstall", "install", "postinstall", "preuninstall", "uninstall", "postuninstall", "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(["--ignore-scripts", "run-script", script], function (err, code) { t.ifError(err, "run-script " + script + " with ignore-scripts successful") t.equal(code, 0, "npm run-script exited with code") t.end() }) }) }) scripts.forEach(function (script) { test("ignore-scripts: run-script "+script+" NOT using the option", function (t) { createChild(["run-script", script], function (err, code) { t.ifError(err, "run-script " + script + " finished successfully") t.notEqual(code, 0, "npm run-script exited with code") t.end() }) }) }) function createChild (args, cb) { var env = { HOME: process.env.HOME, Path: process.env.PATH, PATH: process.env.PATH, "npm_config_loglevel": "silent" } if (process.platform === "win32") env.npm_config_cache = "%APPDATA%\\npm-cache" return common.npm(args, { cwd: pkg, stdio: "inherit", env: env }, cb) }