• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1var fs = require('graceful-fs')
2var path = require('path')
3
4var mkdirp = require('mkdirp')
5var test = require('tap').test
6
7var common = require('../common-tap.js')
8
9var pkg = common.pkg
10
11var EXEC_OPTS = { cwd: pkg }
12
13var parentPkg = {
14  name: 'parent-package',
15  version: '0.0.0',
16  dependencies: {
17    'child-package-a': 'file:./child-package-a',
18    'child-package-b': 'file:./child-package-b'
19  }
20}
21
22var childPkgA = {
23  name: 'child-package-a',
24  version: '0.0.0',
25  bin: 'index.js'
26}
27
28var childPkgB = {
29  name: 'child-package-b',
30  version: '0.0.0',
31  dependencies: {
32    'grandchild-package': 'file:../grandchild-package'
33  }
34}
35
36var grandchildPkg = {
37  name: 'grandchild-package',
38  version: '0.0.0',
39  bin: null
40}
41
42var pkgs = [childPkgA, childPkgB, grandchildPkg]
43
44test('setup', t => {
45  mkdirp.sync(pkg)
46  fs.writeFileSync(
47    path.join(pkg, 'package.json'),
48    JSON.stringify(parentPkg, null, 2)
49  )
50  pkgs.forEach(function (json) {
51    var pkgPath = path.resolve(pkg, json.name)
52    mkdirp.sync(pkgPath)
53    fs.writeFileSync(
54      path.join(pkgPath, 'package.json'),
55      JSON.stringify(json, null, 2)
56    )
57  })
58  fs.writeFileSync(
59    path.join(pkg, childPkgA.name, 'index.js'),
60    ''
61  )
62  t.end()
63})
64
65test('the grandchild has bin:null', function (t) {
66  common.npm(['install'], EXEC_OPTS, function (err, code, stdout, stderr) {
67    t.ifErr(err, 'npm link finished without error')
68    t.equal(code, 0, 'exited ok')
69    t.ok(stdout, 'output indicating success')
70    t.notOk(stderr, 'no output stderr')
71    t.end()
72  })
73})
74