-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest.js
More file actions
120 lines (105 loc) · 3.05 KB
/
test.js
File metadata and controls
120 lines (105 loc) · 3.05 KB
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
115
116
117
118
119
120
var pkg = require('base-package-json')
var concat = require('concat-stream')
var mapLimit = require('map-limit')
var readdirp = require('readdirp')
var json = require('JSONStream')
var mkdirp = require('mkdirp')
var rimraf = require('rimraf')
var pump = require('pump')
var path = require('path')
var test = require('tape')
var fs = require('fs')
var install = require('./')
test('should install dependencies', function (t) {
t.plan(5)
var dir = 'tmp'
var fns = [ mkdir, createPkg, installDeps, readDirs, clean ]
mapLimit(fns, 1, function (fn, cb) { fn(cb) }, function (err) {
t.error(err, 'no err')
})
function mkdir (next) {
mkdirp(dir, function (err) {
if (err) return next(err)
process.chdir(dir)
next()
})
}
function createPkg (next) {
var rs = pkg()
var ts = json.stringify()
var ws = fs.createWriteStream(path.join(process.cwd(), 'package.json'))
pump(rs, ts, ws, next)
}
function installDeps (next) {
var devDeps = [ 'map-limit', 'minimist' ]
var opts = { saveDev: true, cache: true }
install(devDeps, opts, next)
}
function readDirs (next) {
var opts = {
rootDir: path.join(dir, 'node_modules'),
entryType: 'directories',
depth: 1
}
var rs = readdirp(opts)
var ws = concat({ object: true }, function (arr) {
t.ok(Array.isArray(arr), 'is array')
var paths = arr.map(function (el) { return el.path })
t.notEqual(paths.indexOf('node_modules'), -1)
t.notEqual(paths.indexOf('node_modules/minimist'), -1)
t.notEqual(paths.indexOf('node_modules/map-limit'), -1)
next()
})
rs.pipe(ws)
}
function clean (next) {
process.chdir(path.join(process.cwd(), '..'))
rimraf(path.join(process.cwd(), dir), next)
}
})
test('should install a single dependency', function (t) {
t.plan(4)
var dir = 'tmp'
var fns = [ mkdir, createPkg, installDeps, readDirs, clean ]
mapLimit(fns, 1, function (fn, cb) { fn(cb) }, function (err) {
t.error(err, 'no err')
})
function mkdir (next) {
mkdirp(dir, function (err) {
if (err) return next(err)
process.chdir(dir)
next()
})
}
function createPkg (next) {
var rs = pkg()
var ts = json.stringify()
var ws = fs.createWriteStream(path.join(process.cwd(), 'package.json'))
pump(rs, ts, ws, next)
}
function installDeps (next) {
var deps = 'map-limit'
var opts = { save: true, cache: true }
install(deps, opts, next)
}
function readDirs (next) {
var opts = {
rootDir: path.join(dir, 'node_modules'),
entryType: 'directories',
depth: 1
}
var rs = readdirp(opts)
var ws = concat({ object: true }, function (arr) {
t.ok(Array.isArray(arr), 'is array')
var paths = arr.map(function (el) { return el.path })
t.notEqual(paths.indexOf('node_modules'), -1)
t.notEqual(paths.indexOf('node_modules/map-limit'), -1)
next()
})
rs.pipe(ws)
}
function clean (next) {
process.chdir(path.join(process.cwd(), '..'))
rimraf(path.join(process.cwd(), dir), next)
}
})