diff --git a/tests/skills/cases/db-load-xml/clean-log-no-warning-posix.json b/tests/skills/cases/db-load-xml/clean-log-no-warning-posix.json deleted file mode 100644 index 47fee5ff2..000000000 --- a/tests/skills/cases/db-load-xml/clean-log-no-warning-posix.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "Чистый лог на *nix: предупреждения нет", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nЗагрузка завершена. Суммарное время выполнения операции: 780 миллисекунд.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - }, - { - "writeFile": { - "path": "src/Configuration.xml", - "content": "\n" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-ConfigDir", - "{workDir}/src" - ], - "expect": { - "stdoutNotContains": "[warning] platform reported success, but the log contains" - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-load-xml/clean-log-no-warning.json b/tests/skills/cases/db-load-xml/clean-log-no-warning.json index 1c7e82400..af330b79e 100644 --- a/tests/skills/cases/db-load-xml/clean-log-no-warning.json +++ b/tests/skills/cases/db-load-xml/clean-log-no-warning.json @@ -1,25 +1,9 @@ { "name": "Чистый лог: предупреждения нет (иначе паттерн, ловящий всё подряд, прошёл бы остальные кейсы)", - "osOnly": "win32", + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nЗагрузка завершена. Суммарное время выполнения операции: 780 миллисекунд.\r\n" + }, "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nЗагрузка завершена. Суммарное время выполнения операции: 780 миллисекунд.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - }, { "writeFile": { "path": "src/Configuration.xml", @@ -29,11 +13,11 @@ ], "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-ConfigDir", - "{workDir}\\src" + "{workDir}/src" ], "expect": { "stdoutNotContains": "[warning] platform reported success, but the log contains" diff --git a/tests/skills/cases/db-load-xml/compat-mode-above-platform-posix.json b/tests/skills/cases/db-load-xml/compat-mode-above-platform-posix.json deleted file mode 100644 index 13954735a..000000000 --- a/tests/skills/cases/db-load-xml/compat-mode-above-platform-posix.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "Режим совместимости выше платформы на *nix: классифицируется как отказ (issue #63)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Для работы с конфигурацией необходима версия платформы не меньше, чем 8.3.27.\r\nТекущая версия 8.3.24.1691.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - }, - { - "writeFile": { - "path": "src/Configuration.xml", - "content": "\n" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-ConfigDir", - "{workDir}/src" - ], - "expect": { - "stdoutContains": [ - "[warning] platform reported success, but the log contains 1 problem(s):", - "необходима версия платформы не меньше" - ] - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-load-xml/compat-mode-above-platform.json b/tests/skills/cases/db-load-xml/compat-mode-above-platform.json index 085c7dfbe..8bec2a0cf 100644 --- a/tests/skills/cases/db-load-xml/compat-mode-above-platform.json +++ b/tests/skills/cases/db-load-xml/compat-mode-above-platform.json @@ -1,25 +1,9 @@ { "name": "Режим совместимости выше платформы: сообщение классифицируется как отказ (issue #63)", - "osOnly": "win32", + "fakePlatform": { + "log": "Для работы с конфигурацией необходима версия платформы не меньше, чем 8.3.27.\r\nТекущая версия 8.3.24.1691.\r\n" + }, "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Для работы с конфигурацией необходима версия платформы не меньше, чем 8.3.27.\r\nТекущая версия 8.3.24.1691.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - }, { "writeFile": { "path": "src/Configuration.xml", @@ -29,11 +13,11 @@ ], "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-ConfigDir", - "{workDir}\\src" + "{workDir}/src" ], "expect": { "stdoutContains": [ diff --git a/tests/skills/cases/db-load-xml/silent-rejection-detected-posix.json b/tests/skills/cases/db-load-xml/silent-rejection-detected-posix.json deleted file mode 100644 index a842d2014..000000000 --- a/tests/skills/cases/db-load-xml/silent-rejection-detected-posix.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "Тихий отказ в логе на *nix: py-порт предупреждает (fake platform)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - }, - { - "writeFile": { - "path": "src/Configuration.xml", - "content": "\n" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-ConfigDir", - "{workDir}/src" - ], - "expect": { - "stdoutContains": [ - "[warning] platform reported success, but the log contains 1 problem(s):", - "Свойство LineNumberLength не входит в состав объекта метаданных" - ], - "stdoutNotContains": "-StrictLog" - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-load-xml/silent-rejection-detected.json b/tests/skills/cases/db-load-xml/silent-rejection-detected.json index 15652fca9..ff288f612 100644 --- a/tests/skills/cases/db-load-xml/silent-rejection-detected.json +++ b/tests/skills/cases/db-load-xml/silent-rejection-detected.json @@ -1,25 +1,9 @@ { "name": "Тихий отказ в логе: платформа вернула 0, навык предупреждает (fake platform)", - "osOnly": "win32", + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" + }, "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - }, { "writeFile": { "path": "src/Configuration.xml", @@ -29,11 +13,11 @@ ], "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-ConfigDir", - "{workDir}\\src" + "{workDir}/src" ], "expect": { "stdoutContains": [ diff --git a/tests/skills/cases/db-load-xml/silent-rejection-strict-posix.json b/tests/skills/cases/db-load-xml/silent-rejection-strict-posix.json deleted file mode 100644 index 9be025d5b..000000000 --- a/tests/skills/cases/db-load-xml/silent-rejection-strict-posix.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "Тот же лог под -StrictLog на *nix: код возврата 1 (fake platform)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - }, - { - "writeFile": { - "path": "src/Configuration.xml", - "content": "\n" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-ConfigDir", - "{workDir}/src", - "-StrictLog" - ], - "expect": { - "stdoutContains": "[warning] platform reported success, but the log contains 1 problem(s):" - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы", - "expectError": true -} diff --git a/tests/skills/cases/db-load-xml/silent-rejection-strict.json b/tests/skills/cases/db-load-xml/silent-rejection-strict.json index ea70396b4..1107c46f2 100644 --- a/tests/skills/cases/db-load-xml/silent-rejection-strict.json +++ b/tests/skills/cases/db-load-xml/silent-rejection-strict.json @@ -1,25 +1,9 @@ { "name": "Тот же лог под -StrictLog: код возврата поднимается до 1 (fake platform)", - "osOnly": "win32", + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" + }, "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - }, { "writeFile": { "path": "src/Configuration.xml", @@ -29,11 +13,11 @@ ], "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-ConfigDir", - "{workDir}\\src", + "{workDir}/src", "-StrictLog" ], "expect": { diff --git a/tests/skills/cases/db-repo/commit-nothing-to-place-posix.json b/tests/skills/cases/db-repo/commit-nothing-to-place-posix.json deleted file mode 100644 index 4ae01fa60..000000000 --- a/tests/skills/cases/db-repo/commit-nothing-to-place-posix.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "Помещение без изменений: код 0, но версия не создана — и это сказано (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект не был изменен: Справочник.Номенклатура\r\n---- Операция с хранилищем конфигурации завершена ----\r\nПомещение изменений объектов в хранилище успешно завершено\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-RepositoryPath", - "{workDir}/repo", - "-RepositoryUser", - "Admin", - "-Command", - "commit", - "-Objects", - "Справочник.Номенклатура", - "-Comment", - "x" - ], - "expect": { - "stdoutContains": [ - "Без изменений — не помещались (1):", - "Новая версия в хранилище НЕ создана" - ] - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-repo/commit-nothing-to-place.json b/tests/skills/cases/db-repo/commit-nothing-to-place.json index ab6915e8a..7a1c00cb2 100644 --- a/tests/skills/cases/db-repo/commit-nothing-to-place.json +++ b/tests/skills/cases/db-repo/commit-nothing-to-place.json @@ -1,33 +1,15 @@ { "name": "Помещение без изменений: код 0, но версия не создана — и это сказано", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект не был изменен: Справочник.Номенклатура\r\n---- Операция с хранилищем конфигурации завершена ----\r\nПомещение изменений объектов в хранилище успешно завершено\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект не был изменен: Справочник.Номенклатура\r\n---- Операция с хранилищем конфигурации завершена ----\r\nПомещение изменений объектов в хранилище успешно завершено\r\n" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-RepositoryPath", - "{workDir}\\repo", + "{workDir}/repo", "-RepositoryUser", "Admin", "-Command", diff --git a/tests/skills/cases/db-repo/error-no-command-posix.json b/tests/skills/cases/db-repo/error-no-command-posix.json deleted file mode 100644 index 75c21d061..000000000 --- a/tests/skills/cases/db-repo/error-no-command-posix.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "Ошибка: подкоманда не указана (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib" - ], - "expectError": true, - "expect": { - "stdoutContains": "-Command is required" - }, - "noSnapshot": "разбор аргументов, платформа не запускается" -} diff --git a/tests/skills/cases/db-repo/error-no-command.json b/tests/skills/cases/db-repo/error-no-command.json index 7b84447d9..757efcf20 100644 --- a/tests/skills/cases/db-repo/error-no-command.json +++ b/tests/skills/cases/db-repo/error-no-command.json @@ -1,25 +1,13 @@ { "name": "Ошибка: подкоманда не указана", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib" + "{workDir}/ib" ], "expectError": true, "expect": { diff --git a/tests/skills/cases/db-repo/error-no-repository-posix.json b/tests/skills/cases/db-repo/error-no-repository-posix.json deleted file mode 100644 index 35c8a6264..000000000 --- a/tests/skills/cases/db-repo/error-no-repository-posix.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "Ошибка: хранилище не объявлено в реестре и не задано явно (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-Command", - "lock", - "-Objects", - "Справочник.Номенклатура" - ], - "expectError": true, - "expect": { - "stdoutContains": "repository path is unknown" - }, - "noSnapshot": "разбор аргументов, платформа не запускается" -} diff --git a/tests/skills/cases/db-repo/error-no-repository.json b/tests/skills/cases/db-repo/error-no-repository.json index 38c9f44f5..214330dc0 100644 --- a/tests/skills/cases/db-repo/error-no-repository.json +++ b/tests/skills/cases/db-repo/error-no-repository.json @@ -1,25 +1,13 @@ { "name": "Ошибка: хранилище не объявлено в реестре и не задано явно", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-Command", "lock", "-Objects", diff --git a/tests/skills/cases/db-repo/error-root-with-children-posix.json b/tests/skills/cases/db-repo/error-root-with-children-posix.json deleted file mode 100644 index 0c4af41fe..000000000 --- a/tests/skills/cases/db-repo/error-root-with-children-posix.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "Ошибка: корень конфигурации с -WithChildren — это вся конфигурация (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-RepositoryPath", - "{workDir}/repo", - "-RepositoryUser", - "Admin", - "-Command", - "lock", - "-Objects", - "Конфигурация", - "-WithChildren" - ], - "expectError": true, - "expect": { - "stdoutContains": "means the WHOLE configuration" - }, - "noSnapshot": "разбор аргументов, платформа не запускается" -} diff --git a/tests/skills/cases/db-repo/error-root-with-children.json b/tests/skills/cases/db-repo/error-root-with-children.json index d712bbf79..c630fa12b 100644 --- a/tests/skills/cases/db-repo/error-root-with-children.json +++ b/tests/skills/cases/db-repo/error-root-with-children.json @@ -1,27 +1,15 @@ { "name": "Ошибка: корень конфигурации с -WithChildren — это вся конфигурация", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-RepositoryPath", - "{workDir}\\repo", + "{workDir}/repo", "-RepositoryUser", "Admin", "-Command", diff --git a/tests/skills/cases/db-repo/error-unbind-ambiguous-posix.json b/tests/skills/cases/db-repo/error-unbind-ambiguous-posix.json deleted file mode 100644 index 9a489fe2b..000000000 --- a/tests/skills/cases/db-repo/error-unbind-ambiguous-posix.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "Ошибка: unbind неоднозначен — unlock или disconnect (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-Command", - "unbind" - ], - "expectError": true, - "expect": { - "stdoutContains": "'unbind' is ambiguous" - }, - "noSnapshot": "разбор аргументов, платформа не запускается" -} diff --git a/tests/skills/cases/db-repo/error-unbind-ambiguous.json b/tests/skills/cases/db-repo/error-unbind-ambiguous.json index f7e760f59..a2675dbcc 100644 --- a/tests/skills/cases/db-repo/error-unbind-ambiguous.json +++ b/tests/skills/cases/db-repo/error-unbind-ambiguous.json @@ -1,25 +1,13 @@ { "name": "Ошибка: unbind неоднозначен — unlock или disconnect", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-Command", "unbind" ], diff --git a/tests/skills/cases/db-repo/error-unknown-command-posix.json b/tests/skills/cases/db-repo/error-unknown-command-posix.json deleted file mode 100644 index 68e69d371..000000000 --- a/tests/skills/cases/db-repo/error-unknown-command-posix.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "Ошибка: неизвестная подкоманда (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-Command", - "bogus" - ], - "expectError": true, - "expect": { - "stdoutContains": "unknown command 'bogus'" - }, - "noSnapshot": "разбор аргументов, платформа не запускается" -} diff --git a/tests/skills/cases/db-repo/error-unknown-command.json b/tests/skills/cases/db-repo/error-unknown-command.json index 992dab0e9..4df5a51ec 100644 --- a/tests/skills/cases/db-repo/error-unknown-command.json +++ b/tests/skills/cases/db-repo/error-unknown-command.json @@ -1,25 +1,13 @@ { "name": "Ошибка: неизвестная подкоманда", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-Command", "bogus" ], diff --git a/tests/skills/cases/db-repo/error-whole-config-needs-all-posix.json b/tests/skills/cases/db-repo/error-whole-config-needs-all-posix.json deleted file mode 100644 index c237a853c..000000000 --- a/tests/skills/cases/db-repo/error-whole-config-needs-all-posix.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "Ошибка: lock без -Objects затронул бы всю конфигурацию (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-RepositoryPath", - "{workDir}/repo", - "-RepositoryUser", - "Admin", - "-Command", - "lock" - ], - "expectError": true, - "expect": { - "stdoutContains": [ - "would affect the WHOLE configuration", - "подтвердите явно: -All" - ] - }, - "noSnapshot": "разбор аргументов, платформа не запускается" -} diff --git a/tests/skills/cases/db-repo/error-whole-config-needs-all.json b/tests/skills/cases/db-repo/error-whole-config-needs-all.json index 79fc45d91..7c0188a33 100644 --- a/tests/skills/cases/db-repo/error-whole-config-needs-all.json +++ b/tests/skills/cases/db-repo/error-whole-config-needs-all.json @@ -1,27 +1,15 @@ { "name": "Ошибка: lock без -Objects затронул бы всю конфигурацию", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-RepositoryPath", - "{workDir}\\repo", + "{workDir}/repo", "-RepositoryUser", "Admin", "-Command", diff --git a/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner-posix.json b/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner-posix.json deleted file mode 100644 index 225a8395a..000000000 --- a/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner-posix.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "Реквизит не объект хранилища: подставляется владелец, подмена проговаривается (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Контрагенты\r\n---- Операция с хранилищем конфигурации завершена ----\r\nЗахват объектов в хранилище успешно завершен\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-RepositoryPath", - "{workDir}/repo", - "-RepositoryUser", - "Admin", - "-Command", - "lock", - "-Objects", - "Справочник.Контрагенты.Реквизит.Телефон,Справочник.Контрагенты.ТабличнаяЧасть.Контакты" - ], - "expect": { - "stdoutContains": [ - "части объекта отдельно не захватываются", - "Справочник.Контрагенты.Реквизит.Телефон -> Справочник.Контрагенты", - "Захвачено (1):" - ] - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner.json b/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner.json index 899652c8c..ab8728fd0 100644 --- a/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner.json +++ b/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner.json @@ -1,33 +1,15 @@ { "name": "Реквизит не объект хранилища: подставляется владелец, подмена проговаривается", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Контрагенты\r\n---- Операция с хранилищем конфигурации завершена ----\r\nЗахват объектов в хранилище успешно завершен\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Контрагенты\r\n---- Операция с хранилищем конфигурации завершена ----\r\nЗахват объектов в хранилище успешно завершен\r\n" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-RepositoryPath", - "{workDir}\\repo", + "{workDir}/repo", "-RepositoryUser", "Admin", "-Command", diff --git a/tests/skills/cases/db-repo/lock-long-list-truncated-posix.json b/tests/skills/cases/db-repo/lock-long-list-truncated-posix.json deleted file mode 100644 index b13079593..000000000 --- a/tests/skills/cases/db-repo/lock-long-list-truncated-posix.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "Длинный список объектов обрезается, полный уходит в файл (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Объект01\r\nОбъект захвачен для редактирования: Справочник.Объект02\r\nОбъект захвачен для редактирования: Справочник.Объект03\r\nОбъект захвачен для редактирования: Справочник.Объект04\r\nОбъект захвачен для редактирования: Справочник.Объект05\r\nОбъект захвачен для редактирования: Справочник.Объект06\r\nОбъект захвачен для редактирования: Справочник.Объект07\r\nОбъект захвачен для редактирования: Справочник.Объект08\r\nОбъект захвачен для редактирования: Справочник.Объект09\r\nОбъект захвачен для редактирования: Справочник.Объект10\r\nОбъект захвачен для редактирования: Справочник.Объект11\r\nОбъект захвачен для редактирования: Справочник.Объект12\r\nОбъект захвачен для редактирования: Справочник.Объект13\r\nОбъект захвачен для редактирования: Справочник.Объект14\r\nОбъект захвачен для редактирования: Справочник.Объект15\r\nОбъект захвачен для редактирования: Справочник.Объект16\r\nОбъект захвачен для редактирования: Справочник.Объект17\r\nОбъект захвачен для редактирования: Справочник.Объект18\r\nОбъект захвачен для редактирования: Справочник.Объект19\r\nОбъект захвачен для редактирования: Справочник.Объект20\r\nОбъект захвачен для редактирования: Справочник.Объект21\r\nОбъект захвачен для редактирования: Справочник.Объект22\r\nОбъект захвачен для редактирования: Справочник.Объект23\r\nОбъект захвачен для редактирования: Справочник.Объект24\r\nОбъект захвачен для редактирования: Справочник.Объект25\r\nОбъект захвачен для редактирования: Справочник.Объект26\r\nОбъект захвачен для редактирования: Справочник.Объект27\r\nОбъект захвачен для редактирования: Справочник.Объект28\r\nОбъект захвачен для редактирования: Справочник.Объект29\r\nОбъект захвачен для редактирования: Справочник.Объект30\r\n---- Операция с хранилищем конфигурации завершена ----\r\nЗахват объектов в хранилище успешно завершен\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-RepositoryPath", - "{workDir}/repo", - "-RepositoryUser", - "Admin", - "-Command", - "lock", - "-All" - ], - "expect": { - "stdoutContains": [ - "Захвачено (30):", - "Справочник.Объект20", - "… и ещё 10", - "db-repo-locked.txt" - ], - "stdoutNotContains": "Справочник.Объект21" - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-repo/lock-long-list-truncated.json b/tests/skills/cases/db-repo/lock-long-list-truncated.json index ec99fa827..090402918 100644 --- a/tests/skills/cases/db-repo/lock-long-list-truncated.json +++ b/tests/skills/cases/db-repo/lock-long-list-truncated.json @@ -1,33 +1,15 @@ { "name": "Длинный список объектов обрезается, полный уходит в файл", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Объект01\r\nОбъект захвачен для редактирования: Справочник.Объект02\r\nОбъект захвачен для редактирования: Справочник.Объект03\r\nОбъект захвачен для редактирования: Справочник.Объект04\r\nОбъект захвачен для редактирования: Справочник.Объект05\r\nОбъект захвачен для редактирования: Справочник.Объект06\r\nОбъект захвачен для редактирования: Справочник.Объект07\r\nОбъект захвачен для редактирования: Справочник.Объект08\r\nОбъект захвачен для редактирования: Справочник.Объект09\r\nОбъект захвачен для редактирования: Справочник.Объект10\r\nОбъект захвачен для редактирования: Справочник.Объект11\r\nОбъект захвачен для редактирования: Справочник.Объект12\r\nОбъект захвачен для редактирования: Справочник.Объект13\r\nОбъект захвачен для редактирования: Справочник.Объект14\r\nОбъект захвачен для редактирования: Справочник.Объект15\r\nОбъект захвачен для редактирования: Справочник.Объект16\r\nОбъект захвачен для редактирования: Справочник.Объект17\r\nОбъект захвачен для редактирования: Справочник.Объект18\r\nОбъект захвачен для редактирования: Справочник.Объект19\r\nОбъект захвачен для редактирования: Справочник.Объект20\r\nОбъект захвачен для редактирования: Справочник.Объект21\r\nОбъект захвачен для редактирования: Справочник.Объект22\r\nОбъект захвачен для редактирования: Справочник.Объект23\r\nОбъект захвачен для редактирования: Справочник.Объект24\r\nОбъект захвачен для редактирования: Справочник.Объект25\r\nОбъект захвачен для редактирования: Справочник.Объект26\r\nОбъект захвачен для редактирования: Справочник.Объект27\r\nОбъект захвачен для редактирования: Справочник.Объект28\r\nОбъект захвачен для редактирования: Справочник.Объект29\r\nОбъект захвачен для редактирования: Справочник.Объект30\r\n---- Операция с хранилищем конфигурации завершена ----\r\nЗахват объектов в хранилище успешно завершен\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Объект01\r\nОбъект захвачен для редактирования: Справочник.Объект02\r\nОбъект захвачен для редактирования: Справочник.Объект03\r\nОбъект захвачен для редактирования: Справочник.Объект04\r\nОбъект захвачен для редактирования: Справочник.Объект05\r\nОбъект захвачен для редактирования: Справочник.Объект06\r\nОбъект захвачен для редактирования: Справочник.Объект07\r\nОбъект захвачен для редактирования: Справочник.Объект08\r\nОбъект захвачен для редактирования: Справочник.Объект09\r\nОбъект захвачен для редактирования: Справочник.Объект10\r\nОбъект захвачен для редактирования: Справочник.Объект11\r\nОбъект захвачен для редактирования: Справочник.Объект12\r\nОбъект захвачен для редактирования: Справочник.Объект13\r\nОбъект захвачен для редактирования: Справочник.Объект14\r\nОбъект захвачен для редактирования: Справочник.Объект15\r\nОбъект захвачен для редактирования: Справочник.Объект16\r\nОбъект захвачен для редактирования: Справочник.Объект17\r\nОбъект захвачен для редактирования: Справочник.Объект18\r\nОбъект захвачен для редактирования: Справочник.Объект19\r\nОбъект захвачен для редактирования: Справочник.Объект20\r\nОбъект захвачен для редактирования: Справочник.Объект21\r\nОбъект захвачен для редактирования: Справочник.Объект22\r\nОбъект захвачен для редактирования: Справочник.Объект23\r\nОбъект захвачен для редактирования: Справочник.Объект24\r\nОбъект захвачен для редактирования: Справочник.Объект25\r\nОбъект захвачен для редактирования: Справочник.Объект26\r\nОбъект захвачен для редактирования: Справочник.Объект27\r\nОбъект захвачен для редактирования: Справочник.Объект28\r\nОбъект захвачен для редактирования: Справочник.Объект29\r\nОбъект захвачен для редактирования: Справочник.Объект30\r\n---- Операция с хранилищем конфигурации завершена ----\r\nЗахват объектов в хранилище успешно завершен\r\n" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-RepositoryPath", - "{workDir}\\repo", + "{workDir}/repo", "-RepositoryUser", "Admin", "-Command", diff --git a/tests/skills/cases/db-repo/lock-partial-is-success-posix.json b/tests/skills/cases/db-repo/lock-partial-is-success-posix.json deleted file mode 100644 index b567e5b65..000000000 --- a/tests/skills/cases/db-repo/lock-partial-is-success-posix.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "Частичный захват на *nix: py-порт даёт тот же вердикт", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 1\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Номенклатура\r\nОбъект захвачен для редактирования другим пользователем: Справочник.Номенклатура.Форма.ФормаЭлемента (Ivanov) \r\n---- Операция с хранилищем конфигурации завершена ----\r\nОшибка захвата объектов в хранилище\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-RepositoryPath", - "{workDir}/repo", - "-RepositoryUser", - "Admin", - "-Command", - "lock", - "-Objects", - "Справочник.Номенклатура", - "-WithChildren" - ], - "expect": { - "stdoutContains": [ - "Захвачено (1):", - "держит Ivanov", - "захват выполнен частично" - ] - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-repo/lock-partial-is-success.json b/tests/skills/cases/db-repo/lock-partial-is-success.json index 6316c22fa..f0f9fbd4d 100644 --- a/tests/skills/cases/db-repo/lock-partial-is-success.json +++ b/tests/skills/cases/db-repo/lock-partial-is-success.json @@ -1,33 +1,16 @@ { "name": "Частичный захват: платформа вернула 1, навык — 0 с поимённым предупреждением", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 1\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Номенклатура\r\nОбъект захвачен для редактирования другим пользователем: Справочник.Номенклатура.Форма.ФормаЭлемента (Ivanov) \r\n---- Операция с хранилищем конфигурации завершена ----\r\nОшибка захвата объектов в хранилище\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "---- Начало операции с хранилищем конфигурации ----\r\nОбъект захвачен для редактирования: Справочник.Номенклатура\r\nОбъект захвачен для редактирования другим пользователем: Справочник.Номенклатура.Форма.ФормаЭлемента (Ivanov) \r\n---- Операция с хранилищем конфигурации завершена ----\r\nОшибка захвата объектов в хранилище\r\n", + "exit": 1 + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-RepositoryPath", - "{workDir}\\repo", + "{workDir}/repo", "-RepositoryUser", "Admin", "-Command", diff --git a/tests/skills/cases/db-repo/update-unbound-base-detected-posix.json b/tests/skills/cases/db-repo/update-unbound-base-detected-posix.json deleted file mode 100644 index dfea45f43..000000000 --- a/tests/skills/cases/db-repo/update-unbound-base-detected-posix.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "update: платформа отчиталась об успехе без блока операции — база не подключена (*nix)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Обновление конфигурации из хранилища успешно завершено\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-RepositoryPath", - "{workDir}/repo", - "-RepositoryUser", - "Admin", - "-Command", - "update" - ], - "expectError": true, - "expect": { - "stdoutContains": [ - "printed no repository operation block", - "НЕ подключена к хранилищу" - ] - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-repo/update-unbound-base-detected.json b/tests/skills/cases/db-repo/update-unbound-base-detected.json index 52b2125c4..659526e90 100644 --- a/tests/skills/cases/db-repo/update-unbound-base-detected.json +++ b/tests/skills/cases/db-repo/update-unbound-base-detected.json @@ -1,33 +1,15 @@ { "name": "update: платформа отчиталась об успехе без блока операции — база не подключена", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Обновление конфигурации из хранилища успешно завершено\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "Обновление конфигурации из хранилища успешно завершено\r\n" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-RepositoryPath", - "{workDir}\\repo", + "{workDir}/repo", "-RepositoryUser", "Admin", "-Command", diff --git a/tests/skills/cases/db-update/clean-log-no-warning-posix.json b/tests/skills/cases/db-update/clean-log-no-warning-posix.json deleted file mode 100644 index 8bb8abafb..000000000 --- a/tests/skills/cases/db-update/clean-log-no-warning-posix.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "Чистый лог на *nix: предупреждения нет", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nЗагрузка завершена. Суммарное время выполнения операции: 780 миллисекунд.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib" - ], - "expect": { - "stdoutNotContains": "[warning] platform reported success, but the log contains" - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-update/clean-log-no-warning.json b/tests/skills/cases/db-update/clean-log-no-warning.json index 7bc600f13..afe53bb66 100644 --- a/tests/skills/cases/db-update/clean-log-no-warning.json +++ b/tests/skills/cases/db-update/clean-log-no-warning.json @@ -1,31 +1,13 @@ { "name": "Чистый лог: предупреждения нет (иначе паттерн, ловящий всё подряд, прошёл бы остальные кейсы)", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nЗагрузка завершена. Суммарное время выполнения операции: 780 миллисекунд.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nЗагрузка завершена. Суммарное время выполнения операции: 780 миллисекунд.\r\n" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib" + "{workDir}/ib" ], "expect": { "stdoutNotContains": "[warning] platform reported success, but the log contains" diff --git a/tests/skills/cases/db-update/compat-mode-above-platform-posix.json b/tests/skills/cases/db-update/compat-mode-above-platform-posix.json deleted file mode 100644 index d492c98b6..000000000 --- a/tests/skills/cases/db-update/compat-mode-above-platform-posix.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "Режим совместимости выше платформы на *nix: классифицируется как отказ (issue #63)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Для работы с конфигурацией необходима версия платформы не меньше, чем 8.3.27.\r\nТекущая версия 8.3.24.1691.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib" - ], - "expect": { - "stdoutContains": [ - "[warning] platform reported success, but the log contains 1 problem(s):", - "необходима версия платформы не меньше" - ] - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-update/compat-mode-above-platform.json b/tests/skills/cases/db-update/compat-mode-above-platform.json index 49fc75713..faa80cf01 100644 --- a/tests/skills/cases/db-update/compat-mode-above-platform.json +++ b/tests/skills/cases/db-update/compat-mode-above-platform.json @@ -1,31 +1,13 @@ { "name": "Режим совместимости выше платформы: сообщение классифицируется как отказ (issue #63)", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Для работы с конфигурацией необходима версия платформы не меньше, чем 8.3.27.\r\nТекущая версия 8.3.24.1691.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "Для работы с конфигурацией необходима версия платформы не меньше, чем 8.3.27.\r\nТекущая версия 8.3.24.1691.\r\n" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib" + "{workDir}/ib" ], "expect": { "stdoutContains": [ diff --git a/tests/skills/cases/db-update/silent-rejection-detected-posix.json b/tests/skills/cases/db-update/silent-rejection-detected-posix.json deleted file mode 100644 index 6b3b90740..000000000 --- a/tests/skills/cases/db-update/silent-rejection-detected-posix.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "Тихий отказ в логе на *nix: py-порт предупреждает (fake platform)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib" - ], - "expect": { - "stdoutContains": [ - "[warning] platform reported success, but the log contains 1 problem(s):", - "Свойство LineNumberLength не входит в состав объекта метаданных" - ], - "stdoutNotContains": "-StrictLog" - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" -} diff --git a/tests/skills/cases/db-update/silent-rejection-detected.json b/tests/skills/cases/db-update/silent-rejection-detected.json index 0e60b47a6..97ce20b2b 100644 --- a/tests/skills/cases/db-update/silent-rejection-detected.json +++ b/tests/skills/cases/db-update/silent-rejection-detected.json @@ -1,31 +1,13 @@ { "name": "Тихий отказ в логе: платформа вернула 0, навык предупреждает (fake platform)", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib" + "{workDir}/ib" ], "expect": { "stdoutContains": [ diff --git a/tests/skills/cases/db-update/silent-rejection-strict-posix.json b/tests/skills/cases/db-update/silent-rejection-strict-posix.json deleted file mode 100644 index 89bf95c20..000000000 --- a/tests/skills/cases/db-update/silent-rejection-strict-posix.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "Тот же лог под -StrictLog на *nix: код возврата 1 (fake platform)", - "osOnly": [ - "darwin", - "linux" - ], - "runtimeOnly": "python", - "preRun": [ - { - "writeFile": { - "path": "fake.sh", - "content": "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n", - "executable": true - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], - "args_extra": [ - "-V8Path", - "{workDir}/fake.sh", - "-InfoBasePath", - "{workDir}/ib", - "-StrictLog" - ], - "expect": { - "stdoutContains": "[warning] platform reported success, but the log contains 1 problem(s):" - }, - "noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы", - "expectError": true -} diff --git a/tests/skills/cases/db-update/silent-rejection-strict.json b/tests/skills/cases/db-update/silent-rejection-strict.json index 2d04c0eca..2ed039a86 100644 --- a/tests/skills/cases/db-update/silent-rejection-strict.json +++ b/tests/skills/cases/db-update/silent-rejection-strict.json @@ -1,31 +1,13 @@ { "name": "Тот же лог под -StrictLog: код возврата поднимается до 1 (fake platform)", - "osOnly": "win32", - "preRun": [ - { - "writeFile": { - "path": "fake.cmd", - "content": "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n" - } - }, - { - "writeFile": { - "path": "log.txt", - "content": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" - } - }, - { - "writeFile": { - "path": "ib/1Cv8.1CD", - "content": "stub" - } - } - ], + "fakePlatform": { + "log": "Загрузка конфигурации из файлов.\r\nНеверное свойство объекта метаданных. Свойство LineNumberLength не входит в состав объекта метаданных TabularSection. - LineNumberLength\r\nЗагрузка завершена.\r\n" + }, "args_extra": [ "-V8Path", - "{workDir}\\fake.cmd", + "{fakePlatform}", "-InfoBasePath", - "{workDir}\\ib", + "{workDir}/ib", "-StrictLog" ], "expect": { diff --git a/tests/skills/runner.mjs b/tests/skills/runner.mjs index bc47b88db..07d466e8c 100644 --- a/tests/skills/runner.mjs +++ b/tests/skills/runner.mjs @@ -355,14 +355,48 @@ function buildArgs(skillConfig, caseData, workDir, inputFilePath, runtime) { } // Append extra args from case (for optional params like -Vendor, -Version). - // Supports {workDir} substitution for tests that need absolute paths inside the workspace. + // Supports {workDir} substitution for tests that need absolute paths inside the workspace, + // and {fakePlatform} — путь к фейковой платформе, которую раскладывает writeFakePlatform. if (caseData.args_extra) { - args.push(...caseData.args_extra.map(a => typeof a === 'string' ? a.replace('{workDir}', workDir) : a)); + const fakePath = join(workDir, process.platform === 'win32' ? 'fake.cmd' : 'fake.sh'); + args.push(...caseData.args_extra.map(a => typeof a === 'string' + ? a.replace('{workDir}', workDir).replace('{fakePlatform}', fakePath) + : a)); } return { scriptPath, args }; } + +// ─── Фейковая платформа ───────────────────────────────────────────────────── +// Кейс объявляет ЛОГ и код возврата, а не механику запуска. Раннер сам кладёт .cmd или .sh +// под текущую ОС, поэтому один кейс проверяется на обеих. Раньше каждый такой сценарий +// приходилось дублировать -posix двойником, и забытый двойник означал дыру: у db-repo на +// маке выполнялся 1 кейс из 12, и заметили это случайно. +const FAKE_PLATFORM_CMD = "@echo off\r\nrem SELF запоминаем ДО цикла: shift сдвигает и %0, после него %~dp0 указывает не на скрипт\r\nset SELF=%~dp0\r\n:loop\r\nif \"%~1\"==\"\" goto done\r\nif /i \"%~1\"==\"/Out\" set OUT=%~2\r\nshift\r\ngoto loop\r\n:done\r\ncopy /y \"%SELF%log.txt\" \"%OUT%\" >nul\r\nexit /b 0\r\n"; +const FAKE_PLATFORM_SH = "#!/bin/sh\n# Фейк платформы для *nix: вычитывает путь из /Out и кладёт туда готовый лог.\n# Значение /Out несёт кавычки ВНУТРИ токена (соглашение 1С, см. run_v8) — в batch их\n# снимает %~2, в sh их надо снять руками, иначе cp целится в имя с кавычками.\nSELF=$(dirname \"$0\")\nOUT=\"\"\nwhile [ $# -gt 0 ]; do\n if [ \"$1\" = \"/Out\" ]; then\n OUT=\"$2\"\n OUT=\"${OUT#\\\"}\"\n OUT=\"${OUT%\\\"}\"\n fi\n shift\ndone\ncp \"$SELF/log.txt\" \"$OUT\"\nexit 0\n"; + +function writeFakePlatform(workDir, spec) { + const isWin = process.platform === 'win32'; + const code = Number.isInteger(spec.exit) ? spec.exit : 0; + const body = isWin + ? FAKE_PLATFORM_CMD.replace('exit /b 0', `exit /b ${code}`) + : FAKE_PLATFORM_SH.replace('exit 0', `exit ${code}`); + const exe = join(workDir, isWin ? 'fake.cmd' : 'fake.sh'); + writeFileSync(exe, body, 'utf8'); + // Бит исполнения: на *nix навык запускает платформу через exec, без +x фейк не стартует. + if (!isWin) chmodSync(exe, 0o755); + // Лог пишется как есть — вместе с BOM и CRLF, если кейс их объявил: /Out платформы + // выглядит именно так, и разбор должен проверяться на настоящей форме. + writeFileSync(join(workDir, 'log.txt'), spec.log ?? '', 'utf8'); + // Заглушка базы: навыки отказываются работать, не найдя 1Cv8.1CD, и это правильно. + if (spec.baseStub !== false) { + const ib = join(workDir, 'ib'); + mkdirSync(ib, { recursive: true }); + writeFileSync(join(ib, '1Cv8.1CD'), 'stub', 'utf8'); + } +} + // ─── Snapshot normalization ───────────────────────────────────────────────── const UUID_RE = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi; @@ -785,6 +819,11 @@ async function runCaseAsync(testCase, opts) { } } + // Фейковая платформа раскладывается ДО preRun: шаги preRun могут на неё опираться. + if (caseData.fakePlatform) { + writeFakePlatform(workDir, caseData.fakePlatform); + } + // Pre-run steps if (caseData.preRun) { for (const step of caseData.preRun) {