diff --git a/.github/workflows/mutation-gate.yml b/.github/workflows/mutation-gate.yml index b8e9caf8..984bf18a 100644 --- a/.github/workflows/mutation-gate.yml +++ b/.github/workflows/mutation-gate.yml @@ -142,8 +142,11 @@ jobs: id: report env: RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} - SHA: ${{ github.sha }} run: | + # SHA — того дерева, которое чекаутили и гоняли (dev), а не + # github.sha: для расписания это вершина default-ветки main, и отчёт + # называл бы «dev @ » (ревью r1). Образец — process.yml. + SHA=$(git rev-parse HEAD) mkdir -p artifacts node scripts/mutation-gate-report.mjs \ --logs=artifacts/mutation-logs --shards=4 \ diff --git a/test/mutation-gate.test.mjs b/test/mutation-gate.test.mjs index d83b2139..2bd5069c 100644 --- a/test/mutation-gate.test.mjs +++ b/test/mutation-gate.test.mjs @@ -250,6 +250,14 @@ test('#472 AC5: job report — только по расписанию, толь assert.match(report, /node scripts\/mutation-gate-report\.mjs/); }); +test('#472 r1: SHA отчёта — от чекаута dev, а не github.sha (вершина main у расписания)', () => { + const report = mutationWorkflow.slice(mutationWorkflow.indexOf('\n report:\n')); + assert.match(report, /ref: dev/); + assert.match(report, /SHA=\$\(git rev-parse HEAD\)/); + assert.ok(!report.includes('${{ github.sha }}'), 'github.sha у schedule указывает на main, не на проверенный dev'); + assert.match(report, /--ref=dev --sha="\$SHA"/); +}); + test('#472 AC6: повторный отказ дописывает открытое issue, а не создаёт второе', () => { const report = mutationWorkflow.slice(mutationWorkflow.indexOf(' report:')); const search = report.indexOf('gh issue list');