fix(ci): стабилизировать релизный proof на main (#619)

Issue: #619
User-Visible: no
This commit is contained in:
Claude
2026-09-23 06:09:08 +03:00
parent 0e0a0e54e5
commit 0d047450ce
7 changed files with 67 additions and 23 deletions
+20 -3
View File
@@ -167,9 +167,9 @@ test('классификация опирается на завершённый
assert.match(changes, /actions: read/, 'чтение прогонов требует прав');
// У PR диапазон задан событием, считать его нечем и незачем.
assert.match(changes, /if: github\.event_name != 'pull_request'/);
// На dev классификации нет вовсе — там всё true; шаг там считает базу
// диапазона для другого потребителя (#388), и это разные выходы.
assert.match(changes, /dev: без фильтров, всё true/);
// На dev/main классификации нет вовсе — там всё true; шаг там считает базу
// диапазона для другого потребителя (#388, #619), и это разные выходы.
assert.match(changes, /dev\/main: без фильтров, всё true/);
assert.match(changes, /--name=range_base/);
// Пустая база означает «доказательства нет» и обязана вести к полному
// прогону, а не к пустому диффу, который выглядел бы как «ничего не менялось».
@@ -178,6 +178,23 @@ test('классификация опирается на завершённый
'без базы классификация обязана раскрываться в полный прогон');
});
test('#619: Validate на main раскрывает полный набор так же, как на dev', () => {
const workflow = read('validate.yml');
const changes = workflow.slice(
workflow.indexOf('\n changes:\n'), workflow.indexOf('\n reuse:\n'),
);
const integrationRefs = /\[ "\$REF" = "refs\/heads\/dev" \] \|\| \[ "\$REF" = "refs\/heads\/main" \]/g;
assert.equal(changes.match(integrationRefs)?.length, 2,
'base и classify обязаны одинаково распознавать dev/main');
assert.match(changes, /dev\/main: без фильтров, всё true/);
const frontend = workflow.slice(
workflow.indexOf('\n frontend:\n'), workflow.indexOf('\n smoke:\n'),
);
assert.match(frontend, integrationRefs,
'no-new-any на main обязан судить диапазон от доказанного предка, а не HEAD..HEAD');
});
test('перф-смок добавляет профиль ровно при своём выходе changes (#473 AC3)', () => {
const workflow = read('validate.yml');
const changes = workflow.slice(workflow.indexOf('\n changes:\n'), workflow.indexOf('\n reuse:\n'));