summaryrefslogtreecommitdiff
path: root/deps/npm/test/tap/prepublish.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/test/tap/prepublish.js')
-rw-r--r--deps/npm/test/tap/prepublish.js90
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()
+ })
+})
+