mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-03 10:10:21 +03:00
fix(cfe-borrow,form-*,interface-edit,meta-compile,role-compile,subsystem-compile,template-add): длина среза Configuration.xml
Detect-FormatVersion читает префикс Configuration.xml как ReadAllText(...).Substring(0, Min(2000, (Get-Item).Length)). Размер файла — в БАЙТАХ, Substring считает СИМВОЛЫ: на кириллице байт больше, и если файл короче 2000 символов, длина среза выходит за строку и навык падает исключением. Проявлялось на маленьких конфигурациях — например на фикстуре EPF внутри конфигурации на поддержке. Функция расходится копиями по навыкам, поэтому правка одинаковая в восьми: длина берётся по самой строке. В help-add так было изначально; в meta-compile рядом (Detect-CompatibilityMode) уже стоял верный вариант. py-порты иммунны: там f.read(2000) в текстовом режиме — читает символы и не бросает исключение. Зеркалить нечего, версии выровнены по обоим портам. Заодно tests/skills/verify-snapshots.mjs: outputPath кейса читался только из params, тогда как runner.mjs берёт его с верхнего уровня — из-за расхождения харнесс искал результат не там, где навык его написал, и это маскировало падение как «выход не создан». Проверка: 1С-сертификация mxl-compile 13/13 (кейс guard-allow-external падал с начала кампании), полная сюита 630/630 на PowerShell и 627+3 skipped на python. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
919d49fe14
commit
fae22435d4
@@ -1,4 +1,4 @@
|
||||
# interface-edit v1.8 — Edit 1C CommandInterface.xml
|
||||
# interface-edit v1.9 — Edit 1C CommandInterface.xml
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)][Alias('Path')][string]$CIPath,
|
||||
@@ -164,7 +164,10 @@ function Detect-FormatVersion([string]$dir) {
|
||||
while ($d) {
|
||||
$cfgPath = Join-Path $d "Configuration.xml"
|
||||
if (Test-Path $cfgPath) {
|
||||
$head = [System.IO.File]::ReadAllText($cfgPath, [System.Text.Encoding]::UTF8).Substring(0, [Math]::Min(2000, (Get-Item $cfgPath).Length))
|
||||
$cfgText = [System.IO.File]::ReadAllText($cfgPath, [System.Text.Encoding]::UTF8)
|
||||
# Длину среза берём по СТРОКЕ, а не по размеру файла: размер в БАЙТАХ, Substring считает
|
||||
# СИМВОЛЫ, и на кириллице байт больше — короткий Configuration.xml ронял навык исключением.
|
||||
$head = $cfgText.Substring(0, [Math]::Min(2000, $cfgText.Length))
|
||||
if ($head -match '<MetaDataObject[^>]+version="(\d+\.\d+)"') { return $Matches[1] }
|
||||
}
|
||||
$parent = Split-Path $d -Parent
|
||||
|
||||
Reference in New Issue
Block a user