mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-27 12:35:54 +03:00
fix(db-*, epf-*): ошибка до запуска платформы не выдаётся за успех
Временный каталог брался из $env:TEMP, которой вне Windows нет. Join-Path падал на привязке параметра внутри try/finally без catch: try прерывался, finally отрабатывал, и скрипт выходил с кодом 0 — платформа не запускалась, постусловие не проверялось (#106). - временный каталог — [IO.Path]::GetTempPath() (на Windows тот же путь); - верхнеуровневый trap { … exit 1 } в 15 скриптах db-*/epf-*, запускающих платформу: любая необработанная ошибка даёт код 1 и печатает место; - уборка временного каталога в finally не падает на пустом пути; - гард check-ps-portability.mjs держит оба правила. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
317dce6d9f
commit
eb1796ef94
@@ -115,6 +115,7 @@ node tests/skills/check-inline-drift.mjs --list # реестр: семья →
|
||||
| `check-agent-portability.mjs` | исходники навыков не привязаны к конкретному AI-агенту: единственная разрешённая форма — плейсхолдер `${CLAUDE_SKILL_DIR}/`, который разворачивает `scripts/switch.py` |
|
||||
| `check-error-streams.mjs` | сообщения об ошибках идут в один и тот же поток в обоих портах навыка (соответствие из `docs/python-porting-guide.md`) |
|
||||
| `check-nonascii-fs.mjs` | `fsutil`: удаление и копирование держат не-ASCII пути (кириллический `%TEMP%`, кириллические имена объектов 1С), обе копии модуля не разошлись |
|
||||
| `check-ps-portability.mjs` | `.ps1` навыков не читают `$env:TEMP`/`$env:TMP`; скрипты `db-*`/`epf-*`, запускающие платформу, держат верхнеуровневый `trap { … exit 1 }` |
|
||||
|
||||
`check-inline-drift.mjs` держит реестр семей внутри себя: у каждой семьи перечислены варианты, у
|
||||
варианта — навык-эталон и список копий. Отклоняющийся вариант обязан иметь обоснование (`why`),
|
||||
@@ -159,6 +160,16 @@ node tests/skills/check-inline-drift.mjs --list # реестр: семья →
|
||||
|
||||
[nafs]: https://github.com/nodejs/node/issues/61067
|
||||
|
||||
`check-ps-portability.mjs` держит два следствия issue #106. Вне Windows `$env:TEMP` равна `$null`,
|
||||
и `Join-Path $env:TEMP …` падает на привязке параметра. Внутри `try { } finally { }` без `catch`
|
||||
такая ошибка прерывает `try`, отрабатывает `finally` — и скрипт выходит с **кодом 0**: платформа
|
||||
не запускалась, постусловие не проверялось, навык «успешен». Поэтому временный каталог берётся
|
||||
через `[IO.Path]::GetTempPath()`, а скрипты `db-*`/`epf-*`, запускающие платформу, ставят после
|
||||
`param(...)` верхнеуровневый `trap { … exit 1 }` — он ловит и ошибки вне `try`, внутренние `catch`
|
||||
сохраняют приоритет, `finally` отрабатывает. Кейсом это не проверить: libuv на Windows возвращает
|
||||
`TEMP` в окружение дочернего процесса, даже если раннер его убрал, а пустое значение ломает
|
||||
`GetTempPath()` иначе, чем отсутствие переменной.
|
||||
|
||||
`check-format-versions.mjs` держит границы проверенного диапазона версий формата выгрузки. Раньше
|
||||
допустимый список версий был независимым литералом в каждом валидаторе, и сверять его было не с
|
||||
чем: волна 2.21 прошла по четырём валидаторам и молча обошла пятый — `form-validate` остался на
|
||||
|
||||
Reference in New Issue
Block a user