From 9cbaecf4fa720b5af487638590237498308dcaef Mon Sep 17 00:00:00 2001 From: OneNail Date: Fri, 29 Apr 2022 21:26:44 +0800 Subject: [PATCH 1/2] test: improve readline/emitKeypressEvents.js coverage --- .../test-readline-emit-keypress-events.js | 68 +++++++++++++++---- 1 file changed, 53 insertions(+), 15 deletions(-) diff --git a/test/parallel/test-readline-emit-keypress-events.js b/test/parallel/test-readline-emit-keypress-events.js index 8bb10d905cae2a..360d8fe8df227c 100644 --- a/test/parallel/test-readline-emit-keypress-events.js +++ b/test/parallel/test-readline-emit-keypress-events.js @@ -7,22 +7,60 @@ require('../common'); const assert = require('assert'); const readline = require('readline'); const PassThrough = require('stream').PassThrough; -const stream = new PassThrough(); -const sequence = []; -const keys = []; -readline.emitKeypressEvents(stream); - -stream.on('keypress', (s, k) => { - sequence.push(s); - keys.push(k); -}); - -stream.write('foo'); - -assert.deepStrictEqual(sequence, ['f', 'o', 'o']); -assert.deepStrictEqual(keys, [ +const expectedSequence = ['f', 'o', 'o']; +const expectedKeys = [ { sequence: 'f', name: 'f', ctrl: false, meta: false, shift: false }, { sequence: 'o', name: 'o', ctrl: false, meta: false, shift: false }, { sequence: 'o', name: 'o', ctrl: false, meta: false, shift: false }, -]); +]; + +{ + const stream = new PassThrough(); + const sequence = []; + const keys = []; + + readline.emitKeypressEvents(stream); + stream.on('keypress', (s, k) => { + sequence.push(s); + keys.push(k); + }); + stream.write('foo'); + + assert.deepStrictEqual(sequence, expectedSequence); + assert.deepStrictEqual(keys, expectedKeys); +} + +{ + const stream = new PassThrough(); + const sequence = []; + const keys = []; + + stream.on('keypress', (s, k) => { + sequence.push(s); + keys.push(k); + }); + readline.emitKeypressEvents(stream); + stream.write('foo'); + + assert.deepStrictEqual(sequence, expectedSequence); + assert.deepStrictEqual(keys, expectedKeys); +} + +{ + const stream = new PassThrough(); + const sequence = []; + const keys = []; + const keypressListener = (s, k) => { + sequence.push(s); + keys.push(k); + }; + + stream.on('keypress', keypressListener); + readline.emitKeypressEvents(stream); + stream.removeListener('keypress', keypressListener); + stream.write('foo'); + + assert.deepStrictEqual(sequence, expectedSequence); + assert.deepStrictEqual(keys, expectedKeys); +} From 94563d902f5a6b423942838f91c420fff95d3c15 Mon Sep 17 00:00:00 2001 From: OneNail Date: Tue, 3 May 2022 00:06:27 +0800 Subject: [PATCH 2/2] test: run readline/emitKeypressEvents.js test error --- test/parallel/test-readline-emit-keypress-events.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/parallel/test-readline-emit-keypress-events.js b/test/parallel/test-readline-emit-keypress-events.js index 360d8fe8df227c..a9ffd3276c419c 100644 --- a/test/parallel/test-readline-emit-keypress-events.js +++ b/test/parallel/test-readline-emit-keypress-events.js @@ -61,6 +61,12 @@ const expectedKeys = [ stream.removeListener('keypress', keypressListener); stream.write('foo'); + assert.deepStrictEqual(sequence, []); + assert.deepStrictEqual(keys, []); + + stream.on('keypress', keypressListener); + stream.write('foo'); + assert.deepStrictEqual(sequence, expectedSequence); assert.deepStrictEqual(keys, expectedKeys); }