diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2019-09-06 23:25:36 +0200 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-09-08 21:19:35 -0700 |
commit | 821799024e4305b56bb52e784cd2705cf7c436a5 (patch) | |
tree | 1a2d8acd05a4ba335b1d10aca85d8e6cf265b6e0 /test/async-hooks | |
parent | 695e8195176730078dba4d8c8c1ba4acf236d651 (diff) | |
download | android-node-v8-821799024e4305b56bb52e784cd2705cf7c436a5.tar.gz android-node-v8-821799024e4305b56bb52e784cd2705cf7c436a5.tar.bz2 android-node-v8-821799024e4305b56bb52e784cd2705cf7c436a5.zip |
test: disable core dumps before running crash test
The test spawns a subprocess with the `--abort-on-uncaught-exception`
flag and expects it to terminate with a SIGABRT signal.
On systems where core dumps are enabled, that actually generates an
unnecessary core dump. Set `ulimit -c 0` before spawning the subprocess.
Fixes: https://github.com/nodejs/node/issues/29286
PR-URL: https://github.com/nodejs/node/pull/29478
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: David Carlier <devnexen@gmail.com>
Diffstat (limited to 'test/async-hooks')
-rw-r--r-- | test/async-hooks/test-callback-error.js | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/test/async-hooks/test-callback-error.js b/test/async-hooks/test-callback-error.js index 06d8cb7224..8bbed36498 100644 --- a/test/async-hooks/test-callback-error.js +++ b/test/async-hooks/test-callback-error.js @@ -1,7 +1,7 @@ 'use strict'; const common = require('../common'); const assert = require('assert'); -const { spawnSync, fork } = require('child_process'); +const { spawnSync } = require('child_process'); const async_hooks = require('async_hooks'); const initHooks = require('./init-hooks'); @@ -58,39 +58,31 @@ assert.ok(!arg); { console.log('start case 3'); console.time('end case 3'); - const opts = { - execArgv: ['--abort-on-uncaught-exception'], - silent: true - }; - const child = fork(__filename, ['test_callback_abort'], opts); - - let stdout = ''; - child.stdout.on('data', (data) => { - stdout += data; - }); - - let stderr = ''; - child.stderr.on('data', (data) => { - stderr += data; - }); - - child.on('close', (code, signal) => { - if (common.isWindows) { - assert.strictEqual(code, 134); - assert.strictEqual(signal, null); - } else { - assert.strictEqual(code, null); - // Most posix systems will show 'SIGABRT', but alpine34 does not - if (signal !== 'SIGABRT') { - console.log(`parent received signal ${signal}\nchild's stderr:`); - console.log(stderr); - process.exit(1); - } - assert.strictEqual(signal, 'SIGABRT'); + let program = process.execPath; + let args = [ + '--abort-on-uncaught-exception', __filename, 'test_callback_abort' ]; + const options = { encoding: 'utf8' }; + if (!common.isWindows) { + program = `ulimit -c 0 && exec ${program} ${args.join(' ')}`; + args = []; + options.shell = true; + } + const child = spawnSync(program, args, options); + if (common.isWindows) { + assert.strictEqual(child.status, 134); + assert.strictEqual(child.signal, null); + } else { + assert.strictEqual(child.status, null); + // Most posix systems will show 'SIGABRT', but alpine34 does not + if (child.signal !== 'SIGABRT') { + console.log(`parent received signal ${child.signal}\nchild's stderr:`); + console.log(child.stderr); + process.exit(1); } - assert.strictEqual(stdout, ''); - const firstLineStderr = stderr.split(/[\r\n]+/g)[0].trim(); - assert.strictEqual(firstLineStderr, 'Error: test_callback_abort'); - }); + assert.strictEqual(child.signal, 'SIGABRT'); + } + assert.strictEqual(child.stdout, ''); + const firstLineStderr = child.stderr.split(/[\r\n]+/g)[0].trim(); + assert.strictEqual(firstLineStderr, 'Error: test_callback_abort'); console.timeEnd('end case 3'); } |