mirror of
https://github.com/nodejs/node.git
synced 2025-05-07 15:35:41 +00:00

For tab completion, a REPLServer instance will sometimes create another REPLServer instance. If a callback is sent to the `.complete()` function and that callback throws an error, it will be swallowed by the nested REPLs domain. Re-throw the error so that processes don't silently exit without any indication of an error (including a status code). Fixes: https://github.com/nodejs/node/issues/21586 PR-URL: https://github.com/nodejs/node/pull/23004 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
22 lines
763 B
JavaScript
22 lines
763 B
JavaScript
// Tab completion sometimes uses a separate REPL instance under the hood.
|
|
// That REPL instance has its own domain. Make sure domain errors trickle back
|
|
// up to the main REPL.
|
|
//
|
|
// Ref: https://github.com/nodejs/node/issues/21586
|
|
|
|
'use strict';
|
|
|
|
require('../common');
|
|
const fixtures = require('../common/fixtures');
|
|
|
|
const assert = require('assert');
|
|
const { spawnSync } = require('child_process');
|
|
|
|
const testFile = fixtures.path('repl-tab-completion-nested-repls.js');
|
|
const result = spawnSync(process.execPath, [testFile]);
|
|
|
|
// The spawned process will fail. In Node.js 10.11.0, it will fail silently. The
|
|
// test here is to make sure that the error information bubbles up to the
|
|
// calling process.
|
|
assert.ok(result.status, 'testFile swallowed its error');
|