diff --git a/.claude/skills/db-load-git/scripts/db-load-git.ps1 b/.claude/skills/db-load-git/scripts/db-load-git.ps1 index 1573a1650..0ad153819 100644 --- a/.claude/skills/db-load-git/scripts/db-load-git.ps1 +++ b/.claude/skills/db-load-git/scripts/db-load-git.ps1 @@ -1,4 +1,4 @@ -# db-load-git v1.30 — Load Git changes into 1C database +# db-load-git v1.31 — Load Git changes into 1C database # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # NB: *nix-раскладку платформы (/opt/1cv8//1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется. <# @@ -1051,10 +1051,12 @@ try { # разный — от отброшенного свойства до нерабочей на этой платформе конфигурации. Подсказку # про -StrictLog не даём: операция уже выполнена, повторять её ради того же текста незачем. $silentFailures = @(Find-SilentRejections $logContent) - if ($silentFailures.Count -gt 0) { + # Только при успехе: при провале лог уже выведен целиком, а блок повторял бы его строки + # под заголовком «reported success» — неправдой рядом с «Error … (code: N)». + if ($exitCode -eq 0 -and $silentFailures.Count -gt 0) { Write-Host "[warning] platform reported success, but the log contains $($silentFailures.Count) problem(s):" -ForegroundColor Yellow foreach ($f in $silentFailures) { Write-Host " $f" -ForegroundColor Yellow } - if ($StrictLog -and $exitCode -eq 0) { $exitCode = 1 } + if ($StrictLog) { $exitCode = 1 } } # Расширение могло загрузиться «успешно» и остаться неприменимым — спрашиваем платформу. diff --git a/.claude/skills/db-load-git/scripts/db-load-git.py b/.claude/skills/db-load-git/scripts/db-load-git.py index 74296bbbb..3492bbe99 100644 --- a/.claude/skills/db-load-git/scripts/db-load-git.py +++ b/.claude/skills/db-load-git/scripts/db-load-git.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-load-git v1.30 — Load Git changes into 1C database +# db-load-git v1.31 — Load Git changes into 1C database # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -1108,14 +1108,16 @@ def main(): # разный — от отброшенного свойства до нерабочей на этой платформе конфигурации. Подсказку # про -StrictLog не даём: операция уже выполнена, повторять её ради того же текста незачем. silent_failures = find_silent_rejections(log_content) - if silent_failures: + # Только при успехе: при провале лог уже выведен целиком, а блок повторял бы его строки + # под заголовком «reported success» — неправдой рядом с «Error … (code: N)». + if exit_code == 0 and silent_failures: print( f"[warning] platform reported success, but the log contains " f"{len(silent_failures)} problem(s):" ) for line in silent_failures: print(f" {line}") - if args.StrictLog and exit_code == 0: + if args.StrictLog: exit_code = 1 # Расширение могло загрузиться «успешно» и остаться неприменимым — спрашиваем платформу. diff --git a/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 b/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 index e1e7e9090..b829903d4 100644 --- a/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 +++ b/.claude/skills/db-load-xml/scripts/db-load-xml.ps1 @@ -1,4 +1,4 @@ -# db-load-xml v1.32 — Load 1C configuration from XML files +# db-load-xml v1.33 — Load 1C configuration from XML files # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # NB: *nix-раскладку платформы (/opt/1cv8//1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется. <# @@ -931,10 +931,12 @@ try { # Причину не называем: строки лога печатаются следом и говорят за себя, а класс проблемы # разный — от отброшенного свойства до нерабочей на этой платформе конфигурации. Подсказку # про -StrictLog не даём: загрузка уже выполнена, повторять её ради того же текста незачем. - if ($silentFailures.Count -gt 0) { + # Только при успехе: при провале лог уже выведен целиком, а блок повторял бы его строки + # под заголовком «reported success» — неправдой рядом с «Error … (code: N)». + if ($exitCode -eq 0 -and $silentFailures.Count -gt 0) { Write-Host "[warning] platform reported success, but the log contains $($silentFailures.Count) problem(s):" -ForegroundColor Yellow foreach ($f in $silentFailures) { Write-Host " $f" -ForegroundColor Yellow } - if ($StrictLog -and $exitCode -eq 0) { $exitCode = 1 } + if ($StrictLog) { $exitCode = 1 } } # Расширение могло загрузиться «успешно» и при этом остаться неприменимым — спрашиваем платформу. diff --git a/.claude/skills/db-load-xml/scripts/db-load-xml.py b/.claude/skills/db-load-xml/scripts/db-load-xml.py index af16c5863..9d796c91f 100644 --- a/.claude/skills/db-load-xml/scripts/db-load-xml.py +++ b/.claude/skills/db-load-xml/scripts/db-load-xml.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-load-xml v1.32 — Load 1C configuration from XML files +# db-load-xml v1.33 — Load 1C configuration from XML files # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -962,14 +962,16 @@ def main(): # Поток — stdout, как у PS1-порта: предупреждение относится к содержимому загрузки, а не к # отказу навыка, и при code 0 остаётся предупреждением. Раньше py писал его в stderr — # наблюдаемое поведение портов расходилось, и один кейс не мог проверить оба. - if silent_failures: + # Только при успехе: при провале лог уже выведен целиком, а блок повторял бы его строки + # под заголовком «reported success» — неправдой рядом с «Error … (code: N)». + if exit_code == 0 and silent_failures: print( f"[warning] platform reported success, but the log contains " f"{len(silent_failures)} problem(s):" ) for f in silent_failures: print(f" {f}") - if args.StrictLog and exit_code == 0: + if args.StrictLog: exit_code = 1 # Расширение могло загрузиться «успешно» и остаться неприменимым — спрашиваем платформу. diff --git a/.claude/skills/db-update/scripts/db-update.ps1 b/.claude/skills/db-update/scripts/db-update.ps1 index 613cb60ed..9d5408622 100644 --- a/.claude/skills/db-update/scripts/db-update.ps1 +++ b/.claude/skills/db-update/scripts/db-update.ps1 @@ -1,4 +1,4 @@ -# db-update v1.22 — Update 1C database configuration +# db-update v1.23 — Update 1C database configuration # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # NB: *nix-раскладку платформы (/opt/1cv8//1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется. <# @@ -764,10 +764,12 @@ try { # разный — от отброшенного свойства до нерабочей на этой платформе конфигурации. Подсказку # про -StrictLog не даём: операция уже выполнена, повторять её ради того же текста незачем. $silentFailures = @(Find-SilentRejections $logContent) - if ($silentFailures.Count -gt 0) { + # Только при успехе: при провале лог уже выведен целиком, а блок повторял бы его строки + # под заголовком «reported success» — неправдой рядом с «Error … (code: N)». + if ($exitCode -eq 0 -and $silentFailures.Count -gt 0) { Write-Host "[warning] platform reported success, but the log contains $($silentFailures.Count) problem(s):" -ForegroundColor Yellow foreach ($f in $silentFailures) { Write-Host " $f" -ForegroundColor Yellow } - if ($StrictLog -and $exitCode -eq 0) { $exitCode = 1 } + if ($StrictLog) { $exitCode = 1 } } # Расширение могло загрузиться «успешно» и остаться неприменимым — спрашиваем платформу. diff --git a/.claude/skills/db-update/scripts/db-update.py b/.claude/skills/db-update/scripts/db-update.py index 4b4751ac8..b95411253 100644 --- a/.claude/skills/db-update/scripts/db-update.py +++ b/.claude/skills/db-update/scripts/db-update.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# db-update v1.22 — Update 1C database configuration +# db-update v1.23 — Update 1C database configuration # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -809,14 +809,16 @@ def main(): # разный — от отброшенного свойства до нерабочей на этой платформе конфигурации. Подсказку # про -StrictLog не даём: операция уже выполнена, повторять её ради того же текста незачем. silent_failures = find_silent_rejections(log_content) - if silent_failures: + # Только при успехе: при провале лог уже выведен целиком, а блок повторял бы его строки + # под заголовком «reported success» — неправдой рядом с «Error … (code: N)». + if exit_code == 0 and silent_failures: print( f"[warning] platform reported success, but the log contains " f"{len(silent_failures)} problem(s):" ) for line in silent_failures: print(f" {line}") - if args.StrictLog and exit_code == 0: + if args.StrictLog: exit_code = 1 # Расширение могло загрузиться «успешно» и остаться неприменимым — спрашиваем платформу. diff --git a/tests/skills/cases/db-load-git/failed-load-no-success-warning.json b/tests/skills/cases/db-load-git/failed-load-no-success-warning.json new file mode 100644 index 000000000..4c49f814d --- /dev/null +++ b/tests/skills/cases/db-load-git/failed-load-no-success-warning.json @@ -0,0 +1,76 @@ +{ + "name": "Провал загрузки (код 1) со строкой-отказом в логе: лог выведен, блока «reported success» нет (fake platform)", + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\n", + "exit": 1 + }, + "preRun": [ + { + "writeFile": { + "path": "src/Configuration.xml", + "content": "\n\t\n\t\t\n\t\t\tТовары\n\t\t\n\t\n\n" + } + }, + { + "writeFile": { + "path": "src/Catalogs/Товары.xml", + "content": "\n\t\n\t\t\n\t\n\n" + } + }, + { + "git": [ + "-C", + "src", + "init", + "-q" + ] + }, + { + "git": [ + "-C", + "src", + "add", + "-A" + ] + }, + { + "git": [ + "-C", + "src", + "commit", + "-qm", + "base" + ] + }, + { + "writeFile": { + "path": "src/Catalogs/Товары.xml", + "content": "\n\t\n\t\t\n\t\n\n\n" + } + }, + { + "git": [ + "-C", + "src", + "add", + "-A" + ] + } + ], + "args_extra": [ + "-V8Path", + "{fakePlatform}", + "-InfoBasePath", + "{workDir}/ib", + "-ConfigDir", + "{workDir}/src", + "-Source", + "Staged" + ], + "expectError": true, + "expect": { + "stdoutContains": "Свойство LineNumberLength не входит в состав объекта метаданных", + "stdoutNotContains": "reported success" + }, + "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется вывод при провале платформы" +} diff --git a/tests/skills/cases/db-load-xml/failed-load-no-success-warning.json b/tests/skills/cases/db-load-xml/failed-load-no-success-warning.json new file mode 100644 index 000000000..7be0cb458 --- /dev/null +++ b/tests/skills/cases/db-load-xml/failed-load-no-success-warning.json @@ -0,0 +1,29 @@ +{ + "name": "Провал загрузки (код 1) со строкой-отказом в логе: лог выведен, блока «reported success» нет (fake platform)", + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\n", + "exit": 1 + }, + "preRun": [ + { + "writeFile": { + "path": "src/Configuration.xml", + "content": "\n" + } + } + ], + "args_extra": [ + "-V8Path", + "{fakePlatform}", + "-InfoBasePath", + "{workDir}/ib", + "-ConfigDir", + "{workDir}/src" + ], + "expectError": true, + "expect": { + "stdoutContains": "Свойство LineNumberLength не входит в состав объекта метаданных", + "stdoutNotContains": "reported success" + }, + "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется вывод при провале платформы" +} diff --git a/tests/skills/cases/db-update/failed-load-no-success-warning.json b/tests/skills/cases/db-update/failed-load-no-success-warning.json new file mode 100644 index 000000000..8a9722f16 --- /dev/null +++ b/tests/skills/cases/db-update/failed-load-no-success-warning.json @@ -0,0 +1,19 @@ +{ + "name": "Провал загрузки (код 1) со строкой-отказом в логе: лог выведен, блока «reported success» нет (fake platform)", + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\n", + "exit": 1 + }, + "args_extra": [ + "-V8Path", + "{fakePlatform}", + "-InfoBasePath", + "{workDir}/ib" + ], + "expectError": true, + "expect": { + "stdoutContains": "Свойство LineNumberLength не входит в состав объекта метаданных", + "stdoutNotContains": "reported success" + }, + "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется вывод при провале платформы" +}