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