mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-31 15:30:51 +03:00
test(db-repo): posix-двойники кейсов — на маке прогонялся один из двенадцати
Кейсы используют фейковую платформу в виде .cmd и потому помечены osOnly win32. На Mac mini из двенадцати выполнялся один, то есть py-порт там почти не проверялся — ровно та ловушка, о которой предупреждает памятка по стенду. Добавлены двойники на fake.sh для всех кейсов, кроме уже имевшегося. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b653ca74d9
commit
72a4777192
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
Reference in New Issue
Block a user