• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1var fs = require('fs')
2var resolve = require('path').resolve
3
4var mkdirp = require('mkdirp')
5var test = require('tap').test
6
7var common = require('../common-tap.js')
8
9var pkg = resolve(common.pkg, 'package')
10var target = resolve(common.pkg, 'target')
11
12var EXEC_OPTS = {
13  cwd: target
14}
15
16var json = {
17  name: 'install-bad-man',
18  version: '1.2.3',
19  man: [ './install-bad-man.1.lol' ]
20}
21
22common.skipIfWindows('man pages do not get installed on Windows')
23
24test('setup', function (t) {
25  mkdirp.sync(pkg)
26  // make sure it installs locally
27  mkdirp.sync(resolve(target, 'node_modules'))
28  fs.writeFileSync(
29    resolve(pkg, 'package.json'),
30    JSON.stringify(json, null, 2) + '\n'
31  )
32  fs.writeFileSync(resolve(pkg, 'install-bad-man.1.lol'), 'lol\n')
33  t.end()
34})
35
36test("install from repo on 'OS X'", function (t) {
37  common.npm(
38    [
39      'install',
40      '--prefix', target,
41      '--global',
42      pkg
43    ],
44    EXEC_OPTS,
45    function (err, code, stdout, stderr) {
46      t.ifError(err, 'npm command ran from test')
47      t.equals(code, 1, 'install exited with failure (1)')
48      t.notOk(stdout, 'no output indicating success')
49      t.notOk(
50        stderr.match(/Cannot read property '1' of null/),
51        'no longer has cryptic error output'
52      )
53      t.ok(
54        stderr.match(/install-bad-man\.1\.lol is not a valid name/),
55        'got expected error output'
56      )
57
58      t.end()
59    }
60  )
61})
62