From e894eeb22d0ca75abd74e8f6bfff5b28ec6037f5 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Wed, 18 Dec 2019 19:58:49 +0100 Subject: [PATCH] readline: set null as callback return in case there's no error The cursor move functions accept a callback. It was possible that `undefined` was returned in case there was no error instead of null. PR-URL: https://github.com/nodejs/node/pull/31006 Reviewed-By: Benjamin Gruenbaum Reviewed-By: Anto Aravinth Reviewed-By: Rich Trott --- lib/readline.js | 8 ++++---- test/parallel/test-readline-csi.js | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/readline.js b/lib/readline.js index 67c76b602ca0d3..cbe504a3db429a 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -1200,7 +1200,7 @@ function cursorTo(stream, x, y, callback) { if (stream == null || (typeof x !== 'number' && typeof y !== 'number')) { if (typeof callback === 'function') - process.nextTick(callback); + process.nextTick(callback, null); return true; } @@ -1221,7 +1221,7 @@ function moveCursor(stream, dx, dy, callback) { if (stream == null || !(dx || dy)) { if (typeof callback === 'function') - process.nextTick(callback); + process.nextTick(callback, null); return true; } @@ -1255,7 +1255,7 @@ function clearLine(stream, dir, callback) { if (stream === null || stream === undefined) { if (typeof callback === 'function') - process.nextTick(callback); + process.nextTick(callback, null); return true; } @@ -1277,7 +1277,7 @@ function clearScreenDown(stream, callback) { if (stream === null || stream === undefined) { if (typeof callback === 'function') - process.nextTick(callback); + process.nextTick(callback, null); return true; } diff --git a/test/parallel/test-readline-csi.js b/test/parallel/test-readline-csi.js index de07f1ae26b3e5..5c0080d3d41910 100644 --- a/test/parallel/test-readline-csi.js +++ b/test/parallel/test-readline-csi.js @@ -39,7 +39,9 @@ assert.throws(() => { }, /ERR_INVALID_CALLBACK/); // Verify that clearScreenDown() does not throw on null or undefined stream. -assert.strictEqual(readline.clearScreenDown(null, common.mustCall()), true); +assert.strictEqual(readline.clearScreenDown(null, common.mustCall((err) => { + assert.strictEqual(err, null); +})), true); assert.strictEqual(readline.clearScreenDown(undefined, common.mustCall()), true); @@ -67,7 +69,9 @@ assert.throws(() => { // Verify that clearLine() does not throw on null or undefined stream. assert.strictEqual(readline.clearLine(null, 0), true); assert.strictEqual(readline.clearLine(undefined, 0), true); -assert.strictEqual(readline.clearLine(null, 0, common.mustCall()), true); +assert.strictEqual(readline.clearLine(null, 0, common.mustCall((err) => { + assert.strictEqual(err, null); +})), true); assert.strictEqual(readline.clearLine(undefined, 0, common.mustCall()), true); // Nothing is written when moveCursor 0, 0 @@ -101,7 +105,9 @@ assert.throws(() => { // Verify that moveCursor() does not throw on null or undefined stream. assert.strictEqual(readline.moveCursor(null, 1, 1), true); assert.strictEqual(readline.moveCursor(undefined, 1, 1), true); -assert.strictEqual(readline.moveCursor(null, 1, 1, common.mustCall()), true); +assert.strictEqual(readline.moveCursor(null, 1, 1, common.mustCall((err) => { + assert.strictEqual(err, null); +})), true); assert.strictEqual(readline.moveCursor(undefined, 1, 1, common.mustCall()), true); @@ -109,7 +115,9 @@ assert.strictEqual(readline.moveCursor(undefined, 1, 1, common.mustCall()), assert.strictEqual(readline.cursorTo(null), true); assert.strictEqual(readline.cursorTo(), true); assert.strictEqual(readline.cursorTo(null, 1, 1, common.mustCall()), true); -assert.strictEqual(readline.cursorTo(undefined, 1, 1, common.mustCall()), true); +assert.strictEqual(readline.cursorTo(undefined, 1, 1, common.mustCall((err) => { + assert.strictEqual(err, null); +})), true); writable.data = ''; assert.strictEqual(readline.cursorTo(writable, 'a'), true);