setUp
uses node:assert/strict
A new codebase with no scratch file, and ways to work in it.
import { okIn, tcmIn, tempDir } from "#codebase/tcmts/cli/test/e2e/harness"; import assert from "node:assert/strict"; import fs from "node:fs"; import path from "node:path"; import { DatabaseSync } from "node:sqlite"; export function setUp() { const dir = tempDir("packages"); const tcm = (...args: string[]) => okIn(dir, ...args); const fails = (...args: string[]) => { const r = tcmIn(dir, ...args); assert.notEqual(r.status, 0, `tcm ${args.join(" ")} should fail`); return r.out; }; const write = (file: string, text: string) => fs.writeFileSync(path.join(dir, file), text); const sql = (q: string, ...p: string[]) => { const db = new DatabaseSync(path.join(dir, ".tcm", "codebase.sqlite")); try { return db.prepare(q).all(...p) as Record<string, string>[]; } finally { db.close(); } }; const hashOf = (name: string) => sql("SELECT hash FROM names WHERE path = ?", name)[0]!.hash!; tcm("init"); fs.rmSync(path.join(dir, "scratch.ts")); return { dir, tcm, fails, write, sql, hashOf }; }