test: improve test-abort-backtrace
Improve error message by showing output when frames output does not meet expectations. Since we can't tell at runtime if we have the correct libc for backtraces, allow an empty backtrace and run the test on all platforms. PR-URL: https://github.com/nodejs/node/pull/14013 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
This commit is contained in:
parent
acdf558551
commit
df57d8bdcc
@ -10,13 +10,19 @@ if (process.argv[2] === 'child') {
|
|||||||
process.abort();
|
process.abort();
|
||||||
} else {
|
} else {
|
||||||
const child = cp.spawnSync(`${process.execPath}`, [`${__filename}`, 'child']);
|
const child = cp.spawnSync(`${process.execPath}`, [`${__filename}`, 'child']);
|
||||||
const frames =
|
const stderr = child.stderr.toString();
|
||||||
child.stderr.toString().trimRight().split('\n').map((s) => s.trim());
|
|
||||||
|
|
||||||
assert.strictEqual(child.stdout.toString(), '');
|
assert.strictEqual(child.stdout.toString(), '');
|
||||||
assert.ok(frames.length > 0);
|
// stderr will be empty for systems that don't support backtraces.
|
||||||
// All frames should start with a frame number.
|
if (stderr !== '') {
|
||||||
assert.ok(frames.every((frame, index) => frame.startsWith(`${index + 1}:`)));
|
const frames = stderr.trimRight().split('\n').map((s) => s.trim());
|
||||||
// At least some of the frames should include the binary name.
|
|
||||||
assert.ok(frames.some((frame) => frame.includes(`[${process.execPath}]`)));
|
if (!frames.every((frame, index) => frame.startsWith(`${index + 1}:`))) {
|
||||||
|
assert.fail(`Each frame should start with a frame number:\n${stderr}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!frames.some((frame) => frame.includes(`[${process.execPath}]`))) {
|
||||||
|
assert.fail(`Some frames should include the binary name:\n${stderr}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user