Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2019-12-11 21:26:47 +0300
committerRuben Bridgewater <ruben@bridgewater.de>2019-12-15 18:24:00 +0300
commit6c542d1c26decd53fa1154a5aa7a53b4199cad1f (patch)
tree51ec6e939011bdfe7191749bf403bf03909e6797 /test
parentaf5c8af5e9d02532d6a59e2a2544c1ea0c4877f7 (diff)
repl: improve completion
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>
Diffstat (limited to 'test')
-rw-r--r--test/fixtures/repl-tab-completion-nested-repls.js2
-rw-r--r--test/parallel/test-repl-save-load.js5
-rw-r--r--test/parallel/test-repl-tab-complete-nested-repls.js2
-rw-r--r--test/parallel/test-repl-tab-complete.js29
4 files changed, 15 insertions, 23 deletions
diff --git a/test/fixtures/repl-tab-completion-nested-repls.js b/test/fixtures/repl-tab-completion-nested-repls.js
index ceff6e79453..1d2b154f2b3 100644
--- a/test/fixtures/repl-tab-completion-nested-repls.js
+++ b/test/fixtures/repl-tab-completion-nested-repls.js
@@ -31,7 +31,7 @@ const repl = require('repl');
const putIn = new ArrayStream();
const testMe = repl.start('', putIn);
-// Some errors are passed to the domain, but do not callback
+// Some errors are passed to the domain, but do not callback.
testMe._domain.on('error', function(err) {
throw err;
});
diff --git a/test/parallel/test-repl-save-load.js b/test/parallel/test-repl-save-load.js
index ef9ff8f6498..f6ecc8d4ab6 100644
--- a/test/parallel/test-repl-save-load.js
+++ b/test/parallel/test-repl-save-load.js
@@ -44,8 +44,9 @@ testMe._domain.on('error', function(reason) {
});
const testFile = [
- 'let top = function() {',
- 'let inner = {one:1};'
+ 'let inner = (function() {',
+ ' return {one:1};',
+ '})()'
];
const saveFileName = join(tmpdir.path, 'test.save.js');
diff --git a/test/parallel/test-repl-tab-complete-nested-repls.js b/test/parallel/test-repl-tab-complete-nested-repls.js
index 36547e8d9fb..3cac02f2056 100644
--- a/test/parallel/test-repl-tab-complete-nested-repls.js
+++ b/test/parallel/test-repl-tab-complete-nested-repls.js
@@ -19,3 +19,5 @@ const result = spawnSync(process.execPath, [testFile]);
// 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);
diff --git a/test/parallel/test-repl-tab-complete.js b/test/parallel/test-repl-tab-complete.js
index 1c66f9a3238..6cf689c4b11 100644
--- a/test/parallel/test-repl-tab-complete.js
+++ b/test/parallel/test-repl-tab-complete.js
@@ -54,12 +54,9 @@ const putIn = new ArrayStream();
const testMe = repl.start('', putIn);
// Some errors are passed to the domain, but do not callback
-testMe._domain.on('error', function(err) {
- assert.ifError(err);
-});
+testMe._domain.on('error', assert.ifError);
// Tab Complete will not break in an object literal
-putIn.run(['.clear']);
putIn.run([
'var inner = {',
'one:1'
@@ -93,9 +90,7 @@ putIn.run([
'var top = function() {',
'var inner = {one:1};'
]);
-testMe.complete('inner.o', common.mustCall(function(error, data) {
- assert.deepStrictEqual(data, works);
-}));
+testMe.complete('inner.o', getNoResultsFunction());
// When you close the function scope tab complete will not return the
// locally scoped variable
@@ -111,9 +106,7 @@ putIn.run([
' one:1',
'};'
]);
-testMe.complete('inner.o', common.mustCall(function(error, data) {
- assert.deepStrictEqual(data, works);
-}));
+testMe.complete('inner.o', getNoResultsFunction());
putIn.run(['.clear']);
@@ -125,9 +118,7 @@ putIn.run([
' one:1',
'};'
]);
-testMe.complete('inner.o', common.mustCall(function(error, data) {
- assert.deepStrictEqual(data, works);
-}));
+testMe.complete('inner.o', getNoResultsFunction());
putIn.run(['.clear']);
@@ -140,9 +131,7 @@ putIn.run([
' one:1',
'};'
]);
-testMe.complete('inner.o', common.mustCall(function(error, data) {
- assert.deepStrictEqual(data, works);
-}));
+testMe.complete('inner.o', getNoResultsFunction());
putIn.run(['.clear']);
@@ -155,9 +144,7 @@ putIn.run([
' one:1',
'};'
]);
-testMe.complete('inner.o', common.mustCall(function(error, data) {
- assert.deepStrictEqual(data, works);
-}));
+testMe.complete('inner.o', getNoResultsFunction());
putIn.run(['.clear']);
@@ -204,7 +191,9 @@ const spaceTimeout = setTimeout(function() {
}, 1000);
testMe.complete(' ', common.mustCall(function(error, data) {
- assert.deepStrictEqual(data, [[], undefined]);
+ assert.ifError(error);
+ assert.strictEqual(data[1], '');
+ assert.ok(data[0].includes('globalThis'));
clearTimeout(spaceTimeout);
}));