chore(vendor): import pi 0.85.1

Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: d981de1229ef899957bbe968bc8dcda02a21f477
This commit is contained in:
2026-09-14 10:48:47 -04:00
parent 5ebc7018c3
commit 4def357d09
1669 changed files with 397627 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
import { afterEach, describe, expect, test, vi } from "vitest";
import { ServerLifetime } from "../src/experimental/server.ts";
afterEach(() => {
vi.useRealTimers();
});
describe("server lifecycle", () => {
test("holds a foreground server until explicit shutdown", () => {
vi.useFakeTimers();
const retire = vi.fn();
const lifetime = new ServerLifetime(true);
lifetime.start(retire);
vi.advanceTimersByTime(60_000);
expect(retire).not.toHaveBeenCalled();
lifetime.stop();
});
test("retires an automatic server if no first client arrives", () => {
vi.useFakeTimers();
const retire = vi.fn();
const lifetime = new ServerLifetime(false);
lifetime.start(retire);
vi.advanceTimersByTime(10_999);
expect(retire).not.toHaveBeenCalled();
vi.advanceTimersByTime(1);
expect(retire).toHaveBeenCalledOnce();
lifetime.stop();
});
test("requires both client and worker demand to disappear", () => {
vi.useFakeTimers();
const retire = vi.fn();
const lifetime = new ServerLifetime(false);
lifetime.start(retire);
lifetime.setConnectionCount(1);
lifetime.setWorkerCount(1);
lifetime.setConnectionCount(0);
vi.advanceTimersByTime(10_000);
expect(retire).not.toHaveBeenCalled();
lifetime.setWorkerCount(0);
vi.advanceTimersByTime(999);
expect(retire).not.toHaveBeenCalled();
vi.advanceTimersByTime(1);
expect(retire).toHaveBeenCalledOnce();
lifetime.stop();
});
});