From 8232cbeaaa9314e90beb14255a2fd477798b7eb8 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 26 Jul 2026 14:12:02 +0300 Subject: [PATCH] =?UTF-8?q?test(verify-snapshots):=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=B0=20caseFiles=20=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=B0=D0=B2=D1=8B=D0=BA=D0=BE=D0=B2=20xdto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Харнесс платформенной верификации не знал про caseFiles — механизм файлового входа кейса, добавленный в runner.mjs. Та же функция перенесена сюда, xdto-compile и xdto-edit добавлены в список проверяемых навыков. Первый прогон отвергает 4 кейса из 9 — разбор в debug/xdto/FINDINGS.md §15. Co-Authored-By: Claude Opus 5 (1M context) --- tests/skills/verify-snapshots.mjs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tests/skills/verify-snapshots.mjs b/tests/skills/verify-snapshots.mjs index 5639d743..9dc2a752 100644 --- a/tests/skills/verify-snapshots.mjs +++ b/tests/skills/verify-snapshots.mjs @@ -9,7 +9,7 @@ import { execFileSync } from 'child_process'; import { existsSync, mkdirSync, mkdtempSync, rmSync, readFileSync, writeFileSync, - readdirSync, statSync, cpSync } from 'fs'; + readdirSync, statSync, cpSync, copyFileSync } from 'fs'; import { join, resolve, dirname, basename } from 'path'; import { tmpdir } from 'os'; @@ -686,6 +686,15 @@ async function verifyCase(skillName, caseName, skillConfig, caseData, opts) { const workDir = mkdtempSync(join(tmpdir(), `verify-${skillName}-${caseName}-`)); result.workDir = workDir; + // caseFiles — файловый вход кейса (напр. XSD для xdto-compile), как в runner.mjs + for (const rel of caseData.caseFiles || []) { + const src = join(CASES, skillName, rel); + if (!existsSync(src)) throw new Error(`caseFiles: файл не найден: ${src}`); + const dst = rel.includes('/') ? join(workDir, rel) : join(workDir, basename(rel)); + mkdirSync(dirname(dst), { recursive: true }); + copyFileSync(src, dst); + } + const log = (step, ok, detail) => { result.steps.push({ step, ok, detail: detail?.substring(0, 2000) }); if (opts.verbose) { @@ -1286,6 +1295,7 @@ const DEFAULT_SKILLS = [ 'epf-init', 'erf-init', 'template-add', 'help-add', 'cfe-init', 'cfe-borrow', 'cfe-patch-method', 'skd-compile', 'skd-edit', 'mxl-compile', + 'xdto-compile', 'xdto-edit', ]; function discoverCases(skillFilter, caseFilter) {