mocha-compat 3.6.0 → 3.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +1 -1
- package/package.json +10 -6
- package/vendor/glob/LICENSE +15 -0
- package/vendor/glob/README.md +399 -0
- package/vendor/glob/common.js +244 -0
- package/vendor/glob/glob.js +788 -0
- package/vendor/glob/package.json +55 -0
- package/vendor/glob/sync.js +486 -0
- package/vendor/inflight/LICENSE +15 -0
- package/vendor/inflight/README.md +37 -0
- package/vendor/inflight/inflight.js +54 -0
- package/vendor/inflight/package.json +29 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
exports.setopts = setopts
|
|
2
|
+
exports.ownProp = ownProp
|
|
3
|
+
exports.makeAbs = makeAbs
|
|
4
|
+
exports.finish = finish
|
|
5
|
+
exports.mark = mark
|
|
6
|
+
exports.isIgnored = isIgnored
|
|
7
|
+
exports.childrenIgnored = childrenIgnored
|
|
8
|
+
|
|
9
|
+
function ownProp (obj, field) {
|
|
10
|
+
return Object.prototype.hasOwnProperty.call(obj, field)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
var fs = require("fs")
|
|
14
|
+
var path = require("path")
|
|
15
|
+
var minimatch = require("minimatch")
|
|
16
|
+
var isAbsolute = require('is-absolute')
|
|
17
|
+
var Minimatch = minimatch.Minimatch
|
|
18
|
+
|
|
19
|
+
function alphasort (a, b) {
|
|
20
|
+
return a.localeCompare(b, 'en')
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function setupIgnores (self, options) {
|
|
24
|
+
self.ignore = options.ignore || []
|
|
25
|
+
|
|
26
|
+
if (!Array.isArray(self.ignore))
|
|
27
|
+
self.ignore = [self.ignore]
|
|
28
|
+
|
|
29
|
+
if (self.ignore.length) {
|
|
30
|
+
self.ignore = self.ignore.map(ignoreMap)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ignore patterns are always in dot:true mode.
|
|
35
|
+
function ignoreMap (pattern) {
|
|
36
|
+
var gmatcher = null
|
|
37
|
+
if (pattern.slice(-3) === '/**') {
|
|
38
|
+
var gpattern = pattern.replace(/(\/\*\*)+$/, '')
|
|
39
|
+
gmatcher = new Minimatch(gpattern, { dot: true })
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
matcher: new Minimatch(pattern, { dot: true }),
|
|
44
|
+
gmatcher: gmatcher
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function setopts (self, pattern, options) {
|
|
49
|
+
if (!options)
|
|
50
|
+
options = {}
|
|
51
|
+
|
|
52
|
+
// base-matching: just use globstar for that.
|
|
53
|
+
if (options.matchBase && -1 === pattern.indexOf("/")) {
|
|
54
|
+
if (options.noglobstar) {
|
|
55
|
+
throw new Error("base matching requires globstar")
|
|
56
|
+
}
|
|
57
|
+
pattern = "**/" + pattern
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
self.windowsPathsNoEscape = !!options.windowsPathsNoEscape ||
|
|
61
|
+
options.allowWindowsEscape === false
|
|
62
|
+
if (self.windowsPathsNoEscape) {
|
|
63
|
+
pattern = pattern.replace(/\\/g, '/')
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
self.silent = !!options.silent
|
|
67
|
+
self.pattern = pattern
|
|
68
|
+
self.strict = options.strict !== false
|
|
69
|
+
self.realpath = !!options.realpath
|
|
70
|
+
self.realpathCache = options.realpathCache || Object.create(null)
|
|
71
|
+
self.follow = !!options.follow
|
|
72
|
+
self.dot = !!options.dot
|
|
73
|
+
self.mark = !!options.mark
|
|
74
|
+
self.nodir = !!options.nodir
|
|
75
|
+
if (self.nodir)
|
|
76
|
+
self.mark = true
|
|
77
|
+
self.sync = !!options.sync
|
|
78
|
+
self.nounique = !!options.nounique
|
|
79
|
+
self.nonull = !!options.nonull
|
|
80
|
+
self.nosort = !!options.nosort
|
|
81
|
+
self.nocase = !!options.nocase
|
|
82
|
+
self.stat = !!options.stat
|
|
83
|
+
self.noprocess = !!options.noprocess
|
|
84
|
+
self.absolute = !!options.absolute
|
|
85
|
+
self.fs = options.fs || fs
|
|
86
|
+
|
|
87
|
+
self.maxLength = options.maxLength || Infinity
|
|
88
|
+
self.cache = options.cache || Object.create(null)
|
|
89
|
+
self.statCache = options.statCache || Object.create(null)
|
|
90
|
+
self.symlinks = options.symlinks || Object.create(null)
|
|
91
|
+
|
|
92
|
+
setupIgnores(self, options)
|
|
93
|
+
|
|
94
|
+
self.changedCwd = false
|
|
95
|
+
var cwd = process.cwd()
|
|
96
|
+
if (!ownProp(options, "cwd"))
|
|
97
|
+
self.cwd = path.resolve(cwd)
|
|
98
|
+
else {
|
|
99
|
+
self.cwd = path.resolve(options.cwd)
|
|
100
|
+
self.changedCwd = self.cwd !== cwd
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
self.root = options.root || path.resolve(self.cwd, "/")
|
|
104
|
+
self.root = path.resolve(self.root)
|
|
105
|
+
|
|
106
|
+
// TODO: is an absolute `cwd` supposed to be resolved against `root`?
|
|
107
|
+
// e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')
|
|
108
|
+
self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)
|
|
109
|
+
self.nomount = !!options.nomount
|
|
110
|
+
|
|
111
|
+
if (process.platform === "win32") {
|
|
112
|
+
self.root = self.root.replace(/\\/g, "/")
|
|
113
|
+
self.cwd = self.cwd.replace(/\\/g, "/")
|
|
114
|
+
self.cwdAbs = self.cwdAbs.replace(/\\/g, "/")
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// disable comments and negation in Minimatch.
|
|
118
|
+
// Note that they are not supported in Glob itself anyway.
|
|
119
|
+
options.nonegate = true
|
|
120
|
+
options.nocomment = true
|
|
121
|
+
|
|
122
|
+
self.minimatch = new Minimatch(pattern, options)
|
|
123
|
+
self.options = self.minimatch.options
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function finish (self) {
|
|
127
|
+
var nou = self.nounique
|
|
128
|
+
var all = nou ? [] : Object.create(null)
|
|
129
|
+
|
|
130
|
+
for (var i = 0, l = self.matches.length; i < l; i ++) {
|
|
131
|
+
var matches = self.matches[i]
|
|
132
|
+
if (!matches || Object.keys(matches).length === 0) {
|
|
133
|
+
if (self.nonull) {
|
|
134
|
+
// do like the shell, and spit out the literal glob
|
|
135
|
+
var literal = self.minimatch.globSet[i]
|
|
136
|
+
if (nou)
|
|
137
|
+
all.push(literal)
|
|
138
|
+
else
|
|
139
|
+
all[literal] = true
|
|
140
|
+
}
|
|
141
|
+
} else {
|
|
142
|
+
// had matches
|
|
143
|
+
var m = Object.keys(matches)
|
|
144
|
+
if (nou)
|
|
145
|
+
all.push.apply(all, m)
|
|
146
|
+
else
|
|
147
|
+
m.forEach(function (m) {
|
|
148
|
+
all[m] = true
|
|
149
|
+
})
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (!nou)
|
|
154
|
+
all = Object.keys(all)
|
|
155
|
+
|
|
156
|
+
if (!self.nosort)
|
|
157
|
+
all = all.sort(alphasort)
|
|
158
|
+
|
|
159
|
+
// at *some* point we statted all of these
|
|
160
|
+
if (self.mark) {
|
|
161
|
+
for (var i = 0; i < all.length; i++) {
|
|
162
|
+
all[i] = self._mark(all[i])
|
|
163
|
+
}
|
|
164
|
+
if (self.nodir) {
|
|
165
|
+
all = all.filter(function (e) {
|
|
166
|
+
var notDir = !(/\/$/.test(e))
|
|
167
|
+
var c = self.cache[e] || self.cache[makeAbs(self, e)]
|
|
168
|
+
if (notDir && c)
|
|
169
|
+
notDir = c !== 'DIR' && !Array.isArray(c)
|
|
170
|
+
return notDir
|
|
171
|
+
})
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (self.ignore.length)
|
|
176
|
+
all = all.filter(function(m) {
|
|
177
|
+
return !isIgnored(self, m)
|
|
178
|
+
})
|
|
179
|
+
|
|
180
|
+
self.found = all
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function mark (self, p) {
|
|
184
|
+
var abs = makeAbs(self, p)
|
|
185
|
+
var c = self.cache[abs]
|
|
186
|
+
var m = p
|
|
187
|
+
if (c) {
|
|
188
|
+
var isDir = c === 'DIR' || Array.isArray(c)
|
|
189
|
+
var slash = p.slice(-1) === '/'
|
|
190
|
+
|
|
191
|
+
if (isDir && !slash)
|
|
192
|
+
m += '/'
|
|
193
|
+
else if (!isDir && slash)
|
|
194
|
+
m = m.slice(0, -1)
|
|
195
|
+
|
|
196
|
+
if (m !== p) {
|
|
197
|
+
var mabs = makeAbs(self, m)
|
|
198
|
+
self.statCache[mabs] = self.statCache[abs]
|
|
199
|
+
self.cache[mabs] = self.cache[abs]
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
return m
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// lotta situps...
|
|
207
|
+
function makeAbs (self, f) {
|
|
208
|
+
var abs = f
|
|
209
|
+
if (f.charAt(0) === '/') {
|
|
210
|
+
abs = path.join(self.root, f)
|
|
211
|
+
} else if (isAbsolute(f) || f === '') {
|
|
212
|
+
abs = f
|
|
213
|
+
} else if (self.changedCwd) {
|
|
214
|
+
abs = path.resolve(self.cwd, f)
|
|
215
|
+
} else {
|
|
216
|
+
abs = path.resolve(f)
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (process.platform === 'win32')
|
|
220
|
+
abs = abs.replace(/\\/g, '/')
|
|
221
|
+
|
|
222
|
+
return abs
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
// Return true, if pattern ends with globstar '**', for the accompanying parent directory.
|
|
227
|
+
// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
|
|
228
|
+
function isIgnored (self, path) {
|
|
229
|
+
if (!self.ignore.length)
|
|
230
|
+
return false
|
|
231
|
+
|
|
232
|
+
return self.ignore.some(function(item) {
|
|
233
|
+
return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))
|
|
234
|
+
})
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function childrenIgnored (self, path) {
|
|
238
|
+
if (!self.ignore.length)
|
|
239
|
+
return false
|
|
240
|
+
|
|
241
|
+
return self.ignore.some(function(item) {
|
|
242
|
+
return !!(item.gmatcher && item.gmatcher.match(path))
|
|
243
|
+
})
|
|
244
|
+
}
|