mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.0 KiB
92 lines
2.0 KiB
// 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()
|
|
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.ok(c.match(regex))
|
|
t.end()
|
|
}
|
|
})
|
|
|
|
test('cleanup', function (t) {
|
|
rimraf(pkg, function(er) {
|
|
if (er)
|
|
throw er
|
|
t.pass('cleaned up')
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
|