30 lines
813 B
TypeScript
30 lines
813 B
TypeScript
import fs from "node:fs/promises";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
|
|
export function createFixtureSuite(rootPrefix: string) {
|
|
let fixtureRoot = "";
|
|
let fixtureCount = 0;
|
|
|
|
return {
|
|
async setup(): Promise<void> {
|
|
fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), rootPrefix));
|
|
},
|
|
async cleanup(): Promise<void> {
|
|
if (!fixtureRoot) {
|
|
return;
|
|
}
|
|
await fs.rm(fixtureRoot, { recursive: true, force: true });
|
|
fixtureRoot = "";
|
|
},
|
|
async createCaseDir(prefix: string): Promise<string> {
|
|
if (!fixtureRoot) {
|
|
throw new Error("Fixture suite not initialized");
|
|
}
|
|
const dir = path.join(fixtureRoot, `${prefix}-${fixtureCount++}`);
|
|
await fs.mkdir(dir, { recursive: true });
|
|
return dir;
|
|
},
|
|
};
|
|
}
|