mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
fix(ci): принимать proof reuse геометрического parity (#548)
Issue: #548 User-Visible: no
This commit is contained in:
@@ -199,7 +199,8 @@ export function evaluateCiProof({ run, proof, jobs = [], reuseRuns = new Map(),
|
||||
if (!executedCheckIsGreen(id, jobs)) return result('failed', `${id}: claimed execution is absent, incomplete or not green`);
|
||||
continue;
|
||||
}
|
||||
if (claim.mode !== 'reused' || !['smoke', 'golden', 'performance_smoke', 'backend'].includes(id))
|
||||
if (claim.mode !== 'reused'
|
||||
|| !['smoke', 'golden', 'performance_smoke', 'geometry_parity', 'backend'].includes(id))
|
||||
return result('failed', `${id}: unsupported proof mode ${claim.mode || 'missing'}`);
|
||||
const reuse = claim.reuse || {};
|
||||
if (!/^[0-9a-f]{64}$/.test(reuse.key || '') || !/^[0-9a-f]{40}$/.test(reuse.sourceSha || '')
|
||||
|
||||
@@ -154,6 +154,24 @@ test('#541 AC: reuse needs a content key, marker source SHA/run and the successf
|
||||
assert.equal(evaluateCiProof({ ...fixture, proof: badKey, policy: CI_PROOF_POLICIES.release }).status, 'failed');
|
||||
});
|
||||
|
||||
test('#548: geometry parity reuse is accepted only with a verified source job', () => {
|
||||
const fixture = proofFixture();
|
||||
fixture.proof.checks.geometry_parity = {
|
||||
mode: 'reused', result: 'success',
|
||||
reuse: { key: 'e'.repeat(64), sourceRun: 78, sourceAttempt: 2, sourceSha: 'f'.repeat(40) },
|
||||
};
|
||||
fixture.proof.executedChecks = fixture.proof.executedChecks.filter((id) => id !== 'geometry_parity');
|
||||
fixture.proof.reusedChecks = ['geometry_parity'];
|
||||
fixture.jobs = fixture.jobs.filter((job) => job.name !== names.geometryParity);
|
||||
fixture.reuseRuns.set('78:2', {
|
||||
run: { id: 78, run_attempt: 2, status: 'completed', conclusion: 'success', head_sha: 'f'.repeat(40) },
|
||||
jobs: [success(names.geometryParity)],
|
||||
});
|
||||
|
||||
assert.equal(evaluateCiProof({ ...fixture, policy: CI_PROOF_POLICIES.release }).status, 'green');
|
||||
assert.equal(evaluateCiProof({ ...fixture, reuseRuns: new Map(), policy: CI_PROOF_POLICIES.release }).status, 'failed');
|
||||
});
|
||||
|
||||
test('#541: reuse marker parser fails closed', () => {
|
||||
assert.deepEqual(parseReuseMarker(
|
||||
`golden прогнана успешно\nSHA: ${SHA}\nпрогон: https://github.com/x/y/actions/runs/123\nпопытка: 4\n`,
|
||||
|
||||
Reference in New Issue
Block a user