summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2019-07-09 13:36:57 +0200
committerRich Trott <rtrott@gmail.com>2019-07-17 20:57:51 -0700
commit6874aa1fb15e815bacf0b0f7e18a434d72de0b4d (patch)
tree7bc996693f1e391919eebfb3da18d244c864dde7 /test
parentf9388580bd4169a7e3e3d049ca86a7b1e614ee55 (diff)
downloadandroid-node-v8-6874aa1fb15e815bacf0b0f7e18a434d72de0b4d.tar.gz
android-node-v8-6874aa1fb15e815bacf0b0f7e18a434d72de0b4d.tar.bz2
android-node-v8-6874aa1fb15e815bacf0b0f7e18a434d72de0b4d.zip
repl: fix autocomplete while using .load
This makes sure that complete functions work as expected after using the REPL's `.load` command. It also fixes the corresponding test. So far the assertion where swallowed and the test passed even though it should not have. Fixes: https://github.com/nodejs/node/issues/28546 PR-URL: https://github.com/nodejs/node/pull/28608 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Lance Ball <lball@redhat.com> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-repl-load-multiline.js1
-rw-r--r--test/parallel/test-repl-save-load.js115
2 files changed, 62 insertions, 54 deletions
diff --git a/test/parallel/test-repl-load-multiline.js b/test/parallel/test-repl-load-multiline.js
index 87b866c01b..b2bee8d6e4 100644
--- a/test/parallel/test-repl-load-multiline.js
+++ b/test/parallel/test-repl-load-multiline.js
@@ -13,6 +13,7 @@ const expected = `${command}
const getLunch = () =>
placeOrder('tacos')
.then(eat);
+
const placeOrder = (order) => Promise.resolve(order);
const eat = (food) => '<nom nom nom>';
diff --git a/test/parallel/test-repl-save-load.js b/test/parallel/test-repl-save-load.js
index d36a2b74d4..66b0f400a9 100644
--- a/test/parallel/test-repl-save-load.js
+++ b/test/parallel/test-repl-save-load.js
@@ -20,7 +20,7 @@
// USE OR OTHER DEALINGS IN THE SOFTWARE.
'use strict';
-require('../common');
+const common = require('../common');
const ArrayStream = require('../common/arraystream');
const assert = require('assert');
const join = require('path').join;
@@ -36,6 +36,12 @@ const works = [['inner.one'], 'inner.o'];
const putIn = new ArrayStream();
const testMe = repl.start('', putIn);
+// Some errors might be passed to the domain.
+testMe._domain.on('error', function(reason) {
+ const err = new Error('Test failed');
+ err.reason = reason;
+ throw err;
+});
const testFile = [
'var top = function() {',
@@ -43,89 +49,90 @@ const testFile = [
];
const saveFileName = join(tmpdir.path, 'test.save.js');
-// input some data
+// Add some data.
putIn.run(testFile);
-// save it to a file
+// Save it to a file.
putIn.run([`.save ${saveFileName}`]);
-// The file should have what I wrote
+// The file should have what I wrote.
assert.strictEqual(fs.readFileSync(saveFileName, 'utf8'),
- `${testFile.join('\n')}\n`);
+ testFile.join('\n'));
-{
- // save .editor mode code
- const cmds = [
- 'function testSave() {',
- 'return "saved";',
- '}'
- ];
- const putIn = new ArrayStream();
- const replServer = repl.start({ terminal: true, stream: putIn });
-
- putIn.run(['.editor']);
- putIn.run(cmds);
- replServer.write('', { ctrl: true, name: 'd' });
-
- putIn.run([`.save ${saveFileName}`]);
- replServer.close();
- assert.strictEqual(fs.readFileSync(saveFileName, 'utf8'),
- `${cmds.join('\n')}\n\n`);
-}
-
-// Make sure that the REPL data is "correct"
-// so when I load it back I know I'm good
-testMe.complete('inner.o', function(error, data) {
+// Make sure that the REPL data is "correct".
+testMe.complete('inner.o', common.mustCall(function(error, data) {
+ assert.ifError(error);
assert.deepStrictEqual(data, works);
-});
+}));
-// clear the REPL
+// Clear the REPL.
putIn.run(['.clear']);
-// Load the file back in
+// Load the file back in.
putIn.run([`.load ${saveFileName}`]);
-// Make sure that the REPL data is "correct"
-testMe.complete('inner.o', function(error, data) {
+// Make sure that the REPL data is "correct".
+testMe.complete('inner.o', common.mustCall(function(error, data) {
+ assert.ifError(error);
assert.deepStrictEqual(data, works);
-});
+}));
-// clear the REPL
+// Clear the REPL.
putIn.run(['.clear']);
let loadFile = join(tmpdir.path, 'file.does.not.exist');
-// should not break
-putIn.write = function(data) {
- // Make sure I get a failed to load message and not some crazy error
- assert.strictEqual(data, `Failed to load:${loadFile}\n`);
- // Eat me to avoid work
+// Should not break.
+putIn.write = common.mustCall(function(data) {
+ // Make sure I get a failed to load message and not some crazy error.
+ assert.strictEqual(data, `Failed to load: ${loadFile}\n`);
+ // Eat me to avoid work.
putIn.write = () => {};
-};
+});
putIn.run([`.load ${loadFile}`]);
-// Throw error on loading directory
+// Throw error on loading directory.
loadFile = tmpdir.path;
-putIn.write = function(data) {
- assert.strictEqual(data, `Failed to load:${loadFile} is not a valid file\n`);
+putIn.write = common.mustCall(function(data) {
+ assert.strictEqual(data, `Failed to load: ${loadFile} is not a valid file\n`);
putIn.write = () => {};
-};
+});
putIn.run([`.load ${loadFile}`]);
-// clear the REPL
+// Clear the REPL.
putIn.run(['.clear']);
// NUL (\0) is disallowed in filenames in UNIX-like operating systems and
-// Windows so we can use that to test failed saves
+// Windows so we can use that to test failed saves.
const invalidFileName = join(tmpdir.path, '\0\0\0\0\0');
-// should not break
-putIn.write = function(data) {
- // Make sure I get a failed to save message and not some other error
- assert.strictEqual(data, `Failed to save:${invalidFileName}\n`);
- // reset to no-op
+// Should not break.
+putIn.write = common.mustCall(function(data) {
+ // Make sure I get a failed to save message and not some other error.
+ assert.strictEqual(data, `Failed to save: ${invalidFileName}\n`);
+ // Reset to no-op.
putIn.write = () => {};
-};
+});
-// save it to a file
+// Save it to a file.
putIn.run([`.save ${invalidFileName}`]);
+
+{
+ // Save .editor mode code.
+ const cmds = [
+ 'function testSave() {',
+ 'return "saved";',
+ '}'
+ ];
+ const putIn = new ArrayStream();
+ const replServer = repl.start({ terminal: true, stream: putIn });
+
+ putIn.run(['.editor']);
+ putIn.run(cmds);
+ replServer.write('', { ctrl: true, name: 'd' });
+
+ putIn.run([`.save ${saveFileName}`]);
+ replServer.close();
+ assert.strictEqual(fs.readFileSync(saveFileName, 'utf8'),
+ `${cmds.join('\n')}\n`);
+}