fix(tests): verify-snapshots — honor v8path на исполняемый файл (ibcmd)

loadV8Context трактовал v8path только как каталог: путь на файл (.../ibcmd)
не резолвился и МОЛЧА подменялся авто-детектом обратно на 1cv8 (Platform-строка
печатала 1cv8 при заданном ibcmd). Теперь: v8path-файл используется как есть →
db-* навыки сами выбирают движок по basename, verify умеет гонять цикл через
ibcmd. Явно заданный неразрешимый путь → null (ошибка), а не тихая подмена
платформой. Авто-детект только при пустом v8path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-12 14:30:04 +03:00
parent abb3580d60
commit a862e913c8
+11 -7
View File
@@ -103,14 +103,18 @@ function loadV8Context() {
if (existsSync(projectFile)) {
try { v8bin = JSON.parse(readFileSync(projectFile, 'utf8')).v8path || null; } catch { /* ignore */ }
}
let v8exe = resolveV8Exe(v8bin);
if (!v8exe) {
// v8path пуст/не резолвится — пробуем авто-детект (актуально на маке с /opt/1cv8/<ver>/).
const detected = autodetectV8bin();
if (detected) { v8bin = detected; v8exe = resolveV8Exe(detected); }
if (v8bin) {
// v8path указывает прямо на исполняемый файл (1cv8/ibcmd) — используем как есть, не подменяя авто-детектом.
// Так verify умеет гонять цикл через ibcmd (db-* навыки сами выбирают движок по basename).
if (existsSync(v8bin) && statSync(v8bin).isFile()) return { v8path: v8bin, v8exe: v8bin };
const v8exe = resolveV8Exe(v8bin);
// Явно заданный, но неразрешимый путь — это ошибка конфигурации, НЕ повод молча брать другую платформу.
return v8exe ? { v8path: v8bin, v8exe } : null;
}
if (!v8exe) return null;
return { v8path: v8bin, v8exe };
// v8path не задан — авто-детект (актуально на маке с /opt/1cv8/<ver>/).
const detected = autodetectV8bin();
if (!detected) return null;
return { v8path: detected, v8exe: resolveV8Exe(detected) };
}
// ─── Script execution ───────────────────────────────────────────────────────