fix(meta-edit): отказ вместо предупреждения, когда операция не выполнена

WARN с кодом 0 означал «не смог»: в пакетном прогоне это выглядело как успех.
Теперь предупреждение остаётся только там, где нужное уже есть (элемент уже
добавлен, удалять нечего, позиция after/before не найдена — добавлено в конец).
Остальное — ошибка в stderr и код 1: неизвестный ключ или операция, неверный
формат, недопустимый у типа ребёнок, изменение несуществующего элемента, формы и
макеты (их делают form-add/template-add).

Отказ атомарен: побочные файлы (таблица внешнего источника, модуль команды,
предопределённые) пишутся после основного XML, так что отказ посреди определения
не оставляет на диске ни одного изменения.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-26 16:50:51 +03:00
co-authored by Claude Opus 5.5
parent 51bcc503b0
commit cfd2d1be50
21 changed files with 347 additions and 1008 deletions
@@ -0,0 +1,38 @@
{
"name": "Форму meta-edit не удаляет — отсылает к form-remove",
"preRun": [
{
"script": "meta-compile/scripts/meta-compile",
"input": {
"type": "Catalog",
"name": "Контрагенты"
},
"args": {
"-JsonPath": "{inputFile}",
"-OutputDir": "{workDir}"
}
}
],
"params": {
"objectPath": "Catalogs/Контрагенты"
},
"input": {
"remove": {
"forms": [
"ФормаСписка"
]
}
},
"expect": {
"fileNotContains": [
{
"file": "Catalogs/Контрагенты.xml",
"text": [
"<Form",
"<Template"
]
}
]
},
"expectError": "form-remove"
}