53 lines
2.0 KiB
TypeScript
53 lines
2.0 KiB
TypeScript
import { expect, test } from "bun:test";
|
|
import { existsSync, readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
|
|
const repoRoot = resolve(import.meta.dir, "..");
|
|
|
|
function normalizeBinTarget(target: string | undefined) {
|
|
return target?.replace(/^[.][/\\]/, "");
|
|
}
|
|
|
|
test("uses package scripts that point at the skvlt cli entrypoint", () => {
|
|
const packageJson = JSON.parse(
|
|
readFileSync(resolve(repoRoot, "package.json"), "utf8"),
|
|
) as {
|
|
bin?: Record<string, string>;
|
|
engines?: Record<string, string>;
|
|
publishConfig?: Record<string, string>;
|
|
scripts?: Record<string, string>;
|
|
};
|
|
|
|
expect(normalizeBinTarget(packageJson.bin?.skvlt)).toBe("src/cli.ts");
|
|
expect(packageJson.engines?.bun).toBe(">=1.3.11");
|
|
expect(packageJson.publishConfig?.access).toBe("public");
|
|
expect(packageJson.scripts?.backup).toBe("bun run ./src/cli.ts backup");
|
|
expect(packageJson.scripts?.restore).toBe("bun run ./src/cli.ts restore");
|
|
expect(packageJson.scripts?.test).toBe("bun test");
|
|
expect(packageJson.scripts?.check).toBe(
|
|
"bun run format:check && bun test && npm pack --dry-run --json",
|
|
);
|
|
expect(packageJson.scripts?.["publish:check"]).toBe("bun run check");
|
|
expect(packageJson.scripts?.prepublishOnly).toBe("bun run publish:check");
|
|
expect(packageJson.scripts?.format).toContain("prettier --write");
|
|
expect(Object.values(packageJson.scripts ?? {})).not.toContain(
|
|
expect.stringContaining("scripts/"),
|
|
);
|
|
});
|
|
|
|
test("does not keep a legacy scripts directory in the package layout", () => {
|
|
expect(existsSync(resolve(repoRoot, "scripts"))).toBe(false);
|
|
});
|
|
|
|
test("includes a publishable readme that documents the Bun runtime", () => {
|
|
const readmePath = resolve(repoRoot, "README.md");
|
|
|
|
expect(existsSync(readmePath)).toBe(true);
|
|
|
|
const readme = readFileSync(readmePath, "utf8");
|
|
expect(readme).toContain("Skills Vault");
|
|
expect(readme).toContain("Bun-only runtime");
|
|
expect(readme).toContain("bun add -g @xixu-me/skills-vault@latest");
|
|
expect(readme).toContain("npm publish --access public");
|
|
});
|