mocha 3.5.1 → 4.0.1

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/lib/test.js CHANGED
@@ -5,8 +5,8 @@
5
5
  */
6
6
 
7
7
  var Runnable = require('./runnable');
8
- var create = require('lodash.create');
9
- var isString = require('./utils').isString;
8
+ var utils = require('./utils');
9
+ var isString = utils.isString;
10
10
 
11
11
  /**
12
12
  * Expose `Test`.
@@ -33,9 +33,7 @@ function Test (title, fn) {
33
33
  /**
34
34
  * Inherit from `Runnable.prototype`.
35
35
  */
36
- Test.prototype = create(Runnable.prototype, {
37
- constructor: Test
38
- });
36
+ utils.inherits(Test, Runnable);
39
37
 
40
38
  Test.prototype.clone = function () {
41
39
  var test = new Test(this.title, this.fn);
package/lib/utils.js CHANGED
@@ -6,10 +6,9 @@
6
6
  * Module dependencies.
7
7
  */
8
8
 
9
- var JSON = require('json3');
10
9
  var basename = require('path').basename;
11
10
  var debug = require('debug')('mocha:watch');
12
- var exists = require('fs').existsSync || require('path').existsSync;
11
+ var exists = require('fs').existsSync;
13
12
  var glob = require('glob');
14
13
  var path = require('path');
15
14
  var join = path.join;
@@ -17,7 +16,6 @@ var readdirSync = require('fs').readdirSync;
17
16
  var statSync = require('fs').statSync;
18
17
  var watchFile = require('fs').watchFile;
19
18
  var lstatSync = require('fs').lstatSync;
20
- var toISOString = require('./to-iso-string');
21
19
  var he = require('he');
22
20
 
23
21
  /**
@@ -36,21 +34,7 @@ exports.inherits = require('util').inherits;
36
34
  * @return {string}
37
35
  */
38
36
  exports.escape = function (html) {
39
- return he.encode(String(html), { useNamedReferences: true });
40
- };
41
-
42
- /**
43
- * Array#forEach (<=IE8)
44
- *
45
- * @api private
46
- * @param {Array} arr
47
- * @param {Function} fn
48
- * @param {Object} scope
49
- */
50
- exports.forEach = function (arr, fn, scope) {
51
- for (var i = 0, l = arr.length; i < l; i++) {
52
- fn.call(scope, arr[i], i);
53
- }
37
+ return he.encode(String(html), { useNamedReferences: false });
54
38
  };
55
39
 
56
40
  /**
@@ -64,118 +48,6 @@ exports.isString = function (obj) {
64
48
  return typeof obj === 'string';
65
49
  };
66
50
 
67
- /**
68
- * Array#map (<=IE8)
69
- *
70
- * @api private
71
- * @param {Array} arr
72
- * @param {Function} fn
73
- * @param {Object} scope
74
- * @return {Array}
75
- */
76
- exports.map = function (arr, fn, scope) {
77
- var result = [];
78
- for (var i = 0, l = arr.length; i < l; i++) {
79
- result.push(fn.call(scope, arr[i], i, arr));
80
- }
81
- return result;
82
- };
83
-
84
- /**
85
- * Array#indexOf (<=IE8)
86
- *
87
- * @api private
88
- * @param {Array} arr
89
- * @param {Object} obj to find index of
90
- * @param {number} start
91
- * @return {number}
92
- */
93
- var indexOf = exports.indexOf = function (arr, obj, start) {
94
- for (var i = start || 0, l = arr.length; i < l; i++) {
95
- if (arr[i] === obj) {
96
- return i;
97
- }
98
- }
99
- return -1;
100
- };
101
-
102
- /**
103
- * Array#reduce (<=IE8)
104
- *
105
- * @api private
106
- * @param {Array} arr
107
- * @param {Function} fn
108
- * @param {Object} val Initial value.
109
- * @return {*}
110
- */
111
- var reduce = exports.reduce = function (arr, fn, val) {
112
- var rval = val;
113
-
114
- for (var i = 0, l = arr.length; i < l; i++) {
115
- rval = fn(rval, arr[i], i, arr);
116
- }
117
-
118
- return rval;
119
- };
120
-
121
- /**
122
- * Array#filter (<=IE8)
123
- *
124
- * @api private
125
- * @param {Array} arr
126
- * @param {Function} fn
127
- * @return {Array}
128
- */
129
- exports.filter = function (arr, fn) {
130
- var ret = [];
131
-
132
- for (var i = 0, l = arr.length; i < l; i++) {
133
- var val = arr[i];
134
- if (fn(val, i, arr)) {
135
- ret.push(val);
136
- }
137
- }
138
-
139
- return ret;
140
- };
141
-
142
- /**
143
- * Array#some (<=IE8)
144
- *
145
- * @api private
146
- * @param {Array} arr
147
- * @param {Function} fn
148
- * @return {Array}
149
- */
150
- exports.some = function (arr, fn) {
151
- for (var i = 0, l = arr.length; i < l; i++) {
152
- if (fn(arr[i])) {
153
- return true;
154
- }
155
- }
156
- return false;
157
- };
158
-
159
- /**
160
- * Object.keys (<=IE8)
161
- *
162
- * @api private
163
- * @param {Object} obj
164
- * @return {Array} keys
165
- */
166
- exports.keys = typeof Object.keys === 'function' ? Object.keys : function (obj) {
167
- var keys = [];
168
- var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8
169
-
170
- for (var key in obj) {
171
- if (has.call(obj, key)) {
172
- keys.push(key);
173
- }
174
- }
175
-
176
- return keys;
177
- };
178
-
179
51
  /**
180
52
  * Watch the given `files` for changes
181
53
  * and invoke `fn(file)` on modification.
@@ -196,30 +68,6 @@ exports.watch = function (files, fn) {
196
68
  });
197
69
  };
198
70
 
199
- /**
200
- * Array.isArray (<=IE8)
201
- *
202
- * @api private
203
- * @param {Object} obj
204
- * @return {Boolean}
205
- */
206
- var isArray = typeof Array.isArray === 'function' ? Array.isArray : function (obj) {
207
- return Object.prototype.toString.call(obj) === '[object Array]';
208
- };
209
-
210
- exports.isArray = isArray;
211
-
212
- /**
213
- * Buffer.prototype.toJSON polyfill.
214
- *
215
- * @type {Function}
216
- */
217
- if (typeof Buffer !== 'undefined' && Buffer.prototype) {
218
- Buffer.prototype.toJSON = Buffer.prototype.toJSON || function () {
219
- return Array.prototype.slice.call(this, 0);
220
- };
221
- }
222
-
223
71
  /**
224
72
  * Ignored files.
225
73
  *
@@ -292,18 +140,7 @@ exports.clean = function (str) {
292
140
 
293
141
  str = str.replace(re, '');
294
142
 
295
- return exports.trim(str);
296
- };
297
-
298
- /**
299
- * Trim the given `str`.
300
- *
301
- * @api private
302
- * @param {string} str
303
- * @return {string}
304
- */
305
- exports.trim = function (str) {
306
- return str.replace(/^\s+|\s+$/g, '');
143
+ return str.trim();
307
144
  };
308
145
 
309
146
  /**
@@ -314,7 +151,7 @@ exports.trim = function (str) {
314
151
  * @return {Object}
315
152
  */
316
153
  exports.parseQuery = function (qs) {
317
- return reduce(qs.replace('?', '').split('&'), function (obj, pair) {
154
+ return qs.replace('?', '').split('&').reduce(function (obj, pair) {
318
155
  var i = pair.indexOf('=');
319
156
  var key = pair.slice(0, i);
320
157
  var val = pair.slice(++i);
@@ -411,7 +248,7 @@ var type = exports.type = function type (value) {
411
248
  return 'undefined';
412
249
  } else if (value === null) {
413
250
  return 'null';
414
- } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {
251
+ } else if (Buffer.isBuffer(value)) {
415
252
  return 'buffer';
416
253
  }
417
254
  return Object.prototype.toString.call(value)
@@ -437,9 +274,9 @@ var type = exports.type = function type (value) {
437
274
  exports.stringify = function (value) {
438
275
  var typeHint = type(value);
439
276
 
440
- if (!~indexOf(['object', 'array', 'function'], typeHint)) {
277
+ if (!~['object', 'array', 'function'].indexOf(typeHint)) {
441
278
  if (typeHint === 'buffer') {
442
- var json = value.toJSON();
279
+ var json = Buffer.prototype.toJSON.call(value);
443
280
  // Based on the toJSON result
444
281
  return jsonStringify(json.data && json.type ? json.data : json, 2)
445
282
  .replace(/,(\n|$)/g, '$1');
@@ -448,7 +285,7 @@ exports.stringify = function (value) {
448
285
  // IE7/IE8 has a bizarre String constructor; needs to be coerced
449
286
  // into an array and back to obj.
450
287
  if (typeHint === 'string' && typeof value === 'object') {
451
- value = reduce(value.split(''), function (acc, char, idx) {
288
+ value = value.split('').reduce(function (acc, char, idx) {
452
289
  acc[idx] = char;
453
290
  return acc;
454
291
  }, {});
@@ -484,9 +321,9 @@ function jsonStringify (object, spaces, depth) {
484
321
 
485
322
  depth = depth || 1;
486
323
  var space = spaces * depth;
487
- var str = isArray(object) ? '[' : '{';
488
- var end = isArray(object) ? ']' : '}';
489
- var length = typeof object.length === 'number' ? object.length : exports.keys(object).length;
324
+ var str = Array.isArray(object) ? '[' : '{';
325
+ var end = Array.isArray(object) ? ']' : '}';
326
+ var length = typeof object.length === 'number' ? object.length : Object.keys(object).length;
490
327
  // `.repeat()` polyfill
491
328
  function repeat (s, n) {
492
329
  return new Array(n).join(s);
@@ -511,12 +348,7 @@ function jsonStringify (object, spaces, depth) {
511
348
  : val.toString();
512
349
  break;
513
350
  case 'date':
514
- var sDate;
515
- if (isNaN(val.getTime())) { // Invalid date
516
- sDate = val.toString();
517
- } else {
518
- sDate = val.toISOString ? val.toISOString() : toISOString(val);
519
- }
351
+ var sDate = isNaN(val.getTime()) ? val.toString() : val.toISOString();
520
352
  val = '[Date: ' + sDate + ']';
521
353
  break;
522
354
  case 'buffer':
@@ -539,9 +371,9 @@ function jsonStringify (object, spaces, depth) {
539
371
  }
540
372
  --length;
541
373
  str += '\n ' + repeat(' ', space) +
542
- (isArray(object) ? '' : '"' + i + '": ') + // key
543
- _stringify(object[i]) + // value
544
- (length ? ',' : ''); // comma
374
+ (Array.isArray(object) ? '' : '"' + i + '": ') + // key
375
+ _stringify(object[i]) + // value
376
+ (length ? ',' : ''); // comma
545
377
  }
546
378
 
547
379
  return str +
@@ -549,17 +381,6 @@ function jsonStringify (object, spaces, depth) {
549
381
  (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end);
550
382
  }
551
383
 
552
- /**
553
- * Test if a value is a buffer.
554
- *
555
- * @api private
556
- * @param {*} value The value to test.
557
- * @return {boolean} True if `value` is a buffer, otherwise false
558
- */
559
- exports.isBuffer = function (value) {
560
- return typeof Buffer !== 'undefined' && Buffer.isBuffer(value);
561
- };
562
-
563
384
  /**
564
385
  * Return a new Thing that has the keys in sorted order. Recursive.
565
386
  *
@@ -593,7 +414,7 @@ exports.canonicalize = function canonicalize (value, stack, typeHint) {
593
414
 
594
415
  stack = stack || [];
595
416
 
596
- if (indexOf(stack, value) !== -1) {
417
+ if (stack.indexOf(value) !== -1) {
597
418
  return '[Circular]';
598
419
  }
599
420
 
@@ -605,7 +426,7 @@ exports.canonicalize = function canonicalize (value, stack, typeHint) {
605
426
  break;
606
427
  case 'array':
607
428
  withStack(value, function () {
608
- canonicalizedObj = exports.map(value, function (item) {
429
+ canonicalizedObj = value.map(function (item) {
609
430
  return exports.canonicalize(item, stack);
610
431
  });
611
432
  });
@@ -625,7 +446,7 @@ exports.canonicalize = function canonicalize (value, stack, typeHint) {
625
446
  case 'object':
626
447
  canonicalizedObj = canonicalizedObj || {};
627
448
  withStack(value, function () {
628
- exports.forEach(exports.keys(value).sort(), function (key) {
449
+ Object.keys(value).sort().forEach(function (key) {
629
450
  canonicalizedObj[key] = exports.canonicalize(value[key], stack);
630
451
  });
631
452
  });
@@ -765,7 +586,7 @@ exports.stackTraceFilter = function () {
765
586
  return function (stack) {
766
587
  stack = stack.split('\n');
767
588
 
768
- stack = reduce(stack, function (list, line) {
589
+ stack = stack.reduce(function (list, line) {
769
590
  if (isMochaInternal(line)) {
770
591
  return list;
771
592
  }