From 647c633a9b3323fb6ebc7776c76fd0a7d60230bb Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Thu, 24 Sep 2026 18:08:20 +0300 Subject: [PATCH] =?UTF-8?q?fix(db-load-xml):=20-AllExtensions=20=D1=81=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=BE=D0=B9=20=D1=87?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=8F=D0=BC=D0=B8=20=E2=80=94=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=20=D0=BD=D0=B0=20=D0=BE=D0=B1=D0=BE=D0=B8?= =?UTF-8?q?=D1=85=20=D0=B4=D0=B2=D0=B8=D0=B6=D0=BA=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ветка ibcmd молча игнорировала список и загружала все расширения целиком. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01ANXwbMUhuRFSCsq2RgmTTm --- .claude/skills/db-load-xml/SKILL.md | 2 +- .../db-load-xml/scripts/db-load-xml.ps1 | 9 ++++- .../skills/db-load-xml/scripts/db-load-xml.py | 8 +++- .../error-allext-partial-ibcmd.json | 40 +++++++++++++++++++ .../db-load-xml/error-allext-partial.json | 33 +++++++++++++++ 5 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 tests/skills/cases/db-load-xml/error-allext-partial-ibcmd.json create mode 100644 tests/skills/cases/db-load-xml/error-allext-partial.json diff --git a/.claude/skills/db-load-xml/SKILL.md b/.claude/skills/db-load-xml/SKILL.md index 91e12db62..c6aca3180 100644 --- a/.claude/skills/db-load-xml/SKILL.md +++ b/.claude/skills/db-load-xml/SKILL.md @@ -57,7 +57,7 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-load-xml.ps1" < | `-Files <список>` | для Partial | Относительные пути файлов через запятую | | `-ListFile <путь>` | для Partial | Путь к файлу со списком (альтернатива `-Files`) | | `-Extension <имя>` | нет | Загрузить в расширение | -| `-AllExtensions` | нет | Загрузить все расширения | +| `-AllExtensions` | нет | Загрузить все расширения (только полностью; частями — по одному через `-Extension`) | | `-NoApplyCheck` | нет | Не проверять применимость расширения после загрузки | | `-Format <формат>` | нет | `Hierarchical` (по умолч.) / `Plain` | | `-UpdateDB` | нет | После загрузки сразу обновить конфигурацию БД (`/UpdateDBCfg`) | 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 6389e89c0..96ae8c4d8 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.30 — Load 1C configuration from XML files +# db-load-xml v1.31 — Load 1C configuration from XML files # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills # NB: *nix-раскладку платформы (/opt/1cv8//1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется. <# @@ -717,6 +717,13 @@ if ($Mode -eq "Partial" -and -not $Files -and -not $ListFile) { Write-Host "Error: -Files or -ListFile required for Partial mode" -ForegroundColor Red exit 1 } +# Частями грузится одно расширение за раз: конфигуратор такое сочетание отвергает сам, а ibcmd +# молча загрузил бы все расширения целиком, не глядя в список. +if ($Mode -eq "Partial" -and $AllExtensions) { + Write-Host "Error: -AllExtensions cannot be combined with a partial load (-Files/-ListFile)" -ForegroundColor Red + Write-Host " Загружайте расширения по одному: -Extension <имя>, -ConfigDir — каталог этого расширения." -ForegroundColor Yellow + exit 1 +} # --- Temp dir --- $tempDir = Join-Path $env:TEMP "db_load_xml_$(Get-Random)" 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 7b5d07764..5924a5ca9 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.30 — Load 1C configuration from XML files +# db-load-xml v1.31 — Load 1C configuration from XML files # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -753,6 +753,12 @@ def main(): if args.Mode == "Partial" and not args.Files and not args.ListFile: print("Error: -Files or -ListFile required for Partial mode") sys.exit(1) + # Частями грузится одно расширение за раз: конфигуратор такое сочетание отвергает сам, а ibcmd + # молча загрузил бы все расширения целиком, не глядя в список. + if args.Mode == "Partial" and args.AllExtensions: + print("Error: -AllExtensions cannot be combined with a partial load (-Files/-ListFile)") + print(" Загружайте расширения по одному: -Extension <имя>, -ConfigDir — каталог этого расширения.") + sys.exit(1) # --- ibcmd branch (file infobase only; hierarchical full-directory import) --- if engine == "ibcmd": diff --git a/tests/skills/cases/db-load-xml/error-allext-partial-ibcmd.json b/tests/skills/cases/db-load-xml/error-allext-partial-ibcmd.json new file mode 100644 index 000000000..8b793bfee --- /dev/null +++ b/tests/skills/cases/db-load-xml/error-allext-partial-ibcmd.json @@ -0,0 +1,40 @@ +{ + "name": "Ошибка: -AllExtensions с загрузкой частями и на ibcmd — не полный импорт всех расширений (fake platform)", + "preRun": [ + { + "writeFile": { + "path": "ibcmd.cmd", + "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" + } + }, + { + "writeFile": { + "path": "ib/1Cv8.1CD", + "content": "stub" + } + }, + { + "writeFile": { + "path": "src/CommonModules/Модуль.xml", + "content": "" + } + } + ], + "args_extra": [ + "-V8Path", + "{workDir}\\ibcmd.cmd", + "-InfoBasePath", + "{workDir}\\ib", + "-ConfigDir", + "{workDir}\\src", + "-Files", + "CommonModules/Модуль.xml", + "-AllExtensions" + ], + "expectError": true, + "expect": { + "stdoutContains": "-AllExtensions cannot be combined with a partial load", + "stdoutNotContains": "ARGS:" + }, + "osOnly": "win32" +} diff --git a/tests/skills/cases/db-load-xml/error-allext-partial.json b/tests/skills/cases/db-load-xml/error-allext-partial.json new file mode 100644 index 000000000..5d0d65e8d --- /dev/null +++ b/tests/skills/cases/db-load-xml/error-allext-partial.json @@ -0,0 +1,33 @@ +{ + "name": "Ошибка: -AllExtensions вместе с загрузкой частями", + "fakePlatform": { + "log": "" + }, + "preRun": [ + { + "writeFile": { + "path": "src/CommonModules/Модуль.xml", + "content": "" + } + } + ], + "args_extra": [ + "-V8Path", + "{fakePlatform}", + "-InfoBasePath", + "{workDir}/ib", + "-ConfigDir", + "{workDir}/src", + "-Files", + "CommonModules/Модуль.xml", + "-AllExtensions" + ], + "expectError": true, + "expect": { + "stdoutContains": [ + "-AllExtensions cannot be combined with a partial load", + "Загружайте расширения по одному: -Extension <имя>" + ], + "stdoutNotContains": "Running:" + } +}