mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-11 05:23:42 +03:00
511bfe7fdf
XmlDocument round-trip искажал Template.xml даже при отсутствии правок: декодировал " в <query>/<expression>, схлопывал многострочный xmlns корня, добавлял пробел перед /> и записывал файл при [WARN] not found. Дирти-флаг ($script:Dirty / dirty) ставится только на успешной мутации; финальный save пропускается с [INFO] No changes -- file untouched, если ни одна операция в batch ничего не изменила. Post-process после OuterXml восстанавливает raw-форматирование корневого xmlns из исходного файла, re-escape `"` в текстах <query>/<expression> с anchored regex (не задевая xsi:type="..."), и нормализует <foo .../> к <foo.../>. Замеры на реальной схеме после modify-field: diff упал с 423 строк до 37 (94% шума устранено), повторный прогон byte-identical. В runner.mjs добавлен caseData.idempotent: re-run + byte-equality на всех файлах workDir. Три новых кейса (NO-OP, entity-preserve, xmlns-multiline) + общий fixture roundtrip-base. Все 33 ранее существовавших snapshot перегенерированы под корректное форматирование (восстанавливают то, что старый skd-edit ломал). skd-edit v1.18 -> v1.19. PS и PY порты синхронизированы. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
14 lines
443 B
JSON
14 lines
443 B
JSON
{
|
|
"name": "NO-OP modify-field на отсутствующее поле — файл не трогаем (regression от XML round-trip бага)",
|
|
"setup": "fixture:roundtrip-base",
|
|
"params": {
|
|
"templatePath": "Template.xml",
|
|
"operation": "modify-field",
|
|
"value": "НесуществующееПоле [Заголовок]"
|
|
},
|
|
"expect": {
|
|
"stdoutContains": "No changes -- file untouched"
|
|
},
|
|
"idempotent": true
|
|
}
|