• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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