test(runner): проверки stdout работают и в негативных кейсах

expect.stdoutContains/stdoutNotContains жили в ветке успеха, поэтому у
кейса с expectError проверялся только ненулевой код возврата, а строки
не смотрелись вовсе. Пятнадцать кейсов (включая xdto-validate,
meta-validate, form-validate, meta-remove) были зелёными вхолостую —
у facet-conflicts текст навыка успел разойтись с ожиданием.

Плюс case-level "cwd": "workDir" — кейсу может понадобиться, чтобы
навык стартовал внутри рабочего каталога (фикстура .v8-project.json).

Кейсы на доп. аргументы платформы: pass-through 1cv8 и ibcmd, источник
из реестра проекта, цепочка epf-build → stub, конфликт ключа,
позиционный токен ibcmd, чужой движок, маскирование секрета.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-29 21:15:40 +03:00
co-authored by Claude Opus 5
parent 761e7b8613
commit 478d6acfa2
8 changed files with 58 additions and 14 deletions
@@ -4,7 +4,7 @@
{ "writeFile": { "path": "fake.cmd", "content": "@echo off\r\nexit /b 0\r\n" } }
],
"args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib",
"-AdditionalV8Arguments", "/F", "C:\\tmp"],
"-AdditionalV8Arguments", "/F,C:\\tmp"],
"expectError": true,
"noSnapshot": "негативный кейс: платформа не запускается"
}
@@ -1,11 +1,29 @@
{
"name": "Доп. аргументы берутся из v8args в .v8-project.json (fake platform)",
"preRun": [
{ "writeFile": { "path": "fake.cmd", "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" } },
{ "writeFile": { "path": ".v8-project.json", "content": "{\n \"v8path\": \"fake\",\n \"v8args\": [\"/UseHwLicenses+\"],\n \"ibcmdargs\": [\"--verbose\"]\n}\n" } }
{
"writeFile": {
"path": "fake.cmd",
"content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n"
}
},
{
"writeFile": {
"path": ".v8-project.json",
"content": "{\n \"v8path\": \"fake\",\n \"v8args\": [\"/UseHwLicenses+\"],\n \"ibcmdargs\": [\"--verbose\"]\n}\n"
}
}
],
"args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib"],
"expect": { "stdoutContains": "/DisableStartupDialogs /UseHwLicenses+" },
"args_extra": [
"-V8Path",
"{workDir}\\fake.cmd",
"-InfoBasePath",
"{workDir}\\ib"
],
"expect": {
"stdoutContains": "/DisableStartupDialogs /UseHwLicenses+"
},
"expectError": true,
"noSnapshot": "проверяется командная строка в stdout, файлов на выходе нет"
"noSnapshot": "проверяется командная строка в stdout, файлов на выходе нет",
"cwd": "workDir"
}
@@ -4,7 +4,7 @@
{ "writeFile": { "path": "ibcmd.cmd", "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" } }
],
"args_extra": ["-V8Path", "{workDir}\\ibcmd.cmd", "-InfoBasePath", "{workDir}\\ib",
"-AdditionalIbcmdArguments", "--verbose", "--token=topsecret"],
"-AdditionalIbcmdArguments", "--verbose,--token=topsecret"],
"expect": {
"stdoutContains": ["ARGS: infobase create", "--verbose --token=topsecret", "--token=***"]
},
@@ -0,0 +1,12 @@
{
"name": "Доп. аргументы 1cv8 попадают в командную строку, py-порт (fake platform)",
"runtimeOnly": "python",
"preRun": [
{ "writeFile": { "path": "fake.cmd", "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" } }
],
"args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib",
"-AdditionalV8Arguments", "/UseHwLicenses+"],
"expect": { "stdoutContains": "/DisableStartupDialogs /UseHwLicenses+" },
"expectError": true,
"noSnapshot": "py-порт печатает лог /Out, а не stdout платформы — проверяется строка запуска"
}
@@ -5,6 +5,7 @@
],
"args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib",
"-AdditionalV8Arguments", "/UseHwLicenses+"],
"runtimeOnly": "powershell",
"expect": { "stdoutContains": ["ARGS: CREATEINFOBASE", "/DisableStartupDialogs /UseHwLicenses+"] },
"expectError": true,
"noSnapshot": "проверяется командная строка в stdout, файлов на выходе нет"