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