1var fs = require('fs') 2 3var mkdirp = require('mkdirp') 4var rimraf = require('rimraf') 5var test = require('tap').test 6var sprintf = require('sprintf-js').sprintf 7 8var escapeExecPath = require('../../lib/utils/escape-exec-path.js') 9var escapeArg = require('../../lib/utils/escape-arg.js') 10var common = require('../common-tap.js') 11var pkg = common.pkg 12 13var nodeCmd = escapeExecPath(common.nodeBin) 14var npmCmd = nodeCmd + ' ' + escapeArg(common.bin) 15var umaskScript = npmCmd + ' config get umask && ' + nodeCmd + ' -pe "[process.env.npm_config_umask, process.umask()]"' 16 17var pj = JSON.stringify({ 18 name: 'x', 19 version: '1.2.3', 20 scripts: { umask: umaskScript } 21}, null, 2) + '\n' 22 23var umask = process.umask() 24var expected = [ 25 '', 26 '> x@1.2.3 umask ' + pkg, 27 '> ' + umaskScript, 28 '', 29 sprintf('%04o', umask), 30 "[ '" + sprintf('%04o', umask) + "', " + 31 sprintf('%d', umask) + ' ]', 32 '' 33].join('\n') 34 35test('setup', function (t) { 36 rimraf.sync(pkg) 37 mkdirp.sync(pkg) 38 fs.writeFileSync(pkg + '/package.json', pj) 39 t.end() 40}) 41 42test('umask script', function (t) { 43 common.npm(['run', 'umask', '--scripts-prepend-node-path'], { 44 cwd: pkg, 45 env: { 46 PATH: process.env.PATH, 47 Path: process.env.Path, 48 'npm_config_loglevel': 'warn', 49 nodeExecPath: process.execPath 50 } 51 }, function (er, code, sout, serr) { 52 t.equal(sout, expected) 53 t.equal(serr, '') 54 t.end() 55 }) 56}) 57 58test('clean', function (t) { 59 rimraf.sync(pkg) 60 t.end() 61}) 62