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