Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test: simplify ReplStream.wait()
Browse files Browse the repository at this point in the history
PR-URL: #43857
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
tniessen authored and targos committed Jul 31, 2022

Verified

This commit was signed with the committer’s verified signature.
panh99 Heng Pan
1 parent 93ab080 commit 6825845
Showing 2 changed files with 16 additions and 34 deletions.
25 changes: 8 additions & 17 deletions test/parallel/test-repl-preview.js
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

const common = require('../common');
const assert = require('assert');
const events = require('events');
const { REPLServer } = require('repl');
const { Stream } = require('stream');
const { inspect } = require('util');
@@ -32,26 +33,16 @@ class REPLStream extends Stream {
if (chunkLines.length > 1) {
this.lines.push(...chunkLines.slice(1));
}
this.emit('line');
this.emit('line', this.lines[this.lines.length - 1]);
return true;
}
wait() {
async wait() {
this.lines = [''];
return new Promise((resolve, reject) => {
const onError = (err) => {
this.removeListener('line', onLine);
reject(err);
};
const onLine = () => {
if (this.lines[this.lines.length - 1].includes(PROMPT)) {
this.removeListener('error', onError);
this.removeListener('line', onLine);
resolve(this.lines);
}
};
this.once('error', onError);
this.on('line', onLine);
});
for await (const [line] of events.on(this, 'line')) {
if (line.includes(PROMPT)) {
return this.lines;
}
}
}
pause() {}
resume() {}
25 changes: 8 additions & 17 deletions test/parallel/test-repl-top-level-await.js
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
const common = require('../common');
const ArrayStream = require('../common/arraystream');
const assert = require('assert');
const events = require('events');
const { stripVTControlCharacters } = require('internal/util/inspect');
const repl = require('repl');

@@ -27,31 +28,21 @@ class REPLStream extends ArrayStream {
if (chunkLines.length > 1) {
this.lines.push(...chunkLines.slice(1));
}
this.emit('line');
this.emit('line', this.lines[this.lines.length - 1]);
if (callback) callback();
return true;
}

wait() {
async wait() {
if (this.waitingForResponse) {
throw new Error('Currently waiting for response to another command');
}
this.lines = [''];
return new Promise((resolve, reject) => {
const onError = (err) => {
this.removeListener('line', onLine);
reject(err);
};
const onLine = () => {
if (this.lines[this.lines.length - 1].includes(PROMPT)) {
this.removeListener('error', onError);
this.removeListener('line', onLine);
resolve(this.lines);
}
};
this.once('error', onError);
this.on('line', onLine);
});
for await (const [line] of events.on(this, 'line')) {
if (line.includes(PROMPT)) {
return this.lines;
}
}
}
}

0 comments on commit 6825845

Please sign in to comment.