diff options
Diffstat (limited to '')
-rw-r--r-- | test/bun.js/readline_promises.node.test.ts | 55 |
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(); + }); +}); |