diff --git a/tests/skills/cases/db-create/false-success-no-ib.json b/tests/skills/cases/db-create/false-success-no-ib.json new file mode 100644 index 00000000..63b3f3d0 --- /dev/null +++ b/tests/skills/cases/db-create/false-success-no-ib.json @@ -0,0 +1,9 @@ +{ + "name": "Ложный успех: платформа вернула 0 без 1Cv8.1CD (fake platform)", + "runtimeOnly": "powershell", + "preRun": [ + { "writeFile": { "path": "fake.cmd", "content": "@echo off\r\nexit /b 0\r\n" } } + ], + "args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib"], + "expectError": true +} diff --git a/tests/skills/cases/db-dump-cf/false-success-no-output.json b/tests/skills/cases/db-dump-cf/false-success-no-output.json new file mode 100644 index 00000000..59b7c173 --- /dev/null +++ b/tests/skills/cases/db-dump-cf/false-success-no-output.json @@ -0,0 +1,9 @@ +{ + "name": "Ложный успех: платформа вернула 0 без выходного файла (fake platform)", + "runtimeOnly": "powershell", + "preRun": [ + { "writeFile": { "path": "fake.cmd", "content": "@echo off\r\nexit /b 0\r\n" } } + ], + "args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib", "-OutputFile", "{workDir}\\out.cf"], + "expectError": true +} diff --git a/tests/skills/cases/db-run/early-exit.json b/tests/skills/cases/db-run/early-exit.json new file mode 100644 index 00000000..31ae8ccc --- /dev/null +++ b/tests/skills/cases/db-run/early-exit.json @@ -0,0 +1,9 @@ +{ + "name": "Ранний выход: процесс умер в контрольном окне, не должно быть launched (fake platform)", + "runtimeOnly": "powershell", + "preRun": [ + { "writeFile": { "path": "fake.cmd", "content": "@echo off\r\nexit /b 1\r\n" } } + ], + "args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib"], + "expectError": true +} diff --git a/tests/skills/runner.mjs b/tests/skills/runner.mjs index 28d95a23..4454928b 100644 --- a/tests/skills/runner.mjs +++ b/tests/skills/runner.mjs @@ -539,6 +539,12 @@ async function runCaseAsync(testCase, opts) { let workDir = null; let inputFile = null; + // runtimeOnly: gate a case to a single port (e.g. a .cmd fake platform only runs via + // PowerShell's Start-Process; python's list-exec can't launch it). Skipped elsewhere. + if (caseData.runtimeOnly && caseData.runtimeOnly !== opts.runtime) { + return { id: testCase.id, skill: testCase.skillDir, name: testCase.name, passed: true, skipped: true, errors: [], elapsed: '0.0s' }; + } + try { const skillCasesDir = join(CASES, testCase.skillDir); const fixturePath = ensureSetup(setupName, opts.runtime, skillCasesDir);