feat: prepare 2.6.1-rc5 shared databases and build SSE
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import { expect, test } from "bun:test";
|
||||
|
||||
test("a short CLI exits while its version updater remains pending", async () => {
|
||||
const moduleUrl = new URL("../../lib/version-update.ts", import.meta.url)
|
||||
.href;
|
||||
const script = `
|
||||
const { createVersionObserver } = await import(${JSON.stringify(moduleUrl)});
|
||||
createVersionObserver({
|
||||
currentVersion: "2.6.1-rc3",
|
||||
runner: () => new Promise(() => {}),
|
||||
})("2.7.0");
|
||||
`;
|
||||
const child = Bun.spawn([process.execPath, "-e", script], {
|
||||
stdin: "ignore",
|
||||
stdout: "pipe",
|
||||
stderr: "pipe",
|
||||
});
|
||||
const exit = await Promise.race([
|
||||
child.exited,
|
||||
new Promise<never>((_, reject) =>
|
||||
setTimeout(() => reject(new Error("short CLI stayed alive")), 1_000),
|
||||
),
|
||||
]);
|
||||
|
||||
expect(exit).toBe(0);
|
||||
expect(await new Response(child.stderr).text()).toBe("");
|
||||
});
|
||||
|
||||
test.each([
|
||||
["success", "return true", "+ Updated to 2.7.0"],
|
||||
["failure", "throw new Error('install failed')", "+ New version available: 2.7.0"],
|
||||
])("reports exactly one %s outcome when it settles", async (_name, outcome, message) => {
|
||||
const moduleUrl = new URL("../../lib/version-update.ts", import.meta.url).href;
|
||||
const script = `
|
||||
const { createVersionObserver } = await import(${JSON.stringify(moduleUrl)});
|
||||
createVersionObserver({
|
||||
currentVersion: "2.6.1-rc3",
|
||||
runner: async () => { ${outcome}; },
|
||||
})("2.7.0");
|
||||
await new Promise((resolve) => setTimeout(resolve, 25));
|
||||
`;
|
||||
const child = Bun.spawn([process.execPath, "-e", script], {
|
||||
stdin: "ignore",
|
||||
stdout: "pipe",
|
||||
stderr: "pipe",
|
||||
});
|
||||
|
||||
expect(await child.exited).toBe(0);
|
||||
const stderr = await new Response(child.stderr).text();
|
||||
expect(stderr.split("\n").filter((line) => line.includes(message))).toHaveLength(1);
|
||||
});
|
||||
Reference in New Issue
Block a user