mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
test: fix flaky parallel/test-repl-history-navigation test
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: https://github.com/nodejs/node/pull/31708 Fixes: https://github.com/nodejs/node/issues/31094 Reviewed-By: Denys Otrishko <shishugi@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
committed by
Anna Henningsen
parent
d565041876
commit
9da57a86ee
@@ -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();
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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 },
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user