-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathtest.js
133 lines (111 loc) · 3.08 KB
/
test.js
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
121
122
123
124
125
126
127
128
129
130
131
132
133
/* eslint-env mocha */
const unzip = require('./index.js')
const fs = require('fs')
const assert = require('assert-plus')
const pj = require('path').join
const minimatch = require('minimatch')
const Vinyl = require('vinyl')
function createVinyl (filename, contents) {
const base = pj(__dirname, 'fixture')
const filePath = pj(base, filename)
return new Vinyl({
cwd: __dirname,
base: base,
path: filePath,
contents: contents || fs.readFileSync(filePath)
})
}
describe('gulp-unzip', () => {
describe('basic behaviour', () => {
it('null file', done => {
const stream = unzip()
const mock = new Vinyl()
stream.on('data', file => {
assert.deepEqual(file, mock)
done()
})
stream.write(mock)
stream.end()
})
it('basic', done => {
const stream = unzip()
const mock = createVinyl('basic/zipped.zip')
stream.on('data', file => {
const expect = fs.readFileSync('fixture/basic/' + file.path)
assert.deepEqual(expect, file.contents)
}).on('end', done)
stream.write(mock)
stream.end()
})
it('large_file', done => {
const stream = unzip()
const mock = createVinyl('largefile/zipped.zip')
stream.on('data', file => {
const expect = fs.readFileSync('fixture/largefile/' + file.path)
assert.deepEqual(expect, file.contents)
}).on('end', done)
stream.write(mock)
stream.end()
})
})
describe('filter option', () => {
it('false filter', done => {
const stream = unzip({
filter: () => false
})
const mock = createVinyl('basic/zipped.zip')
stream.on('data', file => {
throw Error('entried')
}).on('end', done)
stream.write(mock)
stream.end()
})
it('only extract css with filter', done => {
const stream = unzip({
filter: entry => minimatch(entry.path, '**/*.min.css')
})
const mock = createVinyl('sometypes/bootstrap-3.1.1-dist.zip')
stream.on('data', file => {
assert.ok(/.*\.min\.css/.test(file.path))
}).on('end', done)
stream.write(mock)
stream.end()
})
})
describe('keepEmpty option', () => {
it('true', done => {
const stream = unzip({ keepEmpty: false })
const mock = createVinyl('basic/zipped.zip')
let didSeeEmpty = false
stream.on('data', file => {
if (file.contents.length === 0) {
didSeeEmpty = true
}
}).on('end', () => {
if (didSeeEmpty) {
throw new Error('saw empty')
}
done()
})
stream.write(mock)
stream.end()
})
it('false', done => {
const stream = unzip({ keepEmpty: true })
const mock = createVinyl('basic/zipped.zip')
let didSeeEmpty = false
stream.on('data', file => {
if (file.contents.length === 0) {
didSeeEmpty = true
}
}).on('end', () => {
if (!didSeeEmpty) {
throw new Error('did not see empty')
}
done()
})
stream.write(mock)
stream.end()
})
})
})