Skip to content

Commit f00f3c4

Browse files
oantoronovemberborn
authored andcommittedJan 25, 2018
Don't set Error.stackTraceLimit in worker processes
Fixes #483.
1 parent c2b42ec commit f00f3c4

File tree

4 files changed

+29
-2
lines changed

4 files changed

+29
-2
lines changed
 

‎lib/assert.js

+8
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,22 @@ class AssertionError extends Error {
4949

5050
if (opts.stack) {
5151
this.stack = opts.stack;
52+
} else {
53+
const limitBefore = Error.stackTraceLimit;
54+
Error.stackTraceLimit = Infinity;
55+
Error.captureStackTrace(this);
56+
Error.stackTraceLimit = limitBefore;
5257
}
5358
}
5459
}
5560
exports.AssertionError = AssertionError;
5661

5762
function getStack() {
63+
const limitBefore = Error.stackTraceLimit;
64+
Error.stackTraceLimit = Infinity;
5865
const obj = {};
5966
Error.captureStackTrace(obj, getStack);
67+
Error.stackTraceLimit = limitBefore;
6068
return obj.stack;
6169
}
6270

‎lib/main.js

-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ worker.setRunner(runner);
2323
// that no more tests should be logged
2424
let isFailed = false;
2525

26-
Error.stackTraceLimit = Infinity;
27-
2826
function test(props) {
2927
if (isFailed) {
3028
return;

‎test/cli.js

+10
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,16 @@ test('enabling long stack traces will provide detailed debug information', t =>
8383
});
8484
});
8585

86+
test('`AssertionError` should capture infinity stack trace', t => {
87+
execCli('fixture/infinity-stack-trace.js', (err, stdout, stderr) => {
88+
t.ok(err);
89+
t.match(stderr, /c \(.+?infinity-stack-trace\.js:6:20\)/);
90+
t.match(stderr, /b \(.+?infinity-stack-trace\.js:7:18\)/);
91+
t.match(stderr, /a \(.+?infinity-stack-trace\.js:8:18\)/);
92+
t.end();
93+
});
94+
});
95+
8696
test('timeout', t => {
8797
execCli(['fixture/long-running.js', '-T', '1s'], (err, stdout, stderr) => {
8898
t.ok(err);

‎test/fixture/infinity-stack-trace.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import test from '../../';
2+
3+
Error.stackTraceLimit = 1;
4+
5+
test(t => {
6+
const c = () => t.fail();
7+
const b = () => c();
8+
const a = () => b();
9+
10+
a();
11+
});

0 commit comments

Comments
 (0)
Please sign in to comment.