mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
test: simplify ReplStream.wait()
PR-URL: https://github.com/nodejs/node/pull/43857 Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
@@ -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() {}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user