CI / check (push) Canceled after 0s
The app container is now created with --cpus 1 --memory 2048m: the heavy work happens in the computers' own containers, so the orchestrator does not need more. Both are installer flags (--cpus, --memory), kept in install.conf, and part of the idempotency check, so an existing install picks them up on its next update. The env and app-setting caches lived in module variables, and bunext bundles pages and API routes separately. A save cleared only its own copy, so a saved provider key never reached the page that lists models until the process restarted. They now share one slot per name on globalThis, behind a symbol from the global registry, with the pattern extracted into a tested helper.
55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import globalCache from "./global-cache";
|
|
|
|
describe("globalCache", () => {
|
|
test("keeps a value and clears it", () => {
|
|
const cache = globalCache<number>({ name: "cobble.grabAllEnvs.cache" });
|
|
|
|
cache.clear();
|
|
expect(cache.get()).toBeUndefined();
|
|
|
|
cache.set(7);
|
|
expect(cache.get()).toBe(7);
|
|
|
|
cache.clear();
|
|
expect(cache.get()).toBeUndefined();
|
|
});
|
|
|
|
test("two slots with one name share a value, as two bundles would", () => {
|
|
const page_bundle = globalCache<string>({
|
|
name: "cobble.grabAppSettings.cache",
|
|
});
|
|
const api_bundle = globalCache<string>({
|
|
name: "cobble.grabAppSettings.cache",
|
|
});
|
|
|
|
page_bundle.clear();
|
|
page_bundle.set("stale");
|
|
|
|
// The API sees what the page wrote, so a save there clears it too.
|
|
expect(api_bundle.get()).toBe("stale");
|
|
|
|
api_bundle.clear();
|
|
expect(page_bundle.get()).toBeUndefined();
|
|
});
|
|
|
|
test("different names never share a slot", () => {
|
|
const envs = globalCache<string>({ name: "cobble.grabAllEnvs.cache" });
|
|
const settings = globalCache<string>({
|
|
name: "cobble.grabAppSettings.cache",
|
|
});
|
|
|
|
envs.clear();
|
|
settings.clear();
|
|
|
|
envs.set("a");
|
|
settings.set("b");
|
|
|
|
expect(envs.get()).toBe("a");
|
|
expect(settings.get()).toBe("b");
|
|
|
|
envs.clear();
|
|
settings.clear();
|
|
});
|
|
});
|