39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
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");
|