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.
 
 
 
 
 
 

55 lines
1.5 KiB

var fs = require('graceful-fs')
var path = require('path')
var mkdirp = require('mkdirp')
var osenv = require('osenv')
var rimraf = require('rimraf')
var test = require('tap').test
var common = require('../common-tap.js')
var pkg = path.resolve(__dirname, 'shrinkwrap-lifecycle')
test('npm shrinkwrap execution order', function (t) {
setup()
fs.writeFileSync(path.resolve(pkg, 'package.json'), JSON.stringify({
author: 'Simen Bekkhus',
name: 'shrinkwrap-lifecycle',
shrinkwrap: '0.0.0',
description: 'Test for npm shrinkwrap execution order',
scripts: {
preshrinkwrap: 'echo this happens first',
shrinkwrap: 'echo this happens second',
postshrinkwrap: 'echo this happens third'
}
}), 'utf8')
common.npm(['shrinkwrap'], [], function (err, code, stdout) {
if (err) throw err
var indexOfFirst = stdout.indexOf('echo this happens first')
var indexOfSecond = stdout.indexOf('echo this happens second')
var indexOfThird = stdout.indexOf('wrote npm-shrinkwrap.json')
var indexOfFourth = stdout.indexOf('echo this happens third')
t.ok(indexOfFirst >= 0)
t.ok(indexOfSecond >= 0)
t.ok(indexOfThird >= 0)
t.ok(indexOfFourth >= 0)
t.ok(indexOfFirst < indexOfSecond)
t.ok(indexOfSecond < indexOfThird)
t.ok(indexOfThird < indexOfFourth)
t.end()
})
})
test('cleanup', function (t) {
process.chdir(osenv.tmpdir())
rimraf.sync(pkg)
t.end()
})
function setup () {
mkdirp.sync(pkg)
process.chdir(pkg)
}