From e1eccc34b4a3f99435494e5e5d6c52790b52eb49 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sun, 11 Feb 2018 15:58:55 -0500 Subject: [PATCH] test: add multiline repl input regression test This commit adds a regression test for de848ac1e0483327a2ce8716c3f8567eaeacb660, which broke multiline input in the REPL. PR-URL: https://github.com/nodejs/node/pull/18718 Refs: https://github.com/nodejs/node/pull/17828 Refs: https://github.com/nodejs/node/pull/18715 Reviewed-By: Ruben Bridgewater --- test/parallel/test-repl-multiline.js | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 test/parallel/test-repl-multiline.js diff --git a/test/parallel/test-repl-multiline.js b/test/parallel/test-repl-multiline.js new file mode 100644 index 00000000000000..54048bf31f2f6f --- /dev/null +++ b/test/parallel/test-repl-multiline.js @@ -0,0 +1,35 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const repl = require('repl'); +const inputStream = new common.ArrayStream(); +const outputStream = new common.ArrayStream(); +const input = ['var foo = {', '};', 'foo;']; +let output = ''; + +outputStream.write = (data) => { output += data.replace('\r', ''); }; + +const r = repl.start({ + prompt: '', + input: inputStream, + output: outputStream, + terminal: true, + useColors: false +}); + +r.on('exit', common.mustCall(() => { + const actual = output.split('\n'); + + // Validate the output, which contains terminal escape codes. + assert.strictEqual(actual.length, 6); + assert.ok(actual[0].endsWith(input[0])); + assert.ok(actual[1].includes('... ')); + assert.ok(actual[1].endsWith(input[1])); + assert.strictEqual(actual[2], 'undefined'); + assert.ok(actual[3].endsWith(input[2])); + assert.strictEqual(actual[4], '{}'); + // Ignore the last line, which is nothing but escape codes. +})); + +inputStream.run(input); +r.close();