// 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) }