diff options
Diffstat (limited to 'deps/node/deps/npm/test/tap/prepublish.js')
-rw-r--r-- | deps/node/deps/npm/test/tap/prepublish.js | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/prepublish.js b/deps/node/deps/npm/test/tap/prepublish.js new file mode 100644 index 00000000..c71455a2 --- /dev/null +++ b/deps/node/deps/npm/test/tap/prepublish.js @@ -0,0 +1,118 @@ +// verify that prepublish runs on install, pack, and publish +var common = require('../common-tap') +var test = require('tap').test +var fs = require('graceful-fs') +var join = require('path').join +var mkdirp = require('mkdirp') +var rimraf = require('rimraf') + +var pkg = join(__dirname, 'prepublish_package') +var tmp = join(pkg, 'tmp') +var cache = join(pkg, 'cache') + +test('setup', function (t) { + var n = 0 + cleanup() + mkdirp(pkg, then()) + mkdirp(cache, then()) + mkdirp(tmp, then()) + function then () { + n++ + return function (er) { + if (er) throw er + if (--n === 0) next() + } + } + + function next () { + fs.writeFile(join(pkg, 'package.json'), JSON.stringify({ + name: 'npm-test-prepublish', + version: '1.2.5', + scripts: { prepublish: 'echo ok' } + }), 'ascii', function (er) { + if (er) throw er + + t.pass('setup done') + t.end() + }) + } +}) + +test('prepublish deprecation warning on `npm pack`', function (t) { + var env = { + 'npm_config_cache': cache, + 'npm_config_tmp': tmp, + 'npm_config_prefix': pkg, + 'npm_config_global': 'false' + } + + for (var i in process.env) { + if (!/^npm_config_/.test(i)) { + env[i] = process.env[i] + } + } + + common.npm([ + 'pack', + '--loglevel', 'warn' + ], { cwd: pkg, env: env }, function (err, code, stdout, stderr) { + t.equal(code, 0, 'pack finished successfully') + t.ifErr(err, 'pack finished successfully') + + t.match(stderr, /`prepublish` scripts are deprecated/) + var c = stdout.trim() + var regex = new RegExp('' + + '> npm-test-prepublish@1.2.5 prepublish [^\\r\\n]+\\r?\\n' + + '> echo ok\\r?\\n' + + '\\r?\\n' + + 'ok\\r?\\n' + + 'npm-test-prepublish-1.2.5.tgz', 'ig') + + t.match(c, regex) + t.end() + }) +}) + +test('prepublish deprecation warning on `npm install`', function (t) { + var env = { + 'npm_config_cache': cache, + 'npm_config_tmp': tmp, + 'npm_config_prefix': pkg, + 'npm_config_global': 'false' + } + + for (var i in process.env) { + if (!/^npm_config_/.test(i)) { + env[i] = process.env[i] + } + } + + common.npm([ + 'install', + '--loglevel', 'warn' + ], { cwd: pkg, env: env }, function (err, code, stdout, stderr) { + t.equal(code, 0, 'pack finished successfully') + t.ifErr(err, 'pack finished successfully') + + t.match(stderr, /`prepublish` scripts are deprecated/) + var c = stdout.trim() + var regex = new RegExp('' + + '> npm-test-prepublish@1.2.5 prepublish [^\\r\\n]+\\r?\\n' + + '> echo ok\\r?\\n' + + '\\r?\\n' + + 'ok' + + '', 'ig') + + t.match(c, regex) + t.end() + }) +}) +test('cleanup', function (t) { + cleanup() + t.pass('cleaned up') + t.end() +}) + +function cleanup () { + rimraf.sync(pkg) +} |