From 0de74ba6d1945a6f5f39757d8a8cccb92f9630d8 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Wed, 29 Jul 2026 22:38:10 +0300 Subject: [PATCH] =?UTF-8?q?test(db-create,epf-build):=20=D0=B2=D1=8B=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=BF=D0=BB=D0=B0=D1=82=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D1=8B,=20=D0=BA=D0=BE=D0=B4=D0=B8=D1=80=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8,=20=D0=BF=D1=83=D1=82=D1=8C=20=D1=81=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B1=D0=B5=D0=BB=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Кейсы, разведённые по портам из-за расхождения вывода, слиты обратно — это и есть приёмочный признак паритета. Цепочка epf-build разделена на два кейса: успешный запуск временной базы теперь молчит, поэтому её командная строка проверяется на падающем фейке. Новое: чтение вывода платформы в UTF-8 и cp866, отсутствие блока при молчащей платформе, форма токена для пути с пробелом, отказ до запуска при отсутствующей базе. Co-Authored-By: Claude Opus 5 (1M context) --- .../db-create/extra-args-passthrough-py.json | 26 ----------- .../db-create/extra-args-passthrough.json | 1 - .../cases/db-create/platform-output-oem.json | 26 +++++++++++ .../db-create/platform-output-silent.json | 23 ++++++++++ .../cases/db-create/platform-output-utf8.json | 18 ++++++++ tests/skills/cases/db-create/spaced-path.json | 23 ++++++++++ .../cases/db-dump-cf/missing-infobase.json | 13 ++++++ .../cases/epf-build/extra-args-build.json | 45 +++++++++++++++++++ .../epf-build/extra-args-stub-chain.json | 13 +++--- 9 files changed, 153 insertions(+), 35 deletions(-) delete mode 100644 tests/skills/cases/db-create/extra-args-passthrough-py.json create mode 100644 tests/skills/cases/db-create/platform-output-oem.json create mode 100644 tests/skills/cases/db-create/platform-output-silent.json create mode 100644 tests/skills/cases/db-create/platform-output-utf8.json create mode 100644 tests/skills/cases/db-create/spaced-path.json create mode 100644 tests/skills/cases/db-dump-cf/missing-infobase.json create mode 100644 tests/skills/cases/epf-build/extra-args-build.json diff --git a/tests/skills/cases/db-create/extra-args-passthrough-py.json b/tests/skills/cases/db-create/extra-args-passthrough-py.json deleted file mode 100644 index 34a148bc..00000000 --- a/tests/skills/cases/db-create/extra-args-passthrough-py.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "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 платформы — проверяется строка запуска", - "osOnly": "win32" -} diff --git a/tests/skills/cases/db-create/extra-args-passthrough.json b/tests/skills/cases/db-create/extra-args-passthrough.json index 9e223270..b35ed359 100644 --- a/tests/skills/cases/db-create/extra-args-passthrough.json +++ b/tests/skills/cases/db-create/extra-args-passthrough.json @@ -16,7 +16,6 @@ "-AdditionalV8Arguments", "/UseHwLicenses+" ], - "runtimeOnly": "powershell", "expect": { "stdoutContains": [ "ARGS: CREATEINFOBASE", diff --git a/tests/skills/cases/db-create/platform-output-oem.json b/tests/skills/cases/db-create/platform-output-oem.json new file mode 100644 index 00000000..20a8aec6 --- /dev/null +++ b/tests/skills/cases/db-create/platform-output-oem.json @@ -0,0 +1,26 @@ +{ + "name": "Вывод платформы в cp866 читается (fake platform)", + "osOnly": "win32", + "preRun": [ + { + "writeFile": { + "path": "fake.cmd", + "content": "@echo off\r\nchcp 866 >nul\r\necho Не найдена лицензия\r\nexit /b 1\r\n" + } + } + ], + "args_extra": [ + "-V8Path", + "{workDir}\\fake.cmd", + "-InfoBasePath", + "{workDir}\\ib" + ], + "expect": { + "stdoutContains": [ + "--- Вывод платформы ---", + "Не найдена лицензия" + ] + }, + "expectError": true, + "noSnapshot": "проверяется фолбэк декодирования" +} diff --git a/tests/skills/cases/db-create/platform-output-silent.json b/tests/skills/cases/db-create/platform-output-silent.json new file mode 100644 index 00000000..2c65d1cf --- /dev/null +++ b/tests/skills/cases/db-create/platform-output-silent.json @@ -0,0 +1,23 @@ +{ + "name": "Молчащая платформа не печатает блок вывода (fake platform)", + "osOnly": "win32", + "preRun": [ + { + "writeFile": { + "path": "fake.cmd", + "content": "@echo off\r\nexit /b 1\r\n" + } + } + ], + "args_extra": [ + "-V8Path", + "{workDir}\\fake.cmd", + "-InfoBasePath", + "{workDir}\\ib" + ], + "expect": { + "stdoutNotContains": "--- Вывод платформы ---" + }, + "expectError": true, + "noSnapshot": "проверяется отсутствие блока" +} diff --git a/tests/skills/cases/db-create/platform-output-utf8.json b/tests/skills/cases/db-create/platform-output-utf8.json new file mode 100644 index 00000000..abc2f808 --- /dev/null +++ b/tests/skills/cases/db-create/platform-output-utf8.json @@ -0,0 +1,18 @@ +{ + "name": "Вывод платформы в UTF-8 читается (fake platform)", + "osOnly": "win32", + "preRun": [ + { + "writeFile": { + "path": "fake.cmd", + "content": "@echo off\r\nchcp 65001 >nul\r\necho Не найдена лицензия\r\nexit /b 1\r\n" + } + } + ], + "args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib"], + "expect": { + "stdoutContains": ["--- Вывод платформы ---", "Не найдена лицензия"] + }, + "expectError": true, + "noSnapshot": "проверяется декодирование вывода платформы" +} diff --git a/tests/skills/cases/db-create/spaced-path.json b/tests/skills/cases/db-create/spaced-path.json new file mode 100644 index 00000000..18fcd310 --- /dev/null +++ b/tests/skills/cases/db-create/spaced-path.json @@ -0,0 +1,23 @@ +{ + "name": "Путь с пробелом попадает в командную строку в кавычках (fake platform)", + "osOnly": "win32", + "preRun": [ + { + "writeFile": { + "path": "fake.cmd", + "content": "@echo off\r\necho ARGS: %*\r\nexit /b 1\r\n" + } + } + ], + "args_extra": [ + "-V8Path", + "{workDir}\\fake.cmd", + "-InfoBasePath", + "{workDir}\\с пробелом" + ], + "expect": { + "stdoutContains": "ARGS: CREATEINFOBASE File=\"" + }, + "expectError": true, + "noSnapshot": "проверяется форма токена, файлов на выходе нет" +} diff --git a/tests/skills/cases/db-dump-cf/missing-infobase.json b/tests/skills/cases/db-dump-cf/missing-infobase.json new file mode 100644 index 00000000..9d948d86 --- /dev/null +++ b/tests/skills/cases/db-dump-cf/missing-infobase.json @@ -0,0 +1,13 @@ +{ + "name": "Отказ до запуска: информационная база не найдена", + "args_extra": [ + "-V8Path", + "{workDir}", + "-InfoBasePath", + "{workDir}\\нет-такой-базы", + "-OutputFile", + "{workDir}\\out.cf" + ], + "expectError": true, + "noSnapshot": "негативный кейс: платформа не запускается" +} diff --git a/tests/skills/cases/epf-build/extra-args-build.json b/tests/skills/cases/epf-build/extra-args-build.json new file mode 100644 index 00000000..11b0e07d --- /dev/null +++ b/tests/skills/cases/epf-build/extra-args-build.json @@ -0,0 +1,45 @@ +{ + "name": "Доп. аргументы доходят до самой сборки EPF (fake platform)", + "osOnly": "win32", + "preRun": [ + { + "writeFile": { + "path": "fake.cmd", + "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" + } + }, + { + "writeFile": { + "path": "ib/1Cv8.1CD", + "content": "fake infobase\n" + } + }, + { + "writeFile": { + "path": "src/Обработка.xml", + "content": "\n\n" + } + } + ], + "args_extra": [ + "-V8Path", + "{workDir}\\fake.cmd", + "-InfoBasePath", + "{workDir}\\ib", + "-SourceFile", + "{workDir}\\src\\Обработка.xml", + "-OutputFile", + "{workDir}\\build\\Обработка.epf", + "-AdditionalV8Arguments", + "/UseHwLicenses+" + ], + "expect": { + "stdoutContains": [ + "ARGS: DESIGNER", + "/LoadExternalDataProcessorOrReportFromFiles", + "/DisableStartupDialogs /UseHwLicenses+" + ] + }, + "expectError": true, + "noSnapshot": "база указана явно, stub не создаётся; EPF фейком не собирается — проверяется командная строка" +} diff --git a/tests/skills/cases/epf-build/extra-args-stub-chain.json b/tests/skills/cases/epf-build/extra-args-stub-chain.json index ea24c621..e880be32 100644 --- a/tests/skills/cases/epf-build/extra-args-stub-chain.json +++ b/tests/skills/cases/epf-build/extra-args-stub-chain.json @@ -1,10 +1,11 @@ { - "name": "Доп. аргументы уходят и во временную базу, и в сборку (fake platform)", + "name": "Доп. аргументы доходят до временной базы (fake platform)", + "osOnly": "win32", "preRun": [ { "writeFile": { "path": "fake.cmd", - "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" + "content": "@echo off\r\necho ARGS: %*\r\nexit /b 1\r\n" } }, { @@ -24,16 +25,12 @@ "-AdditionalV8Arguments", "/UseHwLicenses+" ], - "runtimeOnly": "powershell", "expect": { "stdoutContains": [ "ARGS: CREATEINFOBASE", - "/DisableStartupDialogs /UseHwLicenses+", - "ARGS: DESIGNER", - "/LoadExternalDataProcessorOrReportFromFiles" + "/DisableStartupDialogs /UseHwLicenses+" ] }, "expectError": true, - "noSnapshot": "проверяются командные строки в stdout, платформа фейковая — EPF не создаётся", - "osOnly": "win32" + "noSnapshot": "платформа фейковая и падает на первом запуске — проверяется её командная строка" }