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