mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-05 19:20:20 +03:00
docs(tests): эталон при preRun фиксирует вход теста
README называл info/validate-навыки типичным случаем для noSnapshot: эталон зафиксировал бы выход preRun, а не проверяемого навыка. Факт верный, вывод — нет. Когда preRun собирает фикстуру, эталон фиксирует ВХОД теста. Без него дрейф навыка-генератора меняет фикстуру молча, и ожидание вроде «Составной (6)» начинает проверяться на другом объекте — либо падает без внятной причины, либо сходится случайно и перестаёт что-либо проверять. meta-compile такой дрейф даёт регулярно. Поэтому ни один из семи info-навыков noSnapshot не использует — у всех эталоны, и это осознанно, а не упущение. Правило сформулировано явно: есть preRun с генерацией фикстуры → эталон; нет preRun или фикстура тривиальна → noSnapshot. В шапке verify-snapshots отмечено, что он работает и с кейсами навыков, которые сами ничего не пишут, — там он проверяет, что платформа принимает собранную preRun фикстуру. Плюс предупреждение, что на кейсах setup: external проверка вырождается в загрузку 1С собственной выгрузки: ~3 минуты на кейс без пользы. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
5141cf546d
commit
ccd860ae89
+13
-2
@@ -293,8 +293,19 @@ ibcmd-проход автоматически `○ skipped`, если рядом
|
||||
}
|
||||
```
|
||||
|
||||
Типичный случай — навык ничего не пишет в рабочую директорию (info/validate): эталон зафиксировал бы
|
||||
выход `preRun`, а не проверяемого навыка, и дублировал бы эталоны того навыка.
|
||||
Типичный случай — навык ничего не пишет в рабочую директорию (info/validate) **и фикстуру не
|
||||
собирает**: сверять нечего, проверяется stdout.
|
||||
|
||||
**Но если у такого кейса есть `preRun`, собирающий фикстуру, — эталон нужен.** Он фиксирует не
|
||||
выход проверяемого навыка, а **вход теста**. Без него дрейф навыка-генератора меняет фикстуру
|
||||
молча: ожидание вида `"stdoutContains": "Составной (6)"` начинает проверяться уже на другом
|
||||
объекте — в лучшем случае кейс падает с необъяснимой причиной, в худшем сходится случайно и
|
||||
перестаёт что-либо проверять. `meta-compile` такой дрейф даёт регулярно, задевая эталоны
|
||||
десятков навыков, и ловят его именно эталоны. Поэтому info-навыки в `cases/*-info/` эталоны
|
||||
имеют — это осознанно.
|
||||
|
||||
Правило: **есть `preRun` с генерацией фикстуры → эталон; нет `preRun` (или фикстура тривиальна)
|
||||
→ `noSnapshot`.**
|
||||
|
||||
**Причина обязательна** — непустая строка; `true` не принимается и валит кейс. Смысл в том, что
|
||||
отключение сверки должно стоить автору формулировки, а ревьюеру быть видно в diff'е: проверить
|
||||
|
||||
@@ -6,6 +6,10 @@
|
||||
// role-compile, subsystem-compile, subsystem-edit, mxl-compile, template-add,
|
||||
// help-add, cf-init, cf-edit, epf-init, meta-edit, interface-edit,
|
||||
// cfe-init, cfe-borrow, cfe-patch-method
|
||||
// Работает и с кейсами навыков, которые сами ничего не пишут (info/validate), если у кейса
|
||||
// есть preRun: проверяется, что платформа принимает собранную им фикстуру.
|
||||
// Для кейсов на `setup: external:` проверка вырождается — 1С грузит собственную выгрузку
|
||||
// типовой конфигурации (~3 мин на кейс, ноль информации). Такие гонять через --case.
|
||||
|
||||
import { execFileSync } from 'child_process';
|
||||
import { existsSync, mkdirSync, mkdtempSync, rmSync, readFileSync, writeFileSync,
|
||||
|
||||
Reference in New Issue
Block a user