--- /dev/null
+var fs = require('fs')
+var path = require('path')
+
+var mkdirp = require('mkdirp')
+var rimraf = require('rimraf')
+var test = require('tap').test
+var sprintf = require('sprintf-js').sprintf
+
+var common = require('../common-tap.js')
+var pkg = path.resolve(__dirname, 'umask-lifecycle')
+
+var pj = JSON.stringify({
+ name: 'x',
+ version: '1.2.3',
+ scripts: { umask: '$npm_execpath config get umask && echo "$npm_config_umask" && node -pe "process.umask()"' }
+}, null, 2) + '\n'
+
+var umask = process.umask()
+var expected = [
+ '',
+ '> x@1.2.3 umask ' + path.join(__dirname, 'umask-lifecycle'),
+ '> $npm_execpath config get umask && echo "$npm_config_umask" && node -pe "process.umask()"',
+ '',
+ sprintf('%04o', umask),
+ sprintf('%04o', umask),
+ sprintf('%d', umask),
+ ''
+].join('\n')
+
+test('setup', function (t) {
+ rimraf.sync(pkg)
+ mkdirp.sync(pkg)
+ fs.writeFileSync(pkg + '/package.json', pj)
+ t.end()
+})
+
+test('umask script', function (t) {
+ common.npm(['run', 'umask'], {
+ cwd: pkg,
+ env: {
+ PATH: process.env.PATH,
+ Path: process.env.Path,
+ 'npm_config_loglevel': 'warn'
+ }
+ }, function (er, code, sout, serr) {
+ t.equal(sout, expected)
+ t.equal(serr, '')
+ t.end()
+ })
+})
+
+test('clean', function (t) {
+ rimraf.sync(pkg)
+ t.end()
+})