1var common = require('../common-tap.js') 2var test = require('tap').test 3var npm = require('../../') 4var path = require('path') 5var fs = require('fs') 6var rimraf = require('rimraf') 7const pkg = common.pkg 8var mr = require('npm-registry-mock') 9 10test('404-parent: if parent exists, specify parent in error message', function (t) { 11 setup() 12 rimraf(path.resolve(pkg, 'node_modules'), () => { 13 performInstall(function (err) { 14 t.ok(err instanceof Error, 'error was returned') 15 t.equal(err.parent, '404-parent', "error's parent set") 16 t.end() 17 }) 18 }) 19}) 20 21function setup () { 22 fs.writeFileSync(path.resolve(pkg, 'package.json'), JSON.stringify({ 23 author: 'Evan Lucas', 24 name: '404-parent-test', 25 version: '0.0.0', 26 description: 'Test for 404-parent', 27 dependencies: { 28 'test-npm-404-parent-test': '*' 29 } 30 }), 'utf8') 31 process.chdir(pkg) 32} 33 34function performInstall (cb) { 35 mr({port: common.port}, function (er, s) { // create mock registry. 36 if (er) { 37 return cb(er) 38 } 39 s.get('/test-npm-404-parent-test') 40 .many().reply(404, {'error': 'version not found'}) 41 npm.load({ 42 registry: common.registry 43 }, function () { 44 npm.config.set('fetch-retries', 0) 45 var pwd = process.cwd() 46 process.chdir(pkg) 47 npm.commands.install([], function (err) { 48 process.chdir(pwd) 49 cb(err) 50 s.close() // shutdown mock npm server. 51 }) 52 }) 53 }) 54} 55