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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
const { test } = require('tap')
const pack = require('libnpmpack')
const ssri = require('ssri')
const requireInject = require('require-inject')
const { logTar, getContents } = require('../../../lib/utils/tar.js')
const printLogs = (tarball, unicode) => {
const logs = []
logTar(tarball, {
log: {
notice: (...args) => {
args.map(el => logs.push(el))
},
},
unicode,
})
return logs.join('\n')
}
test('should log tarball contents', async (t) => {
const testDir = t.testdir({
'package.json': JSON.stringify({
name: 'my-cool-pkg',
version: '1.0.0',
bundleDependencies: [
'bundle-dep',
],
}, null, 2),
node_modules: {
'bundle-dep': 'toto',
},
})
const tarball = await pack(testDir)
const tarballContents = await getContents({
_id: '1',
name: 'my-cool-pkg',
version: '1.0.0',
}, tarball)
t.matchSnapshot(printLogs(tarballContents, false))
})
test('should log tarball contents with unicode', async (t) => {
const { logTar } = requireInject('../../../lib/utils/tar.js', {
npmlog: {
notice: (str) => {
t.ok(true, 'defaults to npmlog')
return str
},
},
})
logTar({
files: [],
bundled: [],
integrity: '',
}, { unicode: true })
t.end()
})
test('should default to npmlog', async (t) => {
const { logTar } = requireInject('../../../lib/utils/tar.js', {
npmlog: {
notice: (str) => {
t.ok(true, 'defaults to npmlog')
return str
},
},
})
logTar({
files: [],
bundled: [],
integrity: '',
})
t.end()
})
test('should getContents of a tarball', async (t) => {
const testDir = t.testdir({
'package.json': JSON.stringify({
name: 'my-cool-pkg',
version: '1.0.0',
}, null, 2),
})
const tarball = await pack(testDir)
const tarballContents = await getContents({
name: 'my-cool-pkg',
version: '1.0.0',
}, tarball)
const integrity = await ssri.fromData(tarball, {
algorithms: ['sha1', 'sha512'],
})
t.strictSame(tarballContents, {
id: 'my-cool-pkg@1.0.0',
name: 'my-cool-pkg',
version: '1.0.0',
size: 149,
unpackedSize: 49,
shasum: 'c0bfd67a5142104e429afda09119eedd6a30d2fc',
integrity: ssri.parse(integrity.sha512[0]),
filename: 'my-cool-pkg-1.0.0.tgz',
files: [{ path: 'package.json', size: 49, mode: 420 }],
entryCount: 1,
bundled: [],
}, 'contents are correct')
t.end()
})
|