diff options
Diffstat (limited to 'deps/npm/test/tap/build-already-built.js')
-rw-r--r-- | deps/npm/test/tap/build-already-built.js | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/deps/npm/test/tap/build-already-built.js b/deps/npm/test/tap/build-already-built.js new file mode 100644 index 0000000000..1de5929f43 --- /dev/null +++ b/deps/npm/test/tap/build-already-built.js @@ -0,0 +1,81 @@ +// 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-alread-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) +} |