mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-02 16:20:54 +03:00
test(runner): фейковая платформа — забота раннера, а не кейса
Кейс описывал механику: сам клал fake.cmd с batch-кодом, прописывал путь к нему
и помечался osOnly win32, потому что .cmd на маке не исполнится. Тот же сценарий
на POSIX требовал второго файла с fake.sh — отсюда двойники, а забытый двойник
означал дыру: у db-repo на маке выполнялся один кейс из двенадцати, и заметили
это случайно.
Теперь кейс объявляет намерение — лог и код возврата в поле fakePlatform, — а
раннер сам кладёт .cmd или .sh под текущую ОС, пишет лог и заглушку базы и
подставляет {fakePlatform} в аргументы. Механизм включается только по объявлению
поля; остальные кейсы не затронуты.
Мигрированы db-repo (11), db-update (4), db-load-xml (4); 19 двойников удалены.
Пропусков на Windows стало 0 вместо 19 — это и были двойники.
Кейсы db-create, db-dump-cf, db-run, epf-build оставлены как есть: часть из них
однопортовая по существу (cp866 в выводе, гейт «ложного успеха» на runtimeOnly),
и каждый требует отдельного решения.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
84e908304e
commit
0704c0ef12
@@ -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": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<MetaDataObject/>"
|
||||
}
|
||||
}
|
||||
],
|
||||
"args_extra": [
|
||||
"-V8Path",
|
||||
"{workDir}/fake.sh",
|
||||
"-InfoBasePath",
|
||||
"{workDir}/ib",
|
||||
"-ConfigDir",
|
||||
"{workDir}/src"
|
||||
],
|
||||
"expect": {
|
||||
"stdoutNotContains": "[warning] platform reported success, but the log contains"
|
||||
},
|
||||
"noSnapshot": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<MetaDataObject/>"
|
||||
}
|
||||
}
|
||||
],
|
||||
"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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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": [
|
||||
|
||||
@@ -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": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<MetaDataObject/>"
|
||||
}
|
||||
}
|
||||
],
|
||||
"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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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": [
|
||||
|
||||
@@ -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": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<MetaDataObject/>"
|
||||
}
|
||||
}
|
||||
],
|
||||
"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
|
||||
}
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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": {
|
||||
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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": "разбор аргументов, платформа не запускается"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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": [
|
||||
|
||||
@@ -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": "навык ничего не пишет в рабочий каталог — проверяется разбор лога платформы"
|
||||
}
|
||||
@@ -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": [
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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": {
|
||||
|
||||
+41
-2
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user