mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-21 09:45:53 +03:00
test: гард check-typeset-coverage — вывод meta-info замыкается на вход meta-compile
Связь «прочитал вывод → подал на вход» держалась на честном слове и рвалась молча в обе стороны: meta-info печатал метки, которых нет в словаре meta-compile (33 из 41), а в карте meta-info не было видов, которые meta-compile эмитит, — и они печатались по-английски посреди русского вывода. Снэпшоты этого не видят: кейсы читают и компилируют по отдельности, круг не замыкая. Инвариант строгий в одну сторону: каждая метка читалки обязана быть ключом в typeSynonyms у meta-compile и вести ровно в тот же канон. Обратное неверно намеренно — компилятор знает формы, которых читалка не печатает. Заодно гард сверяет objectTypeMap и refTypeMap между портами навыка: переводы — часть вывода, и расхождение портов дало бы разный текст на один и тот же файл. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
74e88e75c2
commit
1d8a6f2f58
@@ -108,6 +108,7 @@ node tests/skills/check-inline-drift.mjs --list # реестр: семья →
|
||||
| `check-type-synonyms.mjs` | словари типов: по общему ключу meta-edit понимает то же, что meta-compile (авторитет) |
|
||||
| `check-inline-drift.mjs` | копии общих inline-утилит совпадают с эталонами своих вариантов |
|
||||
| `check-type-maps.mjs` | карты типов метаданных согласованы с таблицей `ChildObjects` из `docs/1c-configuration-spec.md` |
|
||||
| `check-typeset-coverage.mjs` | имена типов: всё, что печатает `meta-info`, принимает `meta-compile` (авторитет); карты не разошлись между портами |
|
||||
| `check-format-versions.mjs` | проверенный диапазон версий формата: границы одинаковы во всех навыках и сходятся с лестницей из `docs/1c-configuration-spec.md` |
|
||||
| `check-form-purposes.mjs` | таблица назначений форм в `form-add`: состав видов, свойство «основная форма» и оба порта сходятся с `docs/1c-form-spec.md` |
|
||||
| `check-positional-binding.mjs` | read-only навыки (`*-info` / `*-validate` / `cfe-diff`): позиционным остаётся только путь ко входу, лишний позиционный аргумент не перезаписывает указанный файл |
|
||||
@@ -122,6 +123,24 @@ node tests/skills/check-inline-drift.mjs --list # реестр: семья →
|
||||
|
||||
Правишь общую утилиту — правишь эталон, копируешь во всех потребителей варианта, прогоняешь гард.
|
||||
|
||||
`check-typeset-coverage.mjs` замыкает круг «прочитал вывод → подал на вход». `meta-info` —
|
||||
читающий навык, и модель несёт его строки обратно в `meta-compile`; до гарда эта связь держалась на
|
||||
честном слове и рвалась молча в обе стороны. `meta-info` печатал `ДокументОбъект.Заказ` в источниках
|
||||
подписки, а компилятор отвечал «Неизвестный тип»: русских объектных имён в словаре не было — 33
|
||||
метки из 41. И наоборот, в карте читалки не было `ConstantValueManager` и
|
||||
`ChartOfCalculationTypesObject`, хотя компилятор их эмитит, — типы печатались по-английски посреди
|
||||
русского вывода. Снэпшоты этого не видят: кейсы читают и компилируют по отдельности, круг не
|
||||
замыкая.
|
||||
|
||||
Инвариант строгий в одну сторону: каждая метка, которую умеет печатать `meta-info`, обязана быть
|
||||
ключом в `typeSynonyms` у `meta-compile` и вести ровно в тот же канон. Обратное неверно намеренно —
|
||||
компилятор знает формы, которых читалка не печатает (английские, полные варианты рядом с
|
||||
аббревиатурами). Заодно гард сверяет `objectTypeMap`/`refTypeMap` между портами навыка: значения
|
||||
переводов — часть вывода, и расхождение портов дало бы разный текст на один и тот же файл.
|
||||
|
||||
Добавляешь вид в карту `meta-info` — заводи русскую метку в словарь `meta-compile` (и в копию
|
||||
`meta-edit`, её держит `check-type-synonyms.mjs`).
|
||||
|
||||
`check-nonascii-fs.mjs` держит `tests/common/fsutil.mjs` — единственное место, где тесты, хуки и
|
||||
движок `web-test` удаляют и копируют файлы. На Windows `fs.rmSync` и `fs.cpSync` **молча** ничего
|
||||
не делают, если не-ASCII символы есть в самом аргументе пути ([nodejs/node#61067][nafs]): фикстура
|
||||
|
||||
Reference in New Issue
Block a user