mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 18:25:13 +08:00
Signed-off-by: Aviv Keller <me@aviv.sh> PR-URL: https://github.com/nodejs/node/pull/64034 Fixes: https://github.com/nodejs/node/issues/64523 Closes: https://github.com/nodejs/node/pull/64534 Fixes: https://github.com/nodejs/node/issues/39387 Closes: https://github.com/nodejs/node/pull/39392 Fixes: https://github.com/nodejs/node/issues/61390 Fixes: https://github.com/nodejs/node/issues/63126 Fixes: https://github.com/nodejs/node/issues/38503 Fixes: https://github.com/nodejs/node/issues/37445 Fixes: https://github.com/nodejs/node/issues/38145 Fixes: https://github.com/nodejs/node/issues/33369 Fixes: https://github.com/nodejs/node/issues/48131 Fixes: https://github.com/nodejs/node/issues/8309 Fixes: https://github.com/nodejs/node/issues/39689 Fixes: https://github.com/nodejs/node/issues/18931 Reviewed-By: Dario Piotrowicz <dario.piotrowicz@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com>
48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const { startNewREPLServer } = require('../common/repl');
|
|
|
|
// Tab completion in editor mode
|
|
{
|
|
const { replServer, input } = startNewREPLServer();
|
|
|
|
input.run(['.clear', '.editor']);
|
|
|
|
replServer.completer('Uin', common.mustCall((_error, data) => {
|
|
assert.deepStrictEqual(data, [['Uint'], 'Uin']);
|
|
}));
|
|
|
|
input.run(['.clear', '.editor']);
|
|
|
|
replServer.completer('var log = console.l', common.mustCall((_error, data) => {
|
|
assert.deepStrictEqual(data, [['console.log'], 'console.l']);
|
|
}));
|
|
}
|
|
|
|
// Regression test for https://github.com/nodejs/node/issues/43528
|
|
{
|
|
const { replServer } = startNewREPLServer();
|
|
|
|
// Editor mode
|
|
replServer.write('.editor\n');
|
|
|
|
replServer.write('a');
|
|
|
|
// Tab completion is asynchronous (it is driven by the inspector), so the
|
|
// REPL must only be closed once the completion has settled. Closing it while
|
|
// a completion is still in flight would make the completion callback resume a
|
|
// closed readline interface and throw `ERR_USE_AFTER_CLOSE`.
|
|
const originalCompleter = replServer.completer;
|
|
replServer.completer = common.mustCall((text, cb) => {
|
|
originalCompleter.call(replServer, text, common.mustCall((...args) => {
|
|
const result = cb(...args);
|
|
replServer.close();
|
|
return result;
|
|
}));
|
|
});
|
|
|
|
replServer.write(null, { name: 'tab' }); // Should not throw
|
|
}
|