Curated, product-agnostic snapshot of the post-story-04 tree: demo content deleted, auth-only reference feature, web-next shell, all gates green. Product-specific docs, ADRs 027-029, PRDs/epics/archive, editor library traces, and product naming are curated out; generic template repairs (coverage provider devDeps, root test:coverage script, live lint fixes, root-only release-please) are kept. See TEMPLATE.md for provenance, curation list, and usage. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
20 lines
751 B
TypeScript
20 lines
751 B
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { mkdtempSync, mkdirSync, writeFileSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
import { computeSnapshot } from "./snapshot.js";
|
|
|
|
describe("computeSnapshot", () => {
|
|
it("returns sorted file paths + sha256 hashes", () => {
|
|
const tmp = mkdtempSync(join(tmpdir(), "snapshot-"));
|
|
mkdirSync(join(tmp, "src"));
|
|
writeFileSync(join(tmp, "package.json"), `{ "name": "x" }\n`);
|
|
writeFileSync(join(tmp, "src", "index.ts"), `export {};\n`);
|
|
const snap = computeSnapshot(tmp);
|
|
expect(snap).toEqual([
|
|
{ path: "package.json", sha256: expect.any(String) },
|
|
{ path: "src/index.ts", sha256: expect.any(String) },
|
|
]);
|
|
});
|
|
});
|