diff options
Diffstat (limited to 'deps/npm/test/tap/install-lifecycle.js')
-rw-r--r-- | deps/npm/test/tap/install-lifecycle.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/deps/npm/test/tap/install-lifecycle.js b/deps/npm/test/tap/install-lifecycle.js new file mode 100644 index 00000000000..c5b0fd35a02 --- /dev/null +++ b/deps/npm/test/tap/install-lifecycle.js @@ -0,0 +1,35 @@ +var fs = require('graceful-fs') +var path = require('path') +var test = require('tap').test +var common = require('../common-tap.js') +var pkg = common.pkg + +test('npm install execution order', function (t) { + const packageJson = { + name: 'life-test', + version: '0.0.1', + description: 'Test for npm install execution order', + scripts: { + install: 'true', + preinstall: 'true', + preshrinkwrap: 'true', + postinstall: 'true', + postshrinkwrap: 'true', + shrinkwrap: 'true' + } + } + fs.writeFileSync(path.resolve(pkg, 'package.json'), JSON.stringify(packageJson), 'utf8') + common.npm(['install', '--loglevel=error'], { cwd: pkg }, function (err, code, stdout, stderr) { + if (err) throw err + + t.comment(stdout) + t.comment(stderr) + + const steps = ['preinstall', 'install', 'postinstall', 'preshrinkwrap', 'shrinkwrap', 'postshrinkwrap'] + const expectedLines = steps.map(function (step) { + return '> ' + packageJson.name + '@' + packageJson.version + ' ' + step + }) + t.match(stdout, new RegExp(expectedLines.map(common.escapeForRe).join('(.|\n)*'))) + t.end() + }) +}) |