aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/readline_promises.node.test.ts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--test/bun.js/readline_promises.node.test.ts55
1 files changed, 55 insertions, 0 deletions
diff --git a/test/bun.js/readline_promises.node.test.ts b/test/bun.js/readline_promises.node.test.ts
new file mode 100644
index 000000000..eadd289e3
--- /dev/null
+++ b/test/bun.js/readline_promises.node.test.ts
@@ -0,0 +1,55 @@
+import { describe, it } from "bun:test";
+import readlinePromises from "node:readline/promises";
+import { EventEmitter } from "node:events";
+import {
+ createDoneDotAll,
+ createCallCheckCtx,
+ assert,
+} from "./node-test-helpers";
+
+// ----------------------------------------------------------------------------
+// Helpers
+// ----------------------------------------------------------------------------
+
+class FakeInput extends EventEmitter {
+ output = "";
+ resume() {}
+ pause() {}
+ write(data) {
+ this.output += data;
+ }
+ end() {}
+ reset() {
+ this.output = "";
+ }
+}
+
+// ----------------------------------------------------------------------------
+// Tests
+// ----------------------------------------------------------------------------
+
+describe("readline/promises.createInterface()", () => {
+ it("should throw an error when failed completion", (done) => {
+ const createDone = createDoneDotAll(done);
+ const { mustCall, mustNotCall } = createCallCheckCtx(createDone());
+
+ const fi = new FakeInput();
+ const rli = new readlinePromises.Interface({
+ input: fi,
+ output: fi,
+ terminal: true,
+ completer: mustCall(() => Promise.reject(new Error("message"))),
+ });
+
+ rli.on("line", mustNotCall());
+ fi.emit("data", "\t");
+ const outCheckDone = createDone();
+ process.nextTick(() => {
+ console.log("output", fi.output);
+ assert.match(fi.output, /^Tab completion error/);
+ fi.reset();
+ outCheckDone();
+ });
+ rli.close();
+ });
+});