diff --git a/AGENTS.md b/AGENTS.md index 146e6d6..937d4de 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -44,4 +44,5 @@ dist/ Compiled JavaScript output. - Tests use `node:http` `createServer` for API mocking. - `*.test.ts` files named `moby.test.ts` are integration tests using real PR data. - Errors from the GitHub API are always `APIError` instances. -- The action never fails a PR — runtime errors are logged, not fatal. +- The action fails on tag/SHA mismatches by default (`fail-on-mismatch` input). +- Runtime errors (API failures, missing repos) are logged, not fatal. diff --git a/README.md b/README.md index f189644..788cc3b 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ When the pinned SHA doesn't match the tag in the inline comment: > | `actions/checkout` | `v6.0.1` | `8e8c483` | `de0fac2` | This catches typos, stale comments, and copy-paste errors that are impossible to spot in review. +By default, the workflow **fails** when a mismatch is detected. ## Usage @@ -74,6 +75,7 @@ jobs: | Input | Required | Default | Description | |-------|----------|---------|-------------| | `github-token` | Yes | `${{ github.token }}` | GitHub token for API access | +| `fail-on-mismatch` | No | `true` | Fail the workflow when a tag/SHA mismatch is detected | ### Permissions @@ -135,12 +137,12 @@ repository links or compare URLs. | Scenario | Action | |----------|--------| | Version changes found | Post or update comment with diff summary | -| Tag/SHA mismatch detected | Show warning table at top of comment | +| Tag/SHA mismatch detected | Show warning table, fail the workflow (unless `fail-on-mismatch: false`) | | No changes | Delete existing bot comment, if any | | Compare API fails (deleted repo, etc.) | Show warning with manual compare link | | >15 commits per action | Show last 15, link to full comparison | -The bot never fails a PR — errors are logged, not fatal. +Runtime errors (API failures, missing repos) are logged as warnings, not fatal. ## Development diff --git a/action.yml b/action.yml index f1ac036..9b9c0c6 100644 --- a/action.yml +++ b/action.yml @@ -5,6 +5,10 @@ inputs: description: 'GitHub token for API access' required: true default: ${{ github.token }} + fail-on-mismatch: + description: 'Fail the workflow when a tag/SHA mismatch is detected' + required: false + default: 'true' runs: using: 'node24' main: 'dist/main.js' diff --git a/dist/main.js b/dist/main.js index 15ec1e8..2715fbd 100644 --- a/dist/main.js +++ b/dist/main.js @@ -10,6 +10,12 @@ import { readFileSync } from "node:fs"; function getInput(name) { return process.env[`INPUT_${name.toUpperCase()}`]; } +function getBoolInput(name, defaultValue) { + const v = getInput(name); + if (v === undefined) + return defaultValue; + return v === "true"; +} async function run() { const token = getInput("GITHUB-TOKEN") ?? process.env.GITHUB_TOKEN; if (!token) @@ -23,6 +29,7 @@ async function run() { const owner = repo.substring(0, slashIdx); const repoName = repo.substring(slashIdx + 1); const pr = getPRNumber(); + const failOnMismatch = getBoolInput("FAIL-ON-MISMATCH", true); const client = new Client(token); // 1. Fetch changed files in the PR. const files = await client.listPRFiles(owner, repoName, pr); @@ -57,7 +64,11 @@ async function run() { // 6. Render comment. const body = comment(results, mismatches); // 7. Create or update PR comment. - return ensure(client, owner, repoName, pr, body); + await ensure(client, owner, repoName, pr, body); + // 8. Fail if mismatches found and configured to do so. + if (mismatches.length > 0 && failOnMismatch) { + throw new Error(`${mismatches.length} tag/SHA mismatch(es) detected`); + } } function getPRNumber() { // Try PR_NUMBER env var first (backwards compat). diff --git a/dist/main.js.map b/dist/main.js.map index 2cad4c8..857e4a3 100644 --- a/dist/main.js.map +++ b/dist/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pinverify/verify.d.ts b/dist/pinverify/verify.d.ts index 0283236..361184b 100644 --- a/dist/pinverify/verify.d.ts +++ b/dist/pinverify/verify.d.ts @@ -1,5 +1,5 @@ import { type ActionUpdate } from "../diffparser/parser.js"; -import type { Client } from "../github/client.js"; +import { type Client } from "../github/client.js"; /** Reports a tag comment that doesn't match the pinned SHA. */ export interface Mismatch { update: ActionUpdate; diff --git a/dist/pinverify/verify.js b/dist/pinverify/verify.js index 99a4904..7300939 100644 --- a/dist/pinverify/verify.js +++ b/dist/pinverify/verify.js @@ -1,5 +1,8 @@ import { isSHA } from "../diffparser/parser.js"; +import { APIError } from "../github/client.js"; import { updateOwnerRepo } from "../compare/compare.js"; +/** Sentinel stored in the resolved map when the tag does not exist. */ +const TAG_NOT_FOUND = "!not-found"; /** * Verifies that new SHA pins match their inline tag comments. * Only checks updates where newRef is a SHA and newTag is present. @@ -35,6 +38,9 @@ export async function check(client, updates) { resolved.set(k, sha); } catch (err) { + if (err instanceof APIError && (err.statusCode === 404 || err.statusCode === 422)) { + resolved.set(k, TAG_NOT_FOUND); + } console.warn(`warning: could not resolve tag ${j.update.newTag} for ${j.update.action}: ${err}`); } })()); @@ -44,9 +50,16 @@ export async function check(client, updates) { for (const j of jobs) { const k = `${j.update.action}\0${j.update.newTag}`; const sha = resolved.get(k); - if (!sha) + if (sha === undefined) continue; - if (sha !== j.update.newRef) { + if (sha === TAG_NOT_FOUND) { + mismatches.push({ + update: j.update, + tag: j.update.newTag, + expectSHA: "", + }); + } + else if (sha !== j.update.newRef) { mismatches.push({ update: j.update, tag: j.update.newTag, @@ -58,6 +71,9 @@ export async function check(client, updates) { } /** Returns a human-readable description of a mismatch. */ export function formatMismatch(m) { + if (!m.expectSHA) { + return `${m.update.action}: tag ${m.tag} does not exist, but pinned to ${m.update.newRef.substring(0, 7)}`; + } return `${m.update.action}: tag ${m.tag} resolves to ${m.expectSHA.substring(0, 7)}, but pinned to ${m.update.newRef.substring(0, 7)}`; } //# sourceMappingURL=verify.js.map \ No newline at end of file diff --git a/dist/pinverify/verify.js.map b/dist/pinverify/verify.js.map index b628b56..aa44e89 100644 --- a/dist/pinverify/verify.js.map +++ b/dist/pinverify/verify.js.map @@ -1 +1 @@ -{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/src/pinverify/verify.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/src/pinverify/verify.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/pinverify/verify.test.js b/dist/pinverify/verify.test.js index 3047453..c432dbc 100644 --- a/dist/pinverify/verify.test.js +++ b/dist/pinverify/verify.test.js @@ -82,6 +82,46 @@ describe("check", () => { close(); } }); + it("detects non-existent tag (422)", async () => { + const { url, close } = await startServer((_req, res) => { + res.writeHead(422, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ message: "No commit found for SHA: v99.0.0" })); + }); + try { + const client = new Client(""); + client.setBaseURL(url); + const updates = [ + { action: "actions/checkout", oldRef: sha40b, newRef: sha40a, oldTag: "v6.0.2", newTag: "v99.0.0", file: ".github/workflows/ci.yml" }, + ]; + const mismatches = await check(client, updates); + assert.equal(mismatches.length, 1); + assert.equal(mismatches[0].tag, "v99.0.0"); + assert.equal(mismatches[0].expectSHA, ""); + } + finally { + close(); + } + }); + it("detects non-existent tag (404)", async () => { + const { url, close } = await startServer((_req, res) => { + res.writeHead(404, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ message: "Not Found" })); + }); + try { + const client = new Client(""); + client.setBaseURL(url); + const updates = [ + { action: "actions/checkout", oldRef: sha40b, newRef: sha40a, oldTag: "v6.0.2", newTag: "v99.0.0", file: ".github/workflows/ci.yml" }, + ]; + const mismatches = await check(client, updates); + assert.equal(mismatches.length, 1); + assert.equal(mismatches[0].tag, "v99.0.0"); + assert.equal(mismatches[0].expectSHA, ""); + } + finally { + close(); + } + }); it("skips non-SHA ref", async () => { const { url, close } = await startServer((_req, res) => { res.writeHead(404); @@ -190,10 +230,10 @@ describe("check", () => { close(); } }); - it("gracefully handles API errors", async () => { + it("skips on server errors", async () => { const { url, close } = await startServer((_req, res) => { - res.writeHead(404, { "Content-Type": "application/json" }); - res.end(JSON.stringify({ message: "Not Found" })); + res.writeHead(500, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ message: "Internal Server Error" })); }); try { const client = new Client(""); diff --git a/dist/pinverify/verify.test.js.map b/dist/pinverify/verify.test.js.map index 2dce525..b28649d 100644 --- a/dist/pinverify/verify.test.js.map +++ b/dist/pinverify/verify.test.js.map @@ -1 +1 @@ -{"version":3,"file":"verify.test.js","sourceRoot":"","sources":["../../src/src/pinverify/verify.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"verify.test.js","sourceRoot":"","sources":["../../src/src/pinverify/verify.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/render/render.js b/dist/render/render.js index 70e3547..da25e56 100644 --- a/dist/render/render.js +++ b/dist/render/render.js @@ -11,13 +11,14 @@ export function comment(results, mismatches) { if (results.length === 0 && mismatches.length === 0) return ""; results = dedup(results); + const mismatchKeys = new Set(mismatches.map((m) => `${m.update.action}\0${m.update.newRef}`)); const pinOnly = []; const changed = []; for (const r of results) { - if (isPinOnly(r)) { + if (isPinOnly(r) && !mismatchKeys.has(`${r.update.action}\0${r.update.newRef}`)) { pinOnly.push(r); } - else { + else if (!isPinOnly(r)) { changed.push(r); } } @@ -86,9 +87,16 @@ function renderMismatches(mismatches) { const u = m.update; const or = ownerRepoStr(u); const tagURL = or ? `https://github.com/${or}/releases/tag/${m.tag}` : ""; - const expectURL = or ? `https://github.com/${or}/commit/${m.expectSHA}` : ""; const pinnedURL = or ? `https://github.com/${or}/commit/${u.newRef}` : ""; - b += `| ${renderLabel(u)} | ${renderRef(m.tag, tagURL)} | ${renderRef(shortRef(m.expectSHA), expectURL)} | ${renderRef(shortRef(u.newRef), pinnedURL)} |\n`; + let expectCell; + if (m.expectSHA) { + const expectURL = or ? `https://github.com/${or}/commit/${m.expectSHA}` : ""; + expectCell = renderRef(shortRef(m.expectSHA), expectURL); + } + else { + expectCell = "*tag not found*"; + } + b += `| ${renderLabel(u)} | ${renderRef(m.tag, tagURL)} | ${expectCell} | ${renderRef(shortRef(u.newRef), pinnedURL)} |\n`; } return b; } diff --git a/dist/render/render.js.map b/dist/render/render.js.map index 09a581c..b45c1c5 100644 --- a/dist/render/render.js.map +++ b/dist/render/render.js.map @@ -1 +1 @@ -{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/src/render/render.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/src/render/render.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/render/render.test.js b/dist/render/render.test.js index 23103f3..dba0f4c 100644 --- a/dist/render/render.test.js +++ b/dist/render/render.test.js @@ -382,4 +382,108 @@ describe("comment", () => { assert.ok(mismatchIdx < setupGoIdx, "mismatch section should appear before regular results"); }); }); +describe("mismatch excludes pin-only", () => { + const sha40a = "de0fac2e4500dabe0009e67214ff5f5447ce83dd"; + const sha40b = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"; + it("does not show mismatched result in pin-only table", () => { + const results = [ + { + update: { + action: "actions/checkout", + oldRef: sha40a, + newRef: sha40a, + oldTag: "v6.0.2", + newTag: "v7.0.0", + file: ".github/workflows/pin-diff.yml", + }, + totalCommits: 0, + compareURL: "", + commits: [], + err: null, + }, + ]; + const mismatches = [ + { + update: results[0].update, + tag: "v7.0.0", + expectSHA: sha40b, + }, + ]; + const got = comment(results, mismatches); + assert.ok(got.includes("⚠️ Tag / SHA Mismatch"), "should show mismatch warning"); + assert.ok(got.includes("`v7.0.0`"), "should reference the wrong tag"); + assert.ok(!got.includes("📌 Pinned (digest unchanged)"), "should NOT show pin-only section for mismatched entry"); + }); + it("keeps non-mismatched entries in pin-only table", () => { + const sha40c = "cccccccccccccccccccccccccccccccccccccccc"; + const results = [ + { + update: { + action: "actions/checkout", + oldRef: sha40a, + newRef: sha40a, + oldTag: "v6.0.2", + newTag: "v7.0.0", + file: ".github/workflows/pin-diff.yml", + }, + totalCommits: 0, + compareURL: "", + commits: [], + err: null, + }, + { + update: { + action: "actions/setup-go", + oldRef: "v5", + newRef: sha40c, + oldTag: "v5", + newTag: "v5", + file: ".github/workflows/ci.yml", + }, + totalCommits: 0, + compareURL: "", + commits: [], + err: null, + }, + ]; + const mismatches = [ + { + update: results[0].update, + tag: "v7.0.0", + expectSHA: sha40b, + }, + ]; + const got = comment(results, mismatches); + assert.ok(got.includes("⚠️ Tag / SHA Mismatch")); + assert.ok(got.includes("📌 Pinned (digest unchanged)"), "should show pin-only for non-mismatched entry"); + assert.ok(got.includes("actions/setup-go"), "setup-go should be in pin-only"); + // actions/checkout should only appear in mismatch table, not in pin-only + const pinOnlySection = got.split("📌 Pinned")[1]; + assert.ok(!pinOnlySection.includes("actions/checkout"), "checkout should NOT be in pin-only section"); + }); +}); +describe("tag not found mismatch", () => { + it("renders tag not found in mismatch table", () => { + const sha40a = "de0fac2e4500dabe0009e67214ff5f5447ce83dd"; + const mismatches = [ + { + update: { + action: "actions/checkout", + oldRef: sha40a, + newRef: sha40a, + oldTag: "v6.0.2", + newTag: "v7.0.0", + file: ".github/workflows/ci.yml", + }, + tag: "v7.0.0", + expectSHA: "", + }, + ]; + const got = comment([], mismatches); + assert.ok(got.includes("⚠️ Tag / SHA Mismatch")); + assert.ok(got.includes("`v7.0.0`")); + assert.ok(got.includes("*tag not found*"), "should show 'tag not found' for non-existent tag"); + assert.ok(got.includes("[`de0fac2`]"), "should still show pinned SHA"); + }); +}); //# sourceMappingURL=render.test.js.map \ No newline at end of file diff --git a/dist/render/render.test.js.map b/dist/render/render.test.js.map index fae9361..1fb0f3f 100644 --- a/dist/render/render.test.js.map +++ b/dist/render/render.test.js.map @@ -1 +1 @@ -{"version":3,"file":"render.test.js","sourceRoot":"","sources":["../../src/src/render/render.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"render.test.js","sourceRoot":"","sources":["../../src/src/render/render.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 237f7ae..41300a1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,6 +12,12 @@ function getInput(name: string): string | undefined { return process.env[`INPUT_${name.toUpperCase()}`]; } +function getBoolInput(name: string, defaultValue: boolean): boolean { + const v = getInput(name); + if (v === undefined) return defaultValue; + return v === "true"; +} + async function run(): Promise { const token = getInput("GITHUB-TOKEN") ?? process.env.GITHUB_TOKEN; @@ -26,6 +32,7 @@ async function run(): Promise { const repoName = repo.substring(slashIdx + 1); const pr = getPRNumber(); + const failOnMismatch = getBoolInput("FAIL-ON-MISMATCH", true); const client = new Client(token); @@ -71,7 +78,12 @@ async function run(): Promise { const body = comment(results, mismatches); // 7. Create or update PR comment. - return ensure(client, owner, repoName, pr, body); + await ensure(client, owner, repoName, pr, body); + + // 8. Fail if mismatches found and configured to do so. + if (mismatches.length > 0 && failOnMismatch) { + throw new Error(`${mismatches.length} tag/SHA mismatch(es) detected`); + } } function getPRNumber(): number { diff --git a/src/pinverify/verify.test.ts b/src/pinverify/verify.test.ts index 06856ac..330cba9 100644 --- a/src/pinverify/verify.test.ts +++ b/src/pinverify/verify.test.ts @@ -94,6 +94,52 @@ describe("check", () => { } }); + it("detects non-existent tag (422)", async () => { + const { url, close } = await startServer((_req, res) => { + res.writeHead(422, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ message: "No commit found for SHA: v99.0.0" })); + }); + + try { + const client = new Client(""); + client.setBaseURL(url); + + const updates: ActionUpdate[] = [ + { action: "actions/checkout", oldRef: sha40b, newRef: sha40a, oldTag: "v6.0.2", newTag: "v99.0.0", file: ".github/workflows/ci.yml" }, + ]; + + const mismatches = await check(client, updates); + assert.equal(mismatches.length, 1); + assert.equal(mismatches[0].tag, "v99.0.0"); + assert.equal(mismatches[0].expectSHA, ""); + } finally { + close(); + } + }); + + it("detects non-existent tag (404)", async () => { + const { url, close } = await startServer((_req, res) => { + res.writeHead(404, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ message: "Not Found" })); + }); + + try { + const client = new Client(""); + client.setBaseURL(url); + + const updates: ActionUpdate[] = [ + { action: "actions/checkout", oldRef: sha40b, newRef: sha40a, oldTag: "v6.0.2", newTag: "v99.0.0", file: ".github/workflows/ci.yml" }, + ]; + + const mismatches = await check(client, updates); + assert.equal(mismatches.length, 1); + assert.equal(mismatches[0].tag, "v99.0.0"); + assert.equal(mismatches[0].expectSHA, ""); + } finally { + close(); + } + }); + it("skips non-SHA ref", async () => { const { url, close } = await startServer((_req, res) => { res.writeHead(404); @@ -214,10 +260,10 @@ describe("check", () => { } }); - it("gracefully handles API errors", async () => { + it("skips on server errors", async () => { const { url, close } = await startServer((_req, res) => { - res.writeHead(404, { "Content-Type": "application/json" }); - res.end(JSON.stringify({ message: "Not Found" })); + res.writeHead(500, { "Content-Type": "application/json" }); + res.end(JSON.stringify({ message: "Internal Server Error" })); }); try { diff --git a/src/pinverify/verify.ts b/src/pinverify/verify.ts index e294ae8..005fdf3 100644 --- a/src/pinverify/verify.ts +++ b/src/pinverify/verify.ts @@ -1,14 +1,17 @@ import { isSHA, type ActionUpdate } from "../diffparser/parser.js"; -import type { Client } from "../github/client.js"; +import { APIError, type Client } from "../github/client.js"; import { updateOwnerRepo } from "../compare/compare.js"; /** Reports a tag comment that doesn't match the pinned SHA. */ export interface Mismatch { update: ActionUpdate; tag: string; // the tag from the comment (e.g. "v6.2.0") - expectSHA: string; // SHA the tag actually resolves to + expectSHA: string; // SHA the tag actually resolves to, empty if tag not found } +/** Sentinel stored in the resolved map when the tag does not exist. */ +const TAG_NOT_FOUND = "!not-found"; + /** * Verifies that new SHA pins match their inline tag comments. * Only checks updates where newRef is a SHA and newTag is present. @@ -51,6 +54,9 @@ export async function check( const sha = await client.resolveRefSHA(owner, repo, j.update.newTag); resolved.set(k, sha); } catch (err) { + if (err instanceof APIError && (err.statusCode === 404 || err.statusCode === 422)) { + resolved.set(k, TAG_NOT_FOUND); + } console.warn( `warning: could not resolve tag ${j.update.newTag} for ${j.update.action}: ${err}` ); @@ -65,8 +71,14 @@ export async function check( for (const j of jobs) { const k = `${j.update.action}\0${j.update.newTag}`; const sha = resolved.get(k); - if (!sha) continue; - if (sha !== j.update.newRef) { + if (sha === undefined) continue; + if (sha === TAG_NOT_FOUND) { + mismatches.push({ + update: j.update, + tag: j.update.newTag, + expectSHA: "", + }); + } else if (sha !== j.update.newRef) { mismatches.push({ update: j.update, tag: j.update.newTag, @@ -79,5 +91,8 @@ export async function check( /** Returns a human-readable description of a mismatch. */ export function formatMismatch(m: Mismatch): string { + if (!m.expectSHA) { + return `${m.update.action}: tag ${m.tag} does not exist, but pinned to ${m.update.newRef.substring(0, 7)}`; + } return `${m.update.action}: tag ${m.tag} resolves to ${m.expectSHA.substring(0, 7)}, but pinned to ${m.update.newRef.substring(0, 7)}`; } diff --git a/src/render/render.test.ts b/src/render/render.test.ts index bc93f47..d307656 100644 --- a/src/render/render.test.ts +++ b/src/render/render.test.ts @@ -436,3 +436,118 @@ describe("comment", () => { assert.ok(mismatchIdx < setupGoIdx, "mismatch section should appear before regular results"); }); }); + +describe("mismatch excludes pin-only", () => { + const sha40a = "de0fac2e4500dabe0009e67214ff5f5447ce83dd"; + const sha40b = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"; + + it("does not show mismatched result in pin-only table", () => { + const results: Result[] = [ + { + update: { + action: "actions/checkout", + oldRef: sha40a, + newRef: sha40a, + oldTag: "v6.0.2", + newTag: "v7.0.0", + file: ".github/workflows/pin-diff.yml", + }, + totalCommits: 0, + compareURL: "", + commits: [], + err: null, + }, + ]; + + const mismatches: Mismatch[] = [ + { + update: results[0].update, + tag: "v7.0.0", + expectSHA: sha40b, + }, + ]; + + const got = comment(results, mismatches); + assert.ok(got.includes("⚠️ Tag / SHA Mismatch"), "should show mismatch warning"); + assert.ok(got.includes("`v7.0.0`"), "should reference the wrong tag"); + assert.ok(!got.includes("📌 Pinned (digest unchanged)"), "should NOT show pin-only section for mismatched entry"); + }); + + it("keeps non-mismatched entries in pin-only table", () => { + const sha40c = "cccccccccccccccccccccccccccccccccccccccc"; + + const results: Result[] = [ + { + update: { + action: "actions/checkout", + oldRef: sha40a, + newRef: sha40a, + oldTag: "v6.0.2", + newTag: "v7.0.0", + file: ".github/workflows/pin-diff.yml", + }, + totalCommits: 0, + compareURL: "", + commits: [], + err: null, + }, + { + update: { + action: "actions/setup-go", + oldRef: "v5", + newRef: sha40c, + oldTag: "v5", + newTag: "v5", + file: ".github/workflows/ci.yml", + }, + totalCommits: 0, + compareURL: "", + commits: [], + err: null, + }, + ]; + + const mismatches: Mismatch[] = [ + { + update: results[0].update, + tag: "v7.0.0", + expectSHA: sha40b, + }, + ]; + + const got = comment(results, mismatches); + assert.ok(got.includes("⚠️ Tag / SHA Mismatch")); + assert.ok(got.includes("📌 Pinned (digest unchanged)"), "should show pin-only for non-mismatched entry"); + assert.ok(got.includes("actions/setup-go"), "setup-go should be in pin-only"); + // actions/checkout should only appear in mismatch table, not in pin-only + const pinOnlySection = got.split("📌 Pinned")[1]; + assert.ok(!pinOnlySection.includes("actions/checkout"), "checkout should NOT be in pin-only section"); + }); +}); + +describe("tag not found mismatch", () => { + it("renders tag not found in mismatch table", () => { + const sha40a = "de0fac2e4500dabe0009e67214ff5f5447ce83dd"; + + const mismatches: Mismatch[] = [ + { + update: { + action: "actions/checkout", + oldRef: sha40a, + newRef: sha40a, + oldTag: "v6.0.2", + newTag: "v7.0.0", + file: ".github/workflows/ci.yml", + }, + tag: "v7.0.0", + expectSHA: "", + }, + ]; + + const got = comment([], mismatches); + assert.ok(got.includes("⚠️ Tag / SHA Mismatch")); + assert.ok(got.includes("`v7.0.0`")); + assert.ok(got.includes("*tag not found*"), "should show 'tag not found' for non-existent tag"); + assert.ok(got.includes("[`de0fac2`]"), "should still show pinned SHA"); + }); +}); diff --git a/src/render/render.ts b/src/render/render.ts index fc47e05..2bc6370 100644 --- a/src/render/render.ts +++ b/src/render/render.ts @@ -17,12 +17,15 @@ export function comment(results: Result[], mismatches: Mismatch[]): string { if (results.length === 0 && mismatches.length === 0) return ""; results = dedup(results); + const mismatchKeys = new Set( + mismatches.map((m) => `${m.update.action}\0${m.update.newRef}`), + ); const pinOnly: Result[] = []; const changed: Result[] = []; for (const r of results) { - if (isPinOnly(r)) { + if (isPinOnly(r) && !mismatchKeys.has(`${r.update.action}\0${r.update.newRef}`)) { pinOnly.push(r); - } else { + } else if (!isPinOnly(r)) { changed.push(r); } } @@ -104,9 +107,15 @@ function renderMismatches(mismatches: Mismatch[]): string { const u = m.update; const or = ownerRepoStr(u); const tagURL = or ? `https://github.com/${or}/releases/tag/${m.tag}` : ""; - const expectURL = or ? `https://github.com/${or}/commit/${m.expectSHA}` : ""; const pinnedURL = or ? `https://github.com/${or}/commit/${u.newRef}` : ""; - b += `| ${renderLabel(u)} | ${renderRef(m.tag, tagURL)} | ${renderRef(shortRef(m.expectSHA), expectURL)} | ${renderRef(shortRef(u.newRef), pinnedURL)} |\n`; + let expectCell: string; + if (m.expectSHA) { + const expectURL = or ? `https://github.com/${or}/commit/${m.expectSHA}` : ""; + expectCell = renderRef(shortRef(m.expectSHA), expectURL); + } else { + expectCell = "*tag not found*"; + } + b += `| ${renderLabel(u)} | ${renderRef(m.tag, tagURL)} | ${expectCell} | ${renderRef(shortRef(u.newRef), pinnedURL)} |\n`; } return b; }