mirror of
https://github.com/nodejs/node.git
synced 2025-05-01 08:42:45 +00:00

This improves the completion output by removing the nested special handling. It never fully worked as expected and required a lot of hacks to even keep it working halfway reliable. Our tests did not cover syntax errors though and those can not be handled by this implementation. Those break the layout and confuse the REPL. Besides that the completion now also works in case the current line has leading whitespace. Also improve the error output in case the completion fails. PR-URL: https://github.com/nodejs/node/pull/30907 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
24 lines
844 B
JavaScript
24 lines
844 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');
|
|
const err = result.stderr.toString();
|
|
assert.ok(err.includes('fhqwhgads'), err);
|