From df57d8bdccdc94e4d8327fc769d93dbadf8772c7 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 24 Aug 2017 23:18:58 -0700 Subject: 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 Reviewed-By: Refael Ackermann Reviewed-By: Ben Noordhuis Reviewed-By: Michael Dawson Reviewed-By: Colin Ihrig Reviewed-By: Ruben Bridgewater Reviewed-By: Yuta Hiroto Reviewed-By: Sakthipriyan Vairamani --- test/abort/test-abort-backtrace.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'test/abort') diff --git a/test/abort/test-abort-backtrace.js b/test/abort/test-abort-backtrace.js index dd10817168..6d3121e538 100644 --- a/test/abort/test-abort-backtrace.js +++ b/test/abort/test-abort-backtrace.js @@ -10,13 +10,19 @@ if (process.argv[2] === 'child') { process.abort(); } else { const child = cp.spawnSync(`${process.execPath}`, [`${__filename}`, 'child']); - const frames = - child.stderr.toString().trimRight().split('\n').map((s) => s.trim()); + const stderr = child.stderr.toString(); assert.strictEqual(child.stdout.toString(), ''); - assert.ok(frames.length > 0); - // All frames should start with a frame number. - assert.ok(frames.every((frame, index) => frame.startsWith(`${index + 1}:`))); - // At least some of the frames should include the binary name. - assert.ok(frames.some((frame) => frame.includes(`[${process.execPath}]`))); + // stderr will be empty for systems that don't support backtraces. + if (stderr !== '') { + const frames = stderr.trimRight().split('\n').map((s) => s.trim()); + + 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}`); + } + } } -- cgit v1.2.1