mocha 10.3.0-preminor.0 → 10.4.0

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/cli/run.js CHANGED
@@ -369,7 +369,7 @@ exports.handler = async function (argv) {
369
369
  try {
370
370
  await runMocha(mocha, argv);
371
371
  } catch (err) {
372
- console.error('\n' + (err.stack || `Error: ${err.message || err}`));
372
+ console.error('\n Exception during run:', err);
373
373
  process.exit(1);
374
374
  }
375
375
  };
@@ -221,6 +221,56 @@ var generateDiff = (exports.generateDiff = function (actual, expected) {
221
221
  }
222
222
  });
223
223
 
224
+ /**
225
+ * Traverses err.cause and returns all stack traces
226
+ *
227
+ * @private
228
+ * @param {Error} err
229
+ * @param {Set<Error>} [seen]
230
+ * @return {FullErrorStack}
231
+ */
232
+ var getFullErrorStack = function (err, seen) {
233
+ if (seen && seen.has(err)) {
234
+ return { message: '', msg: '<circular>', stack: '' };
235
+ }
236
+
237
+ var message;
238
+
239
+ if (typeof err.inspect === 'function') {
240
+ message = err.inspect() + '';
241
+ } else if (err.message && typeof err.message.toString === 'function') {
242
+ message = err.message + '';
243
+ } else {
244
+ message = '';
245
+ }
246
+
247
+ var msg;
248
+ var stack = err.stack || message;
249
+ var index = message ? stack.indexOf(message) : -1;
250
+
251
+ if (index === -1) {
252
+ msg = message;
253
+ } else {
254
+ index += message.length;
255
+ msg = stack.slice(0, index);
256
+ // remove msg from stack
257
+ stack = stack.slice(index + 1);
258
+
259
+ if (err.cause) {
260
+ seen = seen || new Set();
261
+ seen.add(err);
262
+ const causeStack = getFullErrorStack(err.cause, seen)
263
+ stack += '\n Caused by: ' + causeStack.msg + (causeStack.stack ? '\n' + causeStack.stack : '');
264
+ }
265
+ }
266
+
267
+ return {
268
+ message,
269
+ msg,
270
+ stack
271
+ };
272
+ };
273
+
224
274
  /**
225
275
  * Outputs the given `failures` as a list.
226
276
  *
@@ -241,7 +291,6 @@ exports.list = function (failures) {
241
291
  color('error stack', '\n%s\n');
242
292
 
243
293
  // msg
244
- var msg;
245
294
  var err;
246
295
  if (test.err && test.err.multiple) {
247
296
  if (multipleTest !== test) {
@@ -252,25 +301,8 @@ exports.list = function (failures) {
252
301
  } else {
253
302
  err = test.err;
254
303
  }
255
- var message;
256
- if (typeof err.inspect === 'function') {
257
- message = err.inspect() + '';
258
- } else if (err.message && typeof err.message.toString === 'function') {
259
- message = err.message + '';
260
- } else {
261
- message = '';
262
- }
263
- var stack = err.stack || message;
264
- var index = message ? stack.indexOf(message) : -1;
265
304
 
266
- if (index === -1) {
267
- msg = message;
268
- } else {
269
- index += message.length;
270
- msg = stack.slice(0, index);
271
- // remove msg from stack
272
- stack = stack.slice(index + 1);
273
- }
305
+ var { message, msg, stack } = getFullErrorStack(err);
274
306
 
275
307
  // uncaught
276
308
  if (err.uncaught) {
@@ -548,3 +580,12 @@ function sameType(a, b) {
548
580
  Base.consoleLog = consoleLog;
549
581
 
550
582
  Base.abstract = true;
583
+
584
+ /**
585
+ * An object with all stack traces recursively mounted from each err.cause
586
+ * @memberof module:lib/reporters/base
587
+ * @typedef {Object} FullErrorStack
588
+ * @property {string} message
589
+ * @property {string} msg
590
+ * @property {string} stack
591
+ */
@@ -158,6 +158,7 @@ XUnit.prototype.test = function (test) {
158
158
  var attrs = {
159
159
  classname: test.parent.fullTitle(),
160
160
  name: test.title,
161
+ file: test.file,
161
162
  time: test.duration / 1000 || 0
162
163
  };
163
164
 
package/lib/runner.js CHANGED
@@ -443,11 +443,22 @@ Runner.prototype.fail = function (test, err, force) {
443
443
  err = thrown2Error(err);
444
444
  }
445
445
 
446
- try {
447
- err.stack =
448
- this.fullStackTrace || !err.stack ? err.stack : stackFilter(err.stack);
449
- } catch (ignore) {
450
- // some environments do not take kindly to monkeying with the stack
446
+ // Filter the stack traces
447
+ if (!this.fullStackTrace) {
448
+ const alreadyFiltered = new Set();
449
+ let currentErr = err;
450
+
451
+ while (currentErr && currentErr.stack && !alreadyFiltered.has(currentErr)) {
452
+ alreadyFiltered.add(currentErr);
453
+
454
+ try {
455
+ currentErr.stack = stackFilter(currentErr.stack);
456
+ } catch (ignore) {
457
+ // some environments do not take kindly to monkeying with the stack
458
+ }
459
+
460
+ currentErr = currentErr.cause;
461
+ }
451
462
  }
452
463
 
453
464
  this.emit(constants.EVENT_TEST_FAIL, test, err);
package/mocha.js CHANGED
@@ -1,4 +1,4 @@
1
- // mocha@10.3.0-preminor.0 in javascript ES2018
1
+ // mocha@10.4.0 in javascript ES2018
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
4
4
  typeof define === 'function' && define.amd ? define(factory) :
@@ -14433,11 +14433,22 @@
14433
14433
  err = thrown2Error(err);
14434
14434
  }
14435
14435
 
14436
- try {
14437
- err.stack =
14438
- this.fullStackTrace || !err.stack ? err.stack : stackFilter(err.stack);
14439
- } catch (ignore) {
14440
- // some environments do not take kindly to monkeying with the stack
14436
+ // Filter the stack traces
14437
+ if (!this.fullStackTrace) {
14438
+ const alreadyFiltered = new Set();
14439
+ let currentErr = err;
14440
+
14441
+ while (currentErr && currentErr.stack && !alreadyFiltered.has(currentErr)) {
14442
+ alreadyFiltered.add(currentErr);
14443
+
14444
+ try {
14445
+ currentErr.stack = stackFilter(currentErr.stack);
14446
+ } catch (ignore) {
14447
+ // some environments do not take kindly to monkeying with the stack
14448
+ }
14449
+
14450
+ currentErr = currentErr.cause;
14451
+ }
14441
14452
  }
14442
14453
 
14443
14454
  this.emit(constants$1.EVENT_TEST_FAIL, test, err);
@@ -15468,6 +15479,56 @@
15468
15479
  }
15469
15480
  });
15470
15481
 
15482
+ /**
15483
+ * Traverses err.cause and returns all stack traces
15484
+ *
15485
+ * @private
15486
+ * @param {Error} err
15487
+ * @param {Set<Error>} [seen]
15488
+ * @return {FullErrorStack}
15489
+ */
15490
+ var getFullErrorStack = function (err, seen) {
15491
+ if (seen && seen.has(err)) {
15492
+ return { message: '', msg: '<circular>', stack: '' };
15493
+ }
15494
+
15495
+ var message;
15496
+
15497
+ if (typeof err.inspect === 'function') {
15498
+ message = err.inspect() + '';
15499
+ } else if (err.message && typeof err.message.toString === 'function') {
15500
+ message = err.message + '';
15501
+ } else {
15502
+ message = '';
15503
+ }
15504
+
15505
+ var msg;
15506
+ var stack = err.stack || message;
15507
+ var index = message ? stack.indexOf(message) : -1;
15508
+
15509
+ if (index === -1) {
15510
+ msg = message;
15511
+ } else {
15512
+ index += message.length;
15513
+ msg = stack.slice(0, index);
15514
+ // remove msg from stack
15515
+ stack = stack.slice(index + 1);
15516
+
15517
+ if (err.cause) {
15518
+ seen = seen || new Set();
15519
+ seen.add(err);
15520
+ const causeStack = getFullErrorStack(err.cause, seen);
15521
+ stack += '\n Caused by: ' + causeStack.msg + (causeStack.stack ? '\n' + causeStack.stack : '');
15522
+ }
15523
+ }
15524
+
15525
+ return {
15526
+ message,
15527
+ msg,
15528
+ stack
15529
+ };
15530
+ };
15531
+
15471
15532
  /**
15472
15533
  * Outputs the given `failures` as a list.
15473
15534
  *
@@ -15488,7 +15549,6 @@
15488
15549
  color('error stack', '\n%s\n');
15489
15550
 
15490
15551
  // msg
15491
- var msg;
15492
15552
  var err;
15493
15553
  if (test.err && test.err.multiple) {
15494
15554
  if (multipleTest !== test) {
@@ -15499,25 +15559,8 @@
15499
15559
  } else {
15500
15560
  err = test.err;
15501
15561
  }
15502
- var message;
15503
- if (typeof err.inspect === 'function') {
15504
- message = err.inspect() + '';
15505
- } else if (err.message && typeof err.message.toString === 'function') {
15506
- message = err.message + '';
15507
- } else {
15508
- message = '';
15509
- }
15510
- var stack = err.stack || message;
15511
- var index = message ? stack.indexOf(message) : -1;
15512
15562
 
15513
- if (index === -1) {
15514
- msg = message;
15515
- } else {
15516
- index += message.length;
15517
- msg = stack.slice(0, index);
15518
- // remove msg from stack
15519
- stack = stack.slice(index + 1);
15520
- }
15563
+ var { message, msg, stack } = getFullErrorStack(err);
15521
15564
 
15522
15565
  // uncaught
15523
15566
  if (err.uncaught) {
@@ -15795,6 +15838,15 @@
15795
15838
  Base.consoleLog = consoleLog;
15796
15839
 
15797
15840
  Base.abstract = true;
15841
+
15842
+ /**
15843
+ * An object with all stack traces recursively mounted from each err.cause
15844
+ * @memberof module:lib/reporters/base
15845
+ * @typedef {Object} FullErrorStack
15846
+ * @property {string} message
15847
+ * @property {string} msg
15848
+ * @property {string} stack
15849
+ */
15798
15850
  }(base$1, base$1.exports));
15799
15851
 
15800
15852
  var dot = {exports: {}};
@@ -17658,6 +17710,7 @@
17658
17710
  var attrs = {
17659
17711
  classname: test.parent.fullTitle(),
17660
17712
  name: test.title,
17713
+ file: test.file,
17661
17714
  time: test.duration / 1000 || 0
17662
17715
  };
17663
17716
 
@@ -19066,7 +19119,7 @@
19066
19119
  };
19067
19120
 
19068
19121
  var name = "mocha";
19069
- var version = "10.3.0-preminor.0";
19122
+ var version = "10.4.0";
19070
19123
  var homepage = "https://mochajs.org/";
19071
19124
  var notifyLogo = "https://ibin.co/4QuRuGjXvl36.png";
19072
19125
  var require$$17 = {