import { expect } from "@std/expect"; import { describe, it } from "@std/testing/bdd"; type EnvValues = Record; const FELT_CONFIG_URL = new URL("../felt.config.ts", import.meta.url); async function withEnv( values: EnvValues, run: () => Promise, ): Promise { const original = new Map(); for (const [key, value] of Object.entries(values)) { original.set(key, Deno.env.get(key)); if (value === undefined) { Deno.env.delete(key); } else { Deno.env.set(key, value); } } try { return await run(); } finally { for (const [key, value] of original.entries()) { if (value === undefined) { Deno.env.delete(key); } else { Deno.env.set(key, value); } } } } async function importFreshConfig() { const url = new URL(FELT_CONFIG_URL.href); url.searchParams.set("test", crypto.randomUUID()); const module = await import(url.href); return module.default; } describe("shell felt config", () => { it("wires modern experimental env vars into build-time defines", async () => { const config = await withEnv({ EXPERIMENTAL_MODERN_CELL_REP: "true", EXPERIMENTAL_PERSISTENT_SCHEDULER_STATE: "true", }, importFreshConfig); expect(config.esbuild?.define).toMatchObject({ $EXPERIMENTAL_MODERN_CELL_REP: "true", $EXPERIMENTAL_PERSISTENT_SCHEDULER_STATE: "true", }); }); });