1
+
var fs = require('fs')
2
+
var path = require('path')
3
+
4
+
var mkdirp = require('mkdirp')
5
+
var mr = require('npm-registry-mock')
6
+
var osenv = require('osenv')
7
+
var rimraf = require('rimraf')
8
+
var test = require('tap').test
9
+
10
+
var common = require('../common-tap')
11
+
var server
12
+
13
+
var pkg = path.resolve(__dirname, 'prune')
14
+
var cache = path.resolve(pkg, 'cache')
15
+
16
+
var json = {
17
+
name: 'prune-with-only-dev-deps',
18
+
description: 'fixture',
19
+
version: '0.0.1',
20
+
main: 'index.js',
21
+
devDependencies: {
22
+
'test-package-with-one-dep': '0.0.0',
23
+
'test-package': '0.0.0'
24
+
}
25
+
}
26
+
27
+
var EXEC_OPTS = {
28
+
cwd: pkg,
29
+
npm_config_depth: 'Infinity'
30
+
}
31
+
32
+
test('setup', function (t) {
33
+
cleanup()
34
+
mkdirp.sync(cache)
35
+
fs.writeFileSync(
36
+
path.join(pkg, 'package.json'),
37
+
JSON.stringify(json, null, 2)
38
+
)
39
+
mr({ port: common.port }, function (er, s) {
40
+
server = s
41
+
t.end()
42
+
})
43
+
})
44
+
45
+
test('npm install', function (t) {
46
+
common.npm([
47
+
'install',
48
+
'--cache', cache,
49
+
'--registry', common.registry,
50
+
'--loglevel', 'silent',
51
+
'--production', 'false'
52
+
], EXEC_OPTS, function (err, code, stdout, stderr) {
53
+
t.ifErr(err, 'install finished successfully')
54
+
t.notOk(code, 'exit ok')
55
+
t.notOk(stderr, 'Should not get data on stderr: ' + stderr)
56
+
t.end()
57
+
})
58
+
})
59
+
60
+
function readdir (dir) {
61
+
try {
62
+
return fs.readdirSync(dir)
63
+
} catch (ex) {
64
+
if (ex.code === 'ENOENT') return []
65
+
throw ex
66
+
}
67
+
}
68
+
69
+
test('verify installs', function (t) {
70
+
var dirs = readdir(pkg + '/node_modules').sort()
71
+
t.same(dirs, [ 'test-package', 'test-package-with-one-dep' ].sort())
72
+
t.end()
73
+
})
74
+
75
+
test('npm prune', function (t) {
76
+
common.npm([
77
+
'prune',
78
+
'--loglevel', 'silent',
79
+
'--production', 'false'
80
+
], EXEC_OPTS, function (err, code, stdout, stderr) {
81
+
t.ifErr(err, 'prune finished successfully')
82
+
t.notOk(code, 'exit ok')
83
+
t.notOk(stderr, 'Should not get data on stderr: ' + stderr)
84
+
t.end()
85
+
})
86
+
})
87
+
88
+
test('verify installs', function (t) {
89
+
var dirs = readdir(pkg + '/node_modules').sort()
90
+
t.same(dirs, [ 'test-package', 'test-package-with-one-dep' ])
91
+
t.end()
92
+
})
93
+
94
+
test('npm prune', function (t) {
95
+
common.npm([
96
+
'prune',
97
+
'--loglevel', 'silent',
98
+
'--production',
99
+
'--json'
100
+
], EXEC_OPTS, function (err, code, stdout, stderr) {
101
+
t.ifErr(err, 'prune finished successfully')
102
+
t.notOk(code, 'exit ok')
103
+
t.like(JSON.parse(stdout), {removed: [{name: 'test-package'}, {name: 'test-package-with-one-dep'}]})
104
+
t.end()
105
+
})
106
+
})
107
+
108
+
test('verify installs', function (t) {
109
+
var dirs = readdir(pkg + '/node_modules').sort()
110
+
t.same(dirs, [])
111
+
t.end()
112
+
})
113
+
114
+
test('cleanup', function (t) {
115
+
server.close()
116
+
cleanup()
117
+
t.pass('cleaned up')
118
+
t.end()
119
+
})
120
+
121
+
function cleanup () {
122
+
process.chdir(osenv.tmpdir())
123
+
rimraf.sync(pkg)
124
+
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4