From 72a4777192797884886281edc727a6531ba4e867 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 23 Aug 2026 14:21:09 +0300 Subject: [PATCH] =?UTF-8?q?test(db-repo):=20posix-=D0=B4=D0=B2=D0=BE=D0=B9?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=B8=20=D0=BA=D0=B5=D0=B9=D1=81=D0=BE=D0=B2?= =?UTF-8?q?=20=E2=80=94=20=D0=BD=D0=B0=20=D0=BC=D0=B0=D0=BA=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B3=D0=BE=D0=BD=D1=8F=D0=BB=D1=81=D1=8F=20=D0=BE?= =?UTF-8?q?=D0=B4=D0=B8=D0=BD=20=D0=B8=D0=B7=20=D0=B4=D0=B2=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=D0=B4=D1=86=D0=B0=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Кейсы используют фейковую платформу в виде .cmd и потому помечены osOnly win32. На Mac mini из двенадцати выполнялся один, то есть py-порт там почти не проверялся — ровно та ловушка, о которой предупреждает памятка по стенду. Добавлены двойники на fake.sh для всех кейсов, кроме уже имевшегося. Co-Authored-By: Claude Opus 5 --- .../commit-nothing-to-place-posix.json | 52 +++++++++++++++++++ .../cases/db-repo/error-no-command-posix.json | 34 ++++++++++++ .../db-repo/error-no-repository-posix.json | 38 ++++++++++++++ .../error-root-with-children-posix.json | 43 +++++++++++++++ .../db-repo/error-unbind-ambiguous-posix.json | 36 +++++++++++++ .../db-repo/error-unknown-command-posix.json | 36 +++++++++++++ .../error-whole-config-needs-all-posix.json | 43 +++++++++++++++ ...ock-attribute-resolves-to-owner-posix.json | 51 ++++++++++++++++++ .../lock-long-list-truncated-posix.json | 52 +++++++++++++++++++ .../update-unbound-base-detected-posix.json | 49 +++++++++++++++++ 10 files changed, 434 insertions(+) create mode 100644 tests/skills/cases/db-repo/commit-nothing-to-place-posix.json create mode 100644 tests/skills/cases/db-repo/error-no-command-posix.json create mode 100644 tests/skills/cases/db-repo/error-no-repository-posix.json create mode 100644 tests/skills/cases/db-repo/error-root-with-children-posix.json create mode 100644 tests/skills/cases/db-repo/error-unbind-ambiguous-posix.json create mode 100644 tests/skills/cases/db-repo/error-unknown-command-posix.json create mode 100644 tests/skills/cases/db-repo/error-whole-config-needs-all-posix.json create mode 100644 tests/skills/cases/db-repo/lock-attribute-resolves-to-owner-posix.json create mode 100644 tests/skills/cases/db-repo/lock-long-list-truncated-posix.json create mode 100644 tests/skills/cases/db-repo/update-unbound-base-detected-posix.json 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 new file mode 100644 index 000000000..4ae01fa60 --- /dev/null +++ b/tests/skills/cases/db-repo/commit-nothing-to-place-posix.json @@ -0,0 +1,52 @@ +{ + "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/error-no-command-posix.json b/tests/skills/cases/db-repo/error-no-command-posix.json new file mode 100644 index 000000000..75c21d061 --- /dev/null +++ b/tests/skills/cases/db-repo/error-no-command-posix.json @@ -0,0 +1,34 @@ +{ + "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-repository-posix.json b/tests/skills/cases/db-repo/error-no-repository-posix.json new file mode 100644 index 000000000..35c8a6264 --- /dev/null +++ b/tests/skills/cases/db-repo/error-no-repository-posix.json @@ -0,0 +1,38 @@ +{ + "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-root-with-children-posix.json b/tests/skills/cases/db-repo/error-root-with-children-posix.json new file mode 100644 index 000000000..0c4af41fe --- /dev/null +++ b/tests/skills/cases/db-repo/error-root-with-children-posix.json @@ -0,0 +1,43 @@ +{ + "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-unbind-ambiguous-posix.json b/tests/skills/cases/db-repo/error-unbind-ambiguous-posix.json new file mode 100644 index 000000000..9a489fe2b --- /dev/null +++ b/tests/skills/cases/db-repo/error-unbind-ambiguous-posix.json @@ -0,0 +1,36 @@ +{ + "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-unknown-command-posix.json b/tests/skills/cases/db-repo/error-unknown-command-posix.json new file mode 100644 index 000000000..68e69d371 --- /dev/null +++ b/tests/skills/cases/db-repo/error-unknown-command-posix.json @@ -0,0 +1,36 @@ +{ + "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-whole-config-needs-all-posix.json b/tests/skills/cases/db-repo/error-whole-config-needs-all-posix.json new file mode 100644 index 000000000..c237a853c --- /dev/null +++ b/tests/skills/cases/db-repo/error-whole-config-needs-all-posix.json @@ -0,0 +1,43 @@ +{ + "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/lock-attribute-resolves-to-owner-posix.json b/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner-posix.json new file mode 100644 index 000000000..225a8395a --- /dev/null +++ b/tests/skills/cases/db-repo/lock-attribute-resolves-to-owner-posix.json @@ -0,0 +1,51 @@ +{ + "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-long-list-truncated-posix.json b/tests/skills/cases/db-repo/lock-long-list-truncated-posix.json new file mode 100644 index 000000000..b13079593 --- /dev/null +++ b/tests/skills/cases/db-repo/lock-long-list-truncated-posix.json @@ -0,0 +1,52 @@ +{ + "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/update-unbound-base-detected-posix.json b/tests/skills/cases/db-repo/update-unbound-base-detected-posix.json new file mode 100644 index 000000000..dfea45f43 --- /dev/null +++ b/tests/skills/cases/db-repo/update-unbound-base-detected-posix.json @@ -0,0 +1,49 @@ +{ + "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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы" +}