diff options
Diffstat (limited to 'deps/npm/test/tap/prepare.js')
-rw-r--r-- | deps/npm/test/tap/prepare.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/deps/npm/test/tap/prepare.js b/deps/npm/test/tap/prepare.js new file mode 100644 index 0000000000..f179c52672 --- /dev/null +++ b/deps/npm/test/tap/prepare.js @@ -0,0 +1,85 @@ +// verify that prepare runs on 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, 'prepare_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-prepare', + version: '1.2.5', + scripts: { prepare: 'echo ok' } + }), 'ascii', function (er) { + if (er) throw er + + t.pass('setup done') + t.end() + }) + } +}) + +test('test', 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.notOk(stderr, 'got stderr data:' + JSON.stringify('' + stderr)) + var c = stdout.trim() + var regex = new RegExp( + '> npm-test-prepare@1.2.5 prepare [^\\r\\n]+\\r?\\n' + + '> echo ok\\r?\\n' + + '\\r?\\n' + + 'ok\\r?\\n' + + 'npm-test-prepare-1.2.5.tgz', 'ig' + ) + + t.match(c, regex) + t.end() + }) +}) + +test('cleanup', function (t) { + cleanup() + t.pass('cleaned up') + t.end() +}) + +function cleanup () { + rimraf.sync(pkg) +} |