Spaces:
Runtime error
Runtime error
| import test from "node:test"; | |
| import assert from "node:assert/strict"; | |
| import { fakeUpstreamStream } from "../../helpers/fakeUpstreamStream.ts"; | |
| test("fakeUpstreamStream emits pushed chunks then closes", async () => { | |
| const { stream, push, close } = fakeUpstreamStream(); | |
| push("a"); | |
| push("b"); | |
| close(); | |
| const reader = stream.getReader(); | |
| const dec = new TextDecoder(); | |
| let out = ""; | |
| for (;;) { | |
| const { done, value } = await reader.read(); | |
| if (done) break; | |
| out += dec.decode(value); | |
| } | |
| assert.equal(out, "ab"); | |
| }); | |
| test("fakeUpstreamStream signals cancel when consumer aborts", async () => { | |
| const { stream, onCancel } = fakeUpstreamStream(); | |
| let cancelled = false; | |
| onCancel(() => { | |
| cancelled = true; | |
| }); | |
| const reader = stream.getReader(); | |
| await reader.cancel("client-abort"); | |
| assert.equal(cancelled, true); | |
| }); | |
| test("fakeUpstreamStream propagates error to reader", async () => { | |
| const { stream, error } = fakeUpstreamStream(); | |
| error(new Error("upstream boom")); | |
| const reader = stream.getReader(); | |
| await assert.rejects(async () => { | |
| await reader.read(); | |
| }, /upstream boom/); | |
| }); | |