Files
cc-1c-skills/tests/skills/cases/cfe-borrow/form-choice-link-dangling.json
T
Nick ShirokovandClaude Opus 5 54ee6efe93 fix(tests): каталог расширения в кейсах cfe-* — cfe вместо ext (closes #74)
Кейсы клали расширение в `ext`, а cf-init создаёт в корне конфигурации платформенный `Ext/`.
На регистронезависимой ФС (Windows, APFS) это один каталог: эталоны годами фиксировали
слипшееся дерево — в snapshots/<case>/ext/ лежали вперемешку ClientApplicationInterface.xml
конфигурации и Configuration.xml расширения, а имя каталога в коммите зависело от того, кто
создал его первым (ext у одних кейсов, Ext у других при одинаковом входе). На Linux те же
кейсы дали бы два каталога и другой снапшот.

Переименование механическое: 64 кейса пяти навыков, 349 файлов эталонов переехали без
единой правки содержимого. Заодно переписан регистр 21 пути в индексе — git с core.ignorecase
не показывал, что файл конфигурации числится под ext/, а лежит в Ext/.

Гард в runner.mjs: имя каталога расширения из params, совпавшее без учёта регистра с тем, что
уже есть в фикстуре, валит кейс с объяснением. Проверено, что старое имя теперь не проходит.

verify-snapshots.mjs чинится тем же заходом — там нашлись две дыры:
- каталог расширения был захардкожен как 'ext', поэтому кейсы с другим именем МОЛЧА теряли
  вторую половину проверки: блок загрузки расширения обходился по existsSync и в отчёте это
  выглядело успехом;
- setup брался только из _skill.json, и кейсы с гейтом по версии формата (218/220/221)
  проверялись на конфигурации 2.17 — то есть платформа не видела ровно того поведения, ради
  которого кейс написан.
Плюс два honest-skip вместо ложных падений: режим совместимости выше платформы и формат
выгрузки новее платформы (второе читаем из ответа платформы, а не дублируем лестницу версий).

Проверено: регресс 827/0/8 (ps1) и 824/0/11 (py), гарды 5/5. Платформенная верификация:
cfe-borrow 26/28 на 8.3.27, cfe-patch-method 22/23, cfe-init 6/7, все 14 кейсов format-221
на 8.5 — остальное осознанные пропуски.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 22:20:28 +03:00

103 lines
3.1 KiB
JSON

{
"name": "Связь параметров выбора на несуществующий реквизит объекта вырезается целиком",
"preRun": [
{
"script": "meta-compile/scripts/meta-compile",
"input": {
"type": "Catalog",
"name": "Склады"
},
"args": {
"-JsonPath": "{inputFile}",
"-OutputDir": "{workDir}"
}
},
{
"script": "meta-compile/scripts/meta-compile",
"input": {
"type": "Catalog",
"name": "Ячейки"
},
"args": {
"-JsonPath": "{inputFile}",
"-OutputDir": "{workDir}"
}
},
{
"script": "meta-compile/scripts/meta-compile",
"input": {
"type": "Document",
"name": "Размещение",
"attributes": [
{
"name": "Ячейка",
"type": "CatalogRef.Ячейки"
}
]
},
"args": {
"-JsonPath": "{inputFile}",
"-OutputDir": "{workDir}"
}
},
{
"script": "form-add/scripts/form-add",
"args": {
"-ObjectPath": "{workDir}/Documents/Размещение.xml",
"-FormName": "ФормаДокумента"
}
},
{
"script": "form-compile/scripts/form-compile",
"input": {
"title": "Размещение",
"elements": [
{
"input": "Ячейка",
"path": "Объект.Ячейка",
"choiceParameterLinks": [
{
"name": "Отбор.Владелец",
"dataPath": "Объект.НетТакогоРеквизита"
}
]
}
],
"attributes": [
{
"name": "Объект",
"type": "DocumentObject.Размещение",
"main": true
}
]
},
"args": {
"-JsonPath": "{inputFile}",
"-OutputPath": "{workDir}/Documents/Размещение/Forms/ФормаДокумента/Ext/Form.xml"
}
},
{
"script": "cfe-init/scripts/cfe-init",
"args": {
"-Name": "Тест",
"-OutputDir": "{workDir}/cfe",
"-ConfigPath": "{workDir}"
}
}
],
"params": {
"extensionPath": "cfe",
"object": "Document.Размещение.Form.ФормаДокумента"
},
"expect": {
"fileNotContains": {
"file": "cfe/Documents/Размещение/Forms/ФормаДокумента/Ext/Form.xml",
"text": [
"<xr:Link>",
"<ChoiceParameterLinks>"
]
}
},
"skipPlatformVerify": "вход намеренно содержит путь, который платформа отвергает: в валидной конфигурации форма не может ссылаться на несуществующий реквизит объекта, а проверяется именно поведение навыка на таком пути. Расширение на выходе валидно, но verify-snapshots грузит и конфигурацию-источник"
}