diff options
Diffstat (limited to 'deps/npm/test/tap/prepublish.js')
-rw-r--r-- | deps/npm/test/tap/prepublish.js | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/deps/npm/test/tap/prepublish.js b/deps/npm/test/tap/prepublish.js new file mode 100644 index 0000000000..56d7158b0f --- /dev/null +++ b/deps/npm/test/tap/prepublish.js @@ -0,0 +1,90 @@ +// verify that prepublish runs on pack and publish +var test = require('tap').test +var npm = require('../../') +var fs = require('fs') +var pkg = __dirname + '/prepublish_package' +var tmp = pkg + '/tmp' +var cache = pkg + '/cache' +var mkdirp = require('mkdirp') +var rimraf = require('rimraf') +var path = require('path') +var os = require('os') + +test('setup', function (t) { + var n = 0 + mkdirp(pkg, then()) + mkdirp(cache, then()) + mkdirp(tmp, then()) + function then (er) { + n ++ + return function (er) { + if (er) + throw er + if (--n === 0) + next() + } + } + + function next () { + fs.writeFile(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('test', function (t) { + var spawn = require('child_process').spawn + var node = process.execPath + var npm = path.resolve(__dirname, '../../cli.js') + 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] + } + var child = spawn(node, [npm, 'pack'], { + cwd: pkg, + env: env + }) + child.stdout.setEncoding('utf8') + child.stderr.on('data', function(chunk) { + throw new Error('got stderr data: ' + JSON.stringify('' + chunk)) + }) + child.stdout.on('data', ondata) + child.on('close', onend) + var c = '' + function ondata (chunk) { + c += chunk + } + function onend () { + c = c.trim() + t.equal( c + , '> npm-test-prepublish@1.2.5 prepublish .' + os.EOL + + '> echo ok' + os.EOL + + os.EOL + + 'ok' + os.EOL + + 'npm-test-prepublish-1.2.5.tgz') + t.end() + } +}) + +test('cleanup', function (t) { + rimraf(pkg, function(er) { + if (er) + throw er + t.pass('cleaned up') + t.end() + }) +}) + |