mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-06 19:50:20 +03:00
fix(skills): корректный запуск Python-портов на macOS/Linux
- subsystem-compile.py: авто-валидация через subprocess к subsystem-validate.py (вместо powershell.exe + .ps1), без проброса кода возврата — паритет с сиблингами - resolve_v8path (12 db/epf .py): резолв каталога платформы по ОС (1cv8 без .exe на *nix), авто-поиск /opt/1cv8/*; ibcmd только явным путём, 1cv8c убран - сообщения об ошибках платформо-нейтральные (ps1+py), коммент-заглушка PY-only в .ps1 - runner.mjs (v0.5): loadV8Context кросс-платформенный (1cv8/ibcmd без .exe) - тесты: stdoutContains маркер валидатора (#26), негативный кейс db-update/error-bad-v8dir - синхронный бамп версий ps1+py всех затронутых навыков Fixes #26, #27 Co-Authored-By: Korolev Pavel <korolev.vrn@gmail.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Korolev Pavel
Claude Opus 4.8
parent
3a7f1c1763
commit
29999a2755
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "Ошибка: каталог -V8Path без исполняемого 1C",
|
||||
"args_extra": ["-V8Path", "{workDir}"],
|
||||
"expectError": true
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
},
|
||||
"validatePath": "Subsystems/Тест",
|
||||
"expect": {
|
||||
"files": ["Subsystems/Тест.xml"]
|
||||
"files": ["Subsystems/Тест.xml"],
|
||||
"stdoutContains": "=== Validation OK: Subsystem.Тест"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// skill-test-runner v0.4 — Snapshot-based regression tests for 1C skill scripts
|
||||
// skill-test-runner v0.5 — Snapshot-based regression tests for 1C skill scripts
|
||||
// Usage: node tests/skills/runner.mjs [filter] [--update-snapshots] [--runtime python] [--json report.json] [--concurrency N] [--with-validation]
|
||||
|
||||
import { execFileSync, execFile } from 'child_process';
|
||||
@@ -970,9 +970,12 @@ function loadV8Context() {
|
||||
try {
|
||||
const proj = JSON.parse(readFileSync(projectFile, 'utf8'));
|
||||
const v8bin = proj.v8path;
|
||||
const v8exe = v8bin ? (existsSync(join(v8bin, '1cv8.exe')) ? join(v8bin, '1cv8.exe') : null) : null;
|
||||
// Platform executable names: Windows uses .exe; *nix (macOS/Linux) plain names.
|
||||
const exeName = process.platform === 'win32' ? '1cv8.exe' : '1cv8';
|
||||
const ibcmdName = process.platform === 'win32' ? 'ibcmd.exe' : 'ibcmd';
|
||||
const v8exe = v8bin && existsSync(join(v8bin, exeName)) ? join(v8bin, exeName) : null;
|
||||
if (!v8exe) return null;
|
||||
const ibcmdExe = v8bin && existsSync(join(v8bin, 'ibcmd.exe')) ? join(v8bin, 'ibcmd.exe') : null;
|
||||
const ibcmdExe = v8bin && existsSync(join(v8bin, ibcmdName)) ? join(v8bin, ibcmdName) : null;
|
||||
const defaultDb = proj.databases?.find(d => d.id === proj.default) || proj.databases?.[0];
|
||||
return {
|
||||
v8path: v8bin,
|
||||
|
||||
Reference in New Issue
Block a user