mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-03 05:08:53 +00:00
test: различать исходы мутационного гейта (#550)
Issue: #550 User-Visible: no
This commit is contained in:
+17
-3
@@ -51,6 +51,17 @@ GUARD_INPUTS` (умолчание `backend-test-guard.mjs` —
|
||||
Бандл собирается только мутантам с браузерным гвардом; компиляция тестов в
|
||||
worktree стартует с тёплого `test-build/` основного дерева.
|
||||
|
||||
С #550 ненулевой exit сам по себе не означает «мутант пойман». Цепочка
|
||||
`setup && ... && oracle` разбирается по шагам: ошибки компиляции, сборки,
|
||||
загрузки/collection теста дают `setup-failure`; неприменимый патч —
|
||||
`invalid-mutation`; timeout, signal и отсутствие exit status —
|
||||
`infrastructure-interruption`; зелёный oracle — `survived`. Только падение
|
||||
последнего заявленного oracle даёт `assertion-killed` и может попасть в
|
||||
ledger. Compile-time проверка допустима как самостоятельный свидетель лишь с
|
||||
явным полем определения `oracle: 'compile'`; прятать её в префиксе обычного
|
||||
browser/backend guard нельзя. Все недоказанные исходы завершают гейт кодом 2 и
|
||||
отдельно называются в ночном отчёте.
|
||||
|
||||
В CI `changed_mutants` бежит не на каждом пуше, а по запросу (#510):
|
||||
`workflow_dispatch validate.yml -f mutants=true` (его делают ревью-конвейер на
|
||||
материале ревью и слияние на кандидате), `full=true` (ночь, кнопка), PR и кандидат
|
||||
@@ -59,11 +70,14 @@ worktree стартует с тёплого `test-build/` основного д
|
||||
основном отменялись следующим пушем. Доказательство мутантов для ревью — именно
|
||||
dispatch-прогон на точном SHA; зелёный push-прогон им не является.
|
||||
|
||||
`changed_mutants` добавляет `--ledger=<файл>` — журнал пойманных
|
||||
свидетелей (#481): после каждого пойманного мутанта в файл пишется отпечаток
|
||||
`changed_mutants` добавляет `--ledger=<файл>` — журнал доказанных
|
||||
свидетелей (#481, #550): после каждого пойманного мутанта в файл пишутся тип
|
||||
доказательства (`assertion` или явно объявленный `compile`) и отпечаток
|
||||
его входов (файлы патча, все входы гарда по замыканию выше, объявление мутанта;
|
||||
строка версии продукта нормализована), и мутант с тем же отпечатком в следующем
|
||||
прогоне не гоняется.
|
||||
прогоне не гоняется. Схема 2 намеренно не читает старые записи без типа
|
||||
доказательства: setup failure из прежнего раннера нельзя унаследовать как
|
||||
зелёный результат.
|
||||
Журнал живёт в кэше Actions по шарду, сохраняется при любом исходе шага, так
|
||||
что отменённый пуш или таймаут не пропадают даром. Полный прогон и `--id`
|
||||
журнал не читают; `--ledger` без `--changed` — ошибка.
|
||||
|
||||
Reference in New Issue
Block a user