Skip to content

Commit

Permalink
test: fix flaky parallel/test-repl-history-navigation test
Browse files Browse the repository at this point in the history
Two scenarios should be tested:

1. The completion is triggered and the result is printed before the
   next invocation.
2. The completion is triggered multiple times right after each other
   without waiting for the result. In that case only the last result
   should be printed.

The first scenario did not need a timeout while the latter did not
need a timeout for the second invocation.

PR-URL: #31708
Fixes: #31094
Reviewed-By: Denys Otrishko <[email protected]>
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
BridgeAR authored and codebytere committed Feb 17, 2020
1 parent 1dae7dc commit 6dbe6bd
Showing 1 changed file with 8 additions and 13 deletions.
21 changes: 8 additions & 13 deletions test/parallel/test-repl-history-navigation.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ const defaultHistoryPath = path.join(tmpdir.path, '.node_repl_history');
// Create an input stream specialized for testing an array of actions
class ActionStream extends stream.Stream {
run(data) {
let reallyWait = true;
const _iter = data[Symbol.iterator]();
const doAction = () => {
const next = _iter.next();
Expand All @@ -34,12 +33,7 @@ class ActionStream extends stream.Stream {
} else {
this.emit('data', `${action}`);
}
if (action === WAIT && reallyWait) {
setTimeout(doAction, common.platformTimeout(50));
reallyWait = false;
} else {
setImmediate(doAction);
}
setImmediate(doAction);
};
doAction();
}
Expand Down Expand Up @@ -67,6 +61,8 @@ const WAIT = '€';

const prev = process.features.inspector;

let completions = 0;

const tests = [
{ // Creates few history to navigate for
env: { NODE_REPL_HISTORY: defaultHistoryPath },
Expand Down Expand Up @@ -435,12 +431,11 @@ const tests = [
env: { NODE_REPL_HISTORY: defaultHistoryPath },
completer(line, callback) {
if (line.endsWith(WAIT)) {
setTimeout(
callback,
common.platformTimeout(40),
null,
[[`${WAIT}WOW`], line]
);
if (completions++ === 0) {
callback(null, [[`${WAIT}WOW`], line]);
} else {
setTimeout(callback, 1000, null, [[`${WAIT}WOW`], line]).unref();
}
} else {
callback(null, [[' Always visible'], line]);
}
Expand Down

0 comments on commit 6dbe6bd

Please sign in to comment.