1var fs = require('graceful-fs') 2var path = require('path') 3var test = require('tap').test 4var common = require('../common-tap.js') 5var pkg = common.pkg 6 7test('npm install execution order', function (t) { 8 const packageJson = { 9 name: 'life-test', 10 version: '0.0.1', 11 description: 'Test for npm install execution order', 12 scripts: { 13 install: 'true', 14 preinstall: 'true', 15 preshrinkwrap: 'true', 16 postinstall: 'true', 17 postshrinkwrap: 'true', 18 shrinkwrap: 'true' 19 } 20 } 21 fs.writeFileSync(path.resolve(pkg, 'package.json'), JSON.stringify(packageJson), 'utf8') 22 common.npm(['install', '--loglevel=error'], { cwd: pkg }, function (err, code, stdout, stderr) { 23 if (err) throw err 24 25 t.comment(stdout) 26 t.comment(stderr) 27 28 const steps = ['preinstall', 'install', 'postinstall', 'preshrinkwrap', 'shrinkwrap', 'postshrinkwrap'] 29 const expectedLines = steps.map(function (step) { 30 return '> ' + packageJson.name + '@' + packageJson.version + ' ' + step 31 }) 32 t.match(stdout, new RegExp(expectedLines.map(common.escapeForRe).join('(.|\n)*'))) 33 t.end() 34 }) 35}) 36