import { strict as assert } from "node:assert"; import { parseCheckOptions, runChecks } from "./src/check"; const scriptsOnly = parseCheckOptions(["--scripts-typecheck"]); assert.equal(scriptsOnly.scriptsTypecheck, true); assert.equal(scriptsOnly.ghContracts, false); assert.equal(scriptsOnly.scriptsTypecheckTimeoutMs, 120_000); assert.equal(scriptsOnly.checkHeartbeatMs, 15_000); const full = parseCheckOptions(["--full"]); assert.equal(full.scriptsTypecheck, true); assert.equal(full.ghContracts, true); const explicit = parseCheckOptions(["--gh-contracts"]); assert.equal(explicit.scriptsTypecheck, false); assert.equal(explicit.ghContracts, true); const tunedVisibility = parseCheckOptions(["--scripts-typecheck", "--scripts-typecheck-timeout-ms", "1000", "--check-heartbeat-ms", "200"]); assert.equal(tunedVisibility.scriptsTypecheck, true); assert.equal(tunedVisibility.scriptsTypecheckTimeoutMs, 1000); assert.equal(tunedVisibility.checkHeartbeatMs, 200); const minimalConfig = { project: { name: "contract" }, runtime: "contract", } as never; const result = await runChecks(minimalConfig, { ...scriptsOnly, scriptsTypecheck: false }); const issueGuard = result.items.find((item) => item.name === "gh:issue-guard-contract"); const prFiles = result.items.find((item) => item.name === "gh:pr-files-contract"); const pr = result.items.find((item) => item.name === "gh:pr-contract"); for (const item of [issueGuard, prFiles, pr]) { assert.ok(item, "GitHub contract item should be visible in check output"); assert.equal(item?.ok, true); assert.equal((item?.detail as { skipped?: boolean }).skipped, true); } console.log("check gh contract scope contract ok");