| // if "npm rebuild" is run with bundled dependencies, |
| // message "already built" should not be error |
| var test = require("tap").test |
| var path = require("path") |
| var osenv = require("osenv") |
| var rimraf = require("rimraf") |
| var npmlog = require("npmlog") |
| var mkdirp = require("mkdirp") |
| var requireInject = require("require-inject") |
| |
| var npm = require("../../lib/npm.js") |
| |
| var PKG_DIR = path.resolve(__dirname, "build-already-built") |
| var fakePkg = "foo" |
| |
| test("setup", function (t) { |
| cleanup() |
| |
| t.end() |
| }) |
| |
| test("issue #6735 build 'already built' message", function (t) { |
| npm.load({loglevel : "warn"}, function () { |
| // capture log messages with level |
| var log = "" |
| npmlog.on("log", function (chunk) { |
| log += chunk.level + " " + chunk.message + "\n" |
| }) |
| |
| mkdirp.sync(fakePkg) |
| var folder = path.resolve(fakePkg) |
| |
| var global = npm.config.get("global") |
| |
| var build = requireInject("../../lib/build", { |
| }) |
| |
| t.test("pin previous behavior", function (t) { |
| |
| build([fakePkg], global, false, false, function (err) { |
| t.ok(err, "build failed as expected") |
| t.similar(err.message, /package.json/, "missing package.json as expected") |
| t.notSimilar(log, /already built/, "no already built message written") |
| |
| t.end() |
| }) |
| }) |
| |
| t.test("simulate rebuild of bundledDependency", function (t) { |
| |
| log = "" |
| |
| build._didBuild[folder] = true |
| |
| build([fakePkg], global, false, false, function (err) { |
| t.ok(err, "build failed as expected") |
| t.similar(err.message, /package.json/, "missing package.json as expected") |
| |
| t.similar(log, /already built/, "already built message written") |
| t.notSimilar(log, /ERR! already built/, "already built message written is not error") |
| t.similar(log, /info already built/, "already built message written is info") |
| |
| t.end() |
| }) |
| }) |
| |
| t.end() |
| }) |
| }) |
| |
| |
| test("cleanup", function (t) { |
| cleanup() |
| |
| t.end() |
| }) |
| |
| function cleanup () { |
| process.chdir(osenv.tmpdir()) |
| rimraf.sync(PKG_DIR) |
| } |