import { describe, expect, test } from "bun:test";
import { readdirSync, readFileSync, statSync } from "node:fs";
import { join, relative } from "node:path";
const SRC = join(import.meta.dir, "..");
const WRITE = /(INSERT\s+INTO|UPDATE|DELETE\s+FROM|REPLACE\s+INTO)\s+repo_storage_estimates\b/i;
function sourceFiles(dir: string): string[] {
return readdirSync(dir).flatMap((name) => {
const path = join(dir, name);
if (statSync(path).isDirectory()) return sourceFiles(path);
return /\.tsx?$/.test(name) && !name.endsWith(".test.ts") ? [path] : [];
});
}
describe("repo_storage_estimates.pack_bytes", () => {
test("is written only by the repo-counts counter, whose absolute flush would overwrite any other writer", () => {
const writers = sourceFiles(SRC)
.filter((file) => WRITE.test(readFileSync(file, "utf8")))
.map((file) => relative(SRC, file));
// A new writer (recompute, sweep, transfer) must go through the counter or call Counters.reset afterwards.
expect(writers).toEqual(["server/counters-do.ts"]);
});
});