• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict'
2var path = require('path')
3var fs = require('graceful-fs')
4var test = require('tap').test
5var common = require('../common-tap.js')
6var Tacks = require('tacks')
7var Dir = Tacks.Dir
8var File = Tacks.File
9
10var testdir = path.join(__dirname, path.basename(__filename, '.js'))
11var cwd = path.join(testdir, '3')
12
13/**
14 * NOTE: Tarball Fixtures
15 * They contain package.json files with dependencies like the following:
16 * 1-1.0.0.tgz: package/package.json
17 * {
18 *   "name":"1",
19 *   "version":"1.0.0"
20 * }
21 * 2-1.0.0.tgz: package/package.json
22 * {
23 *   "name":"2",
24 *   "version":"1.0.0",
25 *   "dependencies":{
26 *     "1":"file:../1/1-1.0.0.tgz"
27 *   }
28 * }
29 */
30var fixture = new Tacks(Dir({
31  '1': Dir({
32    '1-1.0.0.tgz': File(Buffer.from(
33      '1f8b08000000000000032b484cce4e4c4fd52f80d07a59c5f9790c540606' +
34      '06066626260ad8c4c1c0d85c81c1d8d4ccc0d0d0cccc00a80ec830353103' +
35      'd2d4760836505a5c925804740aa5e640bca200a78708a856ca4bcc4d55b2' +
36      '523254d2512a4b2d2acecccf03f1f40cf40c946ab906da79a360148c8251' +
37      '300a6804007849dfdf00080000',
38      'hex'
39    ))
40  }),
41  '2': Dir({
42    '2-1.0.0.tgz': File(Buffer.from(
43      '1f8b0800000000000003ed8f3d0e83300c8599394594b90d36840cdc2602' +
44      '17d19f80087468c5ddeb14a9135b91aa4af996e73c3f47f660eb8b6d291b' +
45      '565567dfbb646700c0682db6fc00ea5c24456900d118e01c17a52e58f75e' +
46      '648bd94f76e455befd67bd457cf44f78a64248676f242b21737908cf3b8d' +
47      'beeb5d70508182d56d6820d790ab3bf2dc0a83ec62489dba2b554a6598e1' +
48      'f13da1a6f62139b0a44bfaeb0b23914824b2c50b8b5b623100080000',
49      'hex'
50    ))
51  }),
52  '3': Dir({
53    'package.json': File({
54      name: '3',
55      version: '1.0.0',
56      dependencies: {
57        '2': '../2/2-1.0.0.tgz'
58      }
59    })
60  })
61}))
62
63function setup () {
64  fixture.create(testdir)
65}
66
67function cleanup () {
68  fixture.remove(testdir)
69}
70
71test('setup', function (t) {
72  cleanup()
73  setup()
74  t.end()
75})
76
77test('installing local package with local dependency', function (t) {
78  common.npm(
79    ['install'],
80    {cwd: cwd},
81    function (er, code, stdout, stderr) {
82      t.is(code, 0, 'no error code')
83      t.is(stderr, '', 'no error output')
84      t.ok(fs.existsSync(path.join(cwd, 'node_modules', '2')), 'installed direct dep')
85      t.ok(fs.existsSync(path.join(cwd, 'node_modules', '1')), 'installed indirect dep')
86      t.end()
87    }
88  )
89})
90
91test('cleanup', function (t) {
92  cleanup()
93  t.end()
94})
95