test(cli): assert build-script docs and CLI-first default build
Adds guards so README and CONTRIBUTING stay in sync with the actual default `pnpm build` (excluding desktop/mobile) and the explicit opt-in scripts for full / desktop / mobile builds. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,7 @@ describe("CI workflow (.github/workflows/ci.yml)", () => {
|
||||
let content: string;
|
||||
let ciSteps: any[];
|
||||
let contributingContent: string;
|
||||
let readmeContent: string;
|
||||
let cliPackageJsonContent: string;
|
||||
let extensionSuiteContent: string;
|
||||
let agentExportSuiteContent: string;
|
||||
@@ -35,6 +36,7 @@ describe("CI workflow (.github/workflows/ci.yml)", () => {
|
||||
content = result.content;
|
||||
ciSteps = workflow.jobs?.ci?.steps ?? [];
|
||||
contributingContent = readFileSync(join(workspaceRoot, "docs", "contributing.md"), "utf-8");
|
||||
readmeContent = readFileSync(join(workspaceRoot, "README.md"), "utf-8");
|
||||
cliPackageJsonContent = readFileSync(join(workspaceRoot, "packages", "cli", "package.json"), "utf-8");
|
||||
extensionSuiteContent = readFileSync(
|
||||
join(workspaceRoot, "packages", "cli", "src", "__tests__", "extension.test.ts"),
|
||||
@@ -112,6 +114,14 @@ describe("CI workflow (.github/workflows/ci.yml)", () => {
|
||||
expect(contributingContent).toContain("test:extension-integration");
|
||||
});
|
||||
|
||||
it("keeps docs aligned with default and explicit build commands", () => {
|
||||
expect(readmeContent).toContain("pnpm build # Build default workspace packages (excludes desktop/mobile)");
|
||||
expect(readmeContent).toContain("pnpm build:all # Build all packages (including desktop/mobile)");
|
||||
|
||||
expect(contributingContent).toContain("pnpm build # default build (excludes desktop/mobile)");
|
||||
expect(contributingContent).toContain("pnpm build:all # full recursive build including desktop/mobile");
|
||||
});
|
||||
|
||||
it("includes binary build step", () => {
|
||||
expect(content).toContain("build:exe");
|
||||
});
|
||||
|
||||
@@ -133,6 +133,22 @@ describe("Workspace bootstrap script contract", () => {
|
||||
expect(testIdx).toBeGreaterThan(lintIdx);
|
||||
expect(buildIdx).toBeGreaterThan(testIdx);
|
||||
});
|
||||
|
||||
it("keeps default build CLI-first by excluding desktop/mobile", () => {
|
||||
expect(rootPkg.scripts?.build).toBe(
|
||||
"pnpm -r --filter=!@fusion/desktop --filter=!@fusion/mobile build",
|
||||
);
|
||||
});
|
||||
|
||||
it("keeps explicit opt-in scripts for full, desktop, and mobile builds", () => {
|
||||
expect(rootPkg.scripts?.["build:all"]).toBe("pnpm -r build");
|
||||
expect(rootPkg.scripts?.["build:desktop"]).toBe(
|
||||
"pnpm --filter @fusion/desktop build",
|
||||
);
|
||||
expect(rootPkg.scripts?.["mobile:build"]).toBe(
|
||||
"pnpm --filter @fusion/dashboard build && pnpm --filter @fusion/mobile cap sync",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Workflow YAML validity", () => {
|
||||
|
||||
Reference in New Issue
Block a user