diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cc7cdb68..818301466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,9 +11,10 @@ ### Tests - `test/ci-image-cli-pin.test.ts` gains four cases: Dockerfile.ci pins an exact Node version and a SHA-256, both files verify before they unpack, and `setup-free-suite.sh` pins the same version and hash as the image. On #3355's head alone, all four fail; on main, three fail. - The Bun ordering check in `setup-free-suite.sh` now looks for `sha256sum -c` after the Bun download instead of anywhere in the file, because the Node check now comes first. +- The test names `Dockerfile.ci` as `join(__dirname, '..', '.github', …)`, the form pregate's literal scan resolves, so a change to the image now selects it (before, pregate refused a Dockerfile.ci-only change with `PREGATE_NO_LANE`). ### Gate integrity -- One accepted-input change to review: the Bun ordering check searches for its `sha256sum -c` from the Bun download onward. A file whose only `sha256sum -c` sits before the download still fails, and so does removing the Bun hash or moving it after `unzip` (negative controls run). No threshold, budget, timeout, trial count or case kind changed. +- One accepted-input change to review: the Bun ordering check searches for its `sha256sum -c` from the Bun download onward. It now accepts one input it used to reject: a file with some other `sha256sum -c` before the Bun download and the Bun check after it, which is this file. The property it guards, Bun verified after download and before unpack, is unchanged. A file whose only `sha256sum -c` sits before the download still fails, and so does removing the Bun hash or moving it after `unzip` (negative controls run). No threshold, budget, timeout, trial count or case kind changed. ## [1.91.191.0] - 2026-10-25 diff --git a/test/ci-image-cli-pin.test.ts b/test/ci-image-cli-pin.test.ts index 5a8968765..c4a84f21a 100644 --- a/test/ci-image-cli-pin.test.ts +++ b/test/ci-image-cli-pin.test.ts @@ -24,7 +24,7 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; const ROOT = path.resolve(__dirname, '..'); -const DOCKERFILE = path.join(ROOT, '.github', 'docker', 'Dockerfile.ci'); +const DOCKERFILE = path.join(__dirname, '..', '.github', 'docker', 'Dockerfile.ci'); /** Package specs from every `npm i -g` / `npm install -g` in the Dockerfile. */ export function globalNpmInstallSpecs(source: string): string[] { @@ -242,6 +242,7 @@ describe('CI Node.js installs match the image and are verified (#3354)', () => { const source = fs.readFileSync(path.join(ROOT, rel), 'utf-8'); test(`${rel} pins the same Node.js version and SHA-256 as Dockerfile.ci`, () => { + expect(imageSha).toMatch(/^[0-9a-f]{64}$/); expect(source.match(/^NODE_VERSION=(\S+)$/m)?.[1]).toBe(imageVersion!); expect(source.match(/^NODE_SHA256=(\S+)$/m)?.[1]).toBe(imageSha!); });