diff --git a/packagedef b/packagedef
index f4e59c54..41e45578 100644
--- a/packagedef
+++ b/packagedef
@@ -126,7 +126,7 @@
.ЗависитОт("cmdline", "1.0.0")
.ЗависитОт("fluent", "0.6.1")
.ЗависитОт("fs", "1.2.0")
- .ЗависитОт("ibcmdrunner", "0.2.5")
+ .ЗависитОт("ibcmdrunner", "0.3.0")
.ЗависитОт("json", "1.1.1")
.ЗависитОт("logos", "1.7.0")
.ЗависитОт("ParserFileV8i", "0.0.5")
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217.os"
index bf23e46f..9a1654d7 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\222\320\240\320\265\320\266\320\270\320\274\320\265\320\237\321\200\320\265\320\264\320\277\321\200\320\270\321\217\321\202\320\270\321\217.os"
@@ -1,6 +1,7 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
//
-// Выполнение команды/действия в 1С:Предприятие в режиме тонкого/толстого клиента с передачей запускаемых обработок и параметров
+// Выполнение команды/действия в 1С:Предприятие в режиме тонкого/толстого клиента с передачей
+// запускаемых обработок и параметров
//
// TODO добавить фичи для проверки команды
//
@@ -11,13 +12,16 @@
//
///////////////////////////////////////////////////////////////////////////////////////////////////
-#Использовать logos
-#Использовать v8runner
+#Использовать fs
-Перем Лог;
+#Область ОписаниеПеременных
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Прикладной интерфейс
+Перем Лог; // Экземпляер логгера
+Перем ПутьОбработкиДляЗапуска; // Путь внешней обработки 1С для запуска в предприятии
+
+#КонецОбласти
+
+#Область ОбработчикиСобытий
// Регистрация команды и ее аргументов/ключей
//
@@ -55,6 +59,9 @@
| Значение ""2"" означает выполнение запуска с предупреждением.
| Любое другое значение эквивалентно отсутствию файла.");
+ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv",
+ "Запуск команды с использованием утилиты ibsrv");
+
Парсер.ДобавитьКоманду(ОписаниеКоманды);
КонецПроцедуры // ЗарегистрироватьКоманду
@@ -65,24 +72,37 @@
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно)
//
+// Возвращаемое значение:
+// Число - Код возврата команды
+//
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт
- Лог = ДополнительныеПараметры.Лог;
+ Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры);
+
+ ПутьОбработкиДляЗапуска = ПутьОбработкиДляЗапуска(ПараметрыКоманды["--execute"]);
+
+ ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера();
+
+ Действие = Новый Действие(ЭтотОбъект, "ЗапуститьВРежимеПредприятия");
+ Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера);
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Функция ЗапуститьВРежимеПредприятия(ПараметрыКоманды) Экспорт
// TODO отрефакторить получение ЗапускатьТолстыйКлиент
ЗапускатьТолстыйКлиент = ОбщиеМетоды.УказанПараметрТолстыйКлиент(ПараметрыКоманды["--ordinaryapp"], Лог);
ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];
МенеджерКонфигуратора = Новый МенеджерКонфигуратора;
-
- ПутьОбработки1С = ПараметрыКоманды["--execute"];
- ПутьОбработки1С = Заменить_runnerRoot_на_КаталогVanessaRunner(ПутьОбработки1С);
- ПутьОбработки1С = ОбщиеМетоды.ПолныйПуть(ПутьОбработки1С);
+ МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды);
ОжидатьЗавершения = Не ПараметрыКоманды["--no-wait"];
- МенеджерКонфигуратора.Конструктор(ДанныеПодключения, ПараметрыКоманды);
-
ПутьКФайлуСтатусаВыполнения = ПараметрыКоманды["--exitCodePath"];
КомандаЗапуска = КомандаЗапуска(ПараметрыКоманды["--command"], ПутьКФайлуСтатусаВыполнения);
ПутьЛогаВыполнения = ПараметрыКоманды["--online-file"];
@@ -102,7 +122,7 @@
Попытка
МенеджерКонфигуратора.ЗапуститьВРежимеПредприятияСПроверкойВыполнения(
ДопСообщения,
- КомандаЗапуска, ПутьОбработки1С,
+ КомандаЗапуска, ПутьОбработкиДляЗапуска,
ЗапускатьТолстыйКлиент, ДополнительныеПараметры,
ОжидатьЗавершения,
ПутьЛогаВыполнения,
@@ -115,8 +135,13 @@
МенеджерКонфигуратора.Деструктор();
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
+
КонецФункции // ВыполнитьКоманду
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
Функция КомандаЗапуска(Знач ПараметрКомандаЗапуска, Знач ПутьКФайлуСтатусаВыполнения)
КомандыЗапуска = Новый Массив;
@@ -148,3 +173,23 @@
Функция Заменить_runnerRoot_на_КаталогVanessaRunner(Знач ИсходнаяСтрока)
Возврат СтрЗаменить(ИсходнаяСтрока, "$runnerRoot", ОбщиеМетоды.КаталогПроекта());
КонецФункции
+
+Функция ПутьОбработкиДляЗапуска(Знач ПутьОбработки1С)
+
+ Если ПустаяСтрока(ПутьОбработки1С) Тогда
+ Возврат "";
+ КонецЕсли;
+
+ ПутьОбработки1С = Заменить_runnerRoot_на_КаталогVanessaRunner(ПутьОбработки1С);
+ ПутьОбработки1С = ОбщиеМетоды.ПолныйПуть(ПутьОбработки1С);
+
+ Если ФС.ФайлСуществует(ПутьОбработки1С) Тогда
+ Возврат ПутьОбработки1С;
+ Иначе
+ ВызватьИсключение СтрШаблон("Файл внешней обработки ""%1"" не существует на диске!",
+ ПутьОбработки1С);
+ КонецЕсли;
+
+КонецФункции
+
+#КонецОбласти
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200.os"
index f5d0e92f..15d27b5a 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\227\320\260\320\277\321\203\321\201\321\202\320\270\321\202\321\214\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200.os"
@@ -9,13 +9,13 @@
//
///////////////////////////////////////////////////////////////////////////////////////////////////
-#Использовать logos
-#Использовать v8runner
+#Область ОписаниеПеременных
Перем Лог;
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Прикладной интерфейс
+#КонецОбласти
+
+#Область ОбработчикиСобытий
// Регистрация команды и ее аргументов/ключей
//
@@ -39,6 +39,9 @@
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-user", "Пользователь хранилища");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--storage-pwd", "Пароль");
+ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv",
+ "Запуск команды с использованием утилиты ibsrv");
+
Парсер.ДобавитьКоманду(ОписаниеКоманды);
КонецПроцедуры // ЗарегистрироватьКоманду
@@ -51,7 +54,21 @@
//
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт
- Лог = ДополнительныеПараметры.Лог;
+ Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры);
+
+ ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера();
+ ПараметрыАвтономногоСервера.ИспользоватьПрямоеСоединение = Истина;
+
+ Действие = Новый Действие(ЭтотОбъект, "ЗапуститьКонфигуратор");
+ Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера);
+
+КонецФункции // ВыполнитьКоманду
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Функция ЗапуститьКонфигуратор(ПараметрыКоманды) Экспорт
ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];
@@ -87,4 +104,6 @@
МенеджерКонфигуратора.Деструктор();
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
-КонецФункции // ВыполнитьКоманду
+КонецФункции
+
+#КонецОбласти
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
index ac159c28..4427b48b 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\230\320\275\320\270\321\206\320\270\320\260\320\273\320\270\320\267\320\260\321\206\320\270\321\217\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
@@ -10,16 +10,16 @@
#Область ОписаниеПеременных
Перем Лог; // Экземпляр логгера
-Перем КорневойПутьПроекта;
+Перем КорневойПутьПроекта; // Путь к корневой папке проекта
// Параметры команды
-Перем ДанныеПодключения;
-Перем ПараметрыХранилища;
-Перем РежимыРеструктуризации;
-Перем РежимРазработчика;
-Перем ПутьКФайлуКонфигурации;
-Перем ПутьКИсходникам;
-Перем ПутьКФайлуВыгрузки;
+Перем ДанныеПодключения; // Данные подключения к ИБ
+Перем ПараметрыХранилища; // Параметры подключения к хранилищу
+Перем РежимыРеструктуризации; // Доступные режимы реструктуризации
+Перем РежимРазработчика; // Режим разработчика
+Перем ПутьКФайлуКонфигурации; // Путь к файлу конфигурации
+Перем ПутьКИсходникам; // Путь к исходным файлам кофнигурации
+Перем ПутьКФайлуВыгрузки; // Путь к файлу выгрузки информационной базы
#КонецОбласти
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
index d9f9bfb9..fd1216bf 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os"
@@ -6,20 +6,22 @@
// oscript-app-template (C) EvilBeaver
//
///////////////////////////////////////////////////////////////////
+
#Использовать gitrunner
+
#Область ОписаниеПеременных
Перем Лог; // Экземпляр логгера
-Перем КорневойПутьПроекта;
-
-Перем ДанныеПодключения;
-Перем ПараметрыХранилища;
-Перем РежимыРеструктуризации;
-Перем РежимРазработчика;
-Перем ПутьКИсходникам;
-Перем ПутьКФайлуВыгрузки;
-Перем ИнкрементальнаяЗагрузкаGit;
-Перем СниматьСПоддержки;
+Перем КорневойПутьПроекта; // Путь к корневой папке проекта
+
+Перем ДанныеПодключения; // Данные подключения к ИБ
+Перем ПараметрыХранилища; // Параметры подключения к хранилищу
+Перем РежимыРеструктуризации; // Доступные режимы реструктуризации
+Перем РежимРазработчика; // Режим разработчика
+Перем ПутьКИсходникам; // Путь к исходным файлам кофнигурации
+Перем ПутьКФайлуВыгрузки; // Путь к файлу выгрузки информационной базы
+Перем ИнкрементальнаяЗагрузкаGit; // Использовать инкрементальную загрузку из репозитория git
+Перем СниматьСПоддержки; // Снимать конфигурацию с поддержки перед загрузкой
#КонецОбласти
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os"
index 3ee241d9..b5f29a09 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\261\320\276\321\200\320\272\320\260\320\240\320\260\321\201\321\210\320\270\321\200\320\265\320\275\320\270\320\271.os"
@@ -61,7 +61,7 @@
МенеджерСборки.Деструктор();
ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
КонецПопытки;
- Лог.Информация("Сборка расширения из исходников завершена.");
+ Лог.Информация("Сборка расширения %1 из исходников завершена.", ИмяРасширения);
МенеджерСборки.Деструктор();
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os"
index b7c05dc4..289117ce 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\241\320\276\320\267\320\264\320\260\321\202\321\214\320\244\320\260\320\271\320\273\320\237\320\276\321\201\321\202\320\260\320\262\320\272\320\270.os"
@@ -9,21 +9,21 @@
//
///////////////////////////////////////////////////////////////////////////////////////////////////
-#Использовать logos
-#Использовать v8runner
+#Область ОписаниеПеременных
-Перем Лог;
-Перем МенеджерКонфигуратора;
-Перем МенеджерВерсий;
+Перем Лог; // Экземпляр логгера
+Перем МенеджерКонфигуратора; // Экземпляр менеджера работы с конфигурацией
+Перем МенеджерВерсий; // Эксземпляр менеджера работы с версиями
// Параметры команды
-Перем ИмяФайлаПоставки;
-Перем КаталогИсходников;
-Перем НомерСборки;
-Перем ЗагружатьВТекущую;
+Перем ИмяФайлаПоставки; // Путь к файлу конфигурации поставки
+Перем КаталогИсходников; // Каталог с исходниками конфигурации
+Перем НомерСборки; // Текущий номер сборки
+Перем ЗагружатьВТекущую; // Флаг загрузки в текущую информационную базу
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Прикладной интерфейс
+#КонецОбласти
+
+#Область ОбработчикиСобытий
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
@@ -41,7 +41,8 @@
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--src", "Каталог с исходниками конфигурации");
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--build-number", "Номер сборки");
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--current", "Флаг загрузки в указанную базу или -с");
- Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-c", "Флаг загрузки в указанную базу, краткая форма от --current");
+ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-c",
+ "Флаг загрузки в указанную базу, краткая форма от --current");
Парсер.ДобавитьКоманду(ОписаниеКоманды);
@@ -53,6 +54,9 @@
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
// ДополнительныеПараметры - Соответствие - дополнительные параметры (необязательно)
//
+// Возвращаемое значение:
+// Число - Код возврата команды.
+//
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт
Лог = ДополнительныеПараметры.Лог;
@@ -86,6 +90,10 @@
КонецФункции // ВыполнитьКоманду
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
Процедура СоздатьФайлПоставки()
Если ЗначениеЗаполнено(КаталогИсходников) Тогда
@@ -119,3 +127,5 @@
КонецЦикла;
КонецПроцедуры
+
+#КонецОбласти
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_xUnitFor1C.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_xUnitFor1C.os"
index edc744dd..bb33aed6 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_xUnitFor1C.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265_xUnitFor1C.os"
@@ -12,17 +12,18 @@
//
///////////////////////////////////////////////////////////////////////////////////////////////////
-#Использовать logos
-#Использовать v8runner
#Использовать asserts
#Использовать fs
-Перем Лог;
+#Область ОписаниеПеременных
+
+Перем Лог; // Экземпляр логгера
Перем МенеджерКонфигуратора;
Перем ВанессаАДД;
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Прикладной интерфейс
+#КонецОбласти
+
+#Область ОбработчикиСобытий
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
@@ -94,6 +95,9 @@
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--no-shutdown",
"Не завершать работу 1С:Предприятие после выполнения тестов");
+ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv",
+ "Запуск команды с использованием утилиты ibsrv");
+
Парсер.ДобавитьКоманду(ОписаниеКоманды);
КонецПроцедуры
@@ -106,11 +110,20 @@
//
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт
- Попытка
- Лог = ДополнительныеПараметры.Лог;
- Исключение
- Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
- КонецПопытки;
+ Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры);
+
+ ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера();
+
+ Действие = Новый Действие(ЭтотОбъект, "ВыполнитьТестирование");
+ Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера);
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Функция ВыполнитьТестирование(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт
ЗапускатьТолстыйКлиент = ОбщиеМетоды.УказанПараметрТолстыйКлиент(ПараметрыКоманды["--ordinaryapp"], Лог);
ОжидатьЗавершения = Не ПараметрыКоманды["--no-wait"];
@@ -161,6 +174,10 @@
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
КонецФункции
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
// Выполняем запуск тестов для xunit
//
// Параметры:
@@ -361,3 +378,5 @@
ВызватьИсключение СообщениеОшибки;
КонецЕсли;
КонецПроцедуры
+
+#КонецОбласти
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217.os"
index 85ae6202..012dfbe0 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\237\320\276\320\262\320\265\320\264\320\265\320\275\320\270\321\217.os"
@@ -9,17 +9,18 @@
//
///////////////////////////////////////////////////////////////////////////////////////////////////
-#Использовать logos
-#Использовать v8runner
#Использовать asserts
#Использовать json
-Перем Лог;
+#Область ОписаниеПеременных
+
+Перем Лог; // Экземпляр логгера
Перем МенеджерКонфигуратора;
Перем ВанессаАДД;
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// Прикладной интерфейс
+#КонецОбласти
+
+#Область ОбработчикиСобытий
Процедура ЗарегистрироватьКоманду(Знач ИмяКоманды, Знач Парсер) Экспорт
@@ -57,6 +58,9 @@
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--no-wait",
"Не ожидать завершения запущенной команды/действия");
+ Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv",
+ "Запуск команды с использованием утилиты ibsrv");
+
Парсер.ДобавитьКоманду(ОписаниеКоманды);
КонецПроцедуры
@@ -69,12 +73,21 @@
//
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач ДополнительныеПараметры = Неопределено) Экспорт
- Попытка
- Лог = ДополнительныеПараметры.Лог;
- Исключение
- Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
- КонецПопытки;
+ Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры);
+
+ ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера();
+
+ Действие = Новый Действие(ЭтотОбъект, "ТестированиеПоведения");
+ Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера);
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+Функция ТестированиеПоведения(Знач ПараметрыКоманды) Экспорт
+
ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];
ЗапускатьТолстыйКлиент = ОбщиеМетоды.УказанПараметрТолстыйКлиент(ПараметрыКоманды["--ordinaryapp"], Лог);
@@ -113,8 +126,13 @@
МенеджерКонфигуратора.Деструктор();
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
+
КонецФункции
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
// Выполняем запуск тестов для vannessa
//
// Параметры:
@@ -217,3 +235,5 @@
Лог.Информация("Тестирование поведения завершено");
КонецПроцедуры
+
+#КонецОбласти
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os"
index 79eee776..7aa231fb 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibcmd.os"
@@ -43,6 +43,13 @@
КонецПроцедуры
+// Создать новую файловую базу из файла выгрузки или пустую.
+//
+// Параметры:
+// КаталогБазы - Строка - Каталог информационной базы
+// ПутьКШаблону - Строка - Путь к файлу выгрузки конфигурации.
+// ИмяБазыВСписке - Строка - Имя базы для показа в списке баз стартера 1С.
+//
Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", Знач ИмяБазыВСписке = "") Экспорт
ОбщиеМетоды.ОбеспечитьПустойКаталог(Новый Файл(КаталогБазы));
@@ -55,6 +62,14 @@
КонецПроцедуры
+// Создать информационную базу из исходников
+//
+// Параметры:
+// ВходнойКаталог - Строка - Каталог с исходниками конфигурации
+// СписокФайловДляЗагрузки - Строка, Массив из Строка - Файлы для инкрементальной загрузки.
+// СниматьСПоддержки - Булево - Снимать конфигурацию с поддержки перед загрузкой.
+// ОбновитьФайлВерсий - Булево - Обновлять файл версий метаданных.
+//
Процедура СобратьИзИсходниковТекущуюКонфигурацию(Знач ВходнойКаталог,
Знач СписокФайловДляЗагрузки = "", СниматьСПоддержки = Ложь, ОбновитьФайлВерсий = Истина) Экспорт
@@ -88,7 +103,13 @@
// ПутьКВыгружаемомуФайлуСДанными - Строка - Путь к результату - выгружаемому файлу с данными (*.dt)
//
Процедура ВыгрузитьИнфобазуВФайл(Знач ПутьКВыгружаемомуФайлуСДанными) Экспорт
+
+ Лог.Информация("Запускаю выгрузку информационной базы в файл");
+
УправлениеИБ.ВыгрузитьДанныеИБ(ПутьКВыгружаемомуФайлуСДанными);
+
+ Лог.Информация("Выгрузка в файл завершена.");
+
КонецПроцедуры
// Загружает информационную базу из файла
@@ -98,59 +119,101 @@
// КоличествоЗаданий - Число - Количество заданий (потоков) загрузки из файла с данными
//
Процедура ЗагрузитьИнфобазуИзФайла(Знач ПутьКЗагружаемомуФайлуСДанными, Знач КоличествоЗаданий = 0) Экспорт
+
+ Лог.Информация("Запускаю загрузку информационной базы из файла");
+
УправлениеИБ.ЗагрузитьДанныеИБ(ПутьКЗагружаемомуФайлуСДанными);
+
+ Лог.Информация("Загрузка из файла завершена.");
+
КонецПроцедуры
+// Загружает файл конфигурации в текущую базу данных.
+//
+// Параметры:
+// ПутьКФайлу - Строка - Путь к файлу *.cf
+// СниматьСПоддержки - Булево - Перед загрузкой снять текущую конфигурацию ИБ с поддержки.
+//
Процедура ЗагрузитьФайлКонфигурации(Знач ПутьКФайлу, Знач СниматьСПоддержки = Истина) Экспорт
ИмяРасширения = "";
+ Лог.Информация("Загружаем файл конфигурации %1", ПутьКФайлу);
+
Если СниматьСПоддержки Тогда
УправлениеИБ.СнятьСПоддержки();
КонецЕсли;
УправлениеИБ.ЗагрузитьКонфигурацию(ПутьКФайлу, ИмяРасширения);
+ Лог.Информация("Загрузка конфигурации из файла cf успешно завершена!");
+
КонецПроцедуры
+// Обновить конфигурацию базы данных
+//
+// Параметры:
+// ДинамическоеОбновление - Булево - Выполнять динамическое обновление.
+//
Процедура ОбновитьКонфигурациюБазыДанных(ДинамическоеОбновление = Ложь) Экспорт
Если ДинамическоеОбновление Тогда
- РежимДинамическогоОбновления = "disable";
- Иначе
РежимДинамическогоОбновления = "auto";
+ Иначе
+ РежимДинамическогоОбновления = "disable";
КонецЕсли;
- ЗавершатьСеансы = "force";
+ ЗавершатьСеансы = "force";
ИмяРасширения = "";
+
+ Лог.Информация("Запускаю обновление конфигурации БД");
+
УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения, РежимДинамическогоОбновления, ЗавершатьСеансы);
Лог.Информация("Обновление конфигурации БД завершено.");
КонецПроцедуры
-// ОбновитьРасширение
+// Обновить конфигурацию базы данных для расширения
//
// Параметры:
-// ИмяРасширения - Строка - <описание параметра>
+// ИмяРасширения - Строка - имя расширения
//
Процедура ОбновитьРасширение(Знач ИмяРасширения) Экспорт
РежимДинамическогоОбновления = "disable";
ЗавершатьСеансы = "force";
+ Лог.Информация("Запускаю обновление конфигурации БД для расширения %1", ИмяРасширения);
+
УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения, РежимДинамическогоОбновления, ЗавершатьСеансы);
+
+ Лог.Информация("Обновление конфигурации БД для расширения %1 завершено.", ИмяРасширения);
+
КонецПроцедуры
+// Вывести в консоль список всех расширений информационной базы.
+//
Процедура ПоказатьСписокВсехРасширенийКонфигурации() Экспорт
+
СписокРасширений = УправлениеИБ.СписокРасширений();
Лог.Информация("Список расширений конфигурации:%2%1", СписокРасширений, Символы.ПС);
+
КонецПроцедуры
+// Выгружает файл конфигурации из ИБ
+//
+// Параметры:
+// ПутьКНужномуФайлуКонфигурации - Строка - Путь к выгружаемому файлу конфигурации (*.cf)
+//
Процедура ВыгрузитьКонфигурациюВФайл(Знач ПутьКНужномуФайлуКонфигурации) Экспорт
+ Лог.Информация("Запускаю выгрузку конфигурации в файл");
+
УправлениеИБ.ВыгрузитьКонфигурациюВФайл(ПутьКНужномуФайлуКонфигурации);
+ Лог.Информация("Выгрузка в файл завершена.");
+
КонецПроцедуры
// Разбор текущей конфигураций на исходники штатной выгрузкой 1С
@@ -159,7 +222,8 @@
// КаталогВыгрузки - Строка - Путь к каталогу выгрузки
// ФайлВерсии - Строка - Путь к файлу версии
// ТолькоИзмененные - Булево - Выгружать только измененные файлы для ускорения выгрузки
-// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать по папкам согласно иерархии метаданных
+// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать
+// по папкам согласно иерархии метаданных
//
Процедура РазобратьНаИсходникиТекущуюКонфигурацию(КаталогВыгрузки, Знач ФайлВерсии = "",
Знач ТолькоИзмененные = Истина,
@@ -209,7 +273,8 @@
// ФайлКонфигурации - Строка - Путь к источнику - выгружаемому файлу конфигурации (*.cf)
// ВыходнойКаталог - Строка - Путь к каталогу выгрузки
// ФайлВерсии - Строка - Путь к файлу версии
-// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать по папкам согласно иерархии метаданных
+// ИспользоватьПереименования - Булево - Переименовывать файлы в удобные имена и раскладывать
+// по папкам согласно иерархии метаданных
//
Процедура ВыгрузитьКонфигурациюВИсходники(Знач ФайлКонфигурации, Знач ВыходнойКаталог,
Знач ФайлВерсии = "", Знач ИспользоватьПереименования = Ложь) Экспорт
@@ -219,14 +284,25 @@
КонецПроцедуры
+// Собирает из исходников расширение с указанным имененм
+//
+// Параметры:
+// Каталог - Строка - путь каталогу с иходниками расширения
+// ИмяРасширения - Строка - Имя расширения
+// Обновить - Булево - Признак обновления расширения в базе, имеет смысл только на пустой базе или первой загрузке.
+//
Процедура СобратьИзИсходниковРасширение(Каталог, ИмяРасширения, Обновить = Ложь) Экспорт
+ Лог.Информация("Выполняю сборку/загрузку расширения %1 из каталога %2", ИмяРасширения, Каталог);
+
УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(Каталог, ИмяРасширения);
Если Обновить Тогда
УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения);
КонецЕсли;
+ Лог.Информация("Сборка/загрузка расширения %1 завершена", ИмяРасширения);
+
КонецПроцедуры
// Выгружает файл расширения из ИБ
@@ -305,7 +381,8 @@
КонецЕсли;
Возврат ИзмененияКонфигурации;
-КонецФункции
+КонецФункции
+
#КонецОбласти
#Область ОбработчикиСобытий
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibsrv.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibsrv.os"
new file mode 100644
index 00000000..be64c5ab
--- /dev/null
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200Ibsrv.os"
@@ -0,0 +1,274 @@
+
+#Использовать ibcmdrunner
+
+// BSLLS:LatinAndCyrillicSymbolInWord-off
+
+#Область ОписаниеПеременных
+
+Перем Лог; // Содержит объект лога
+Перем ВременныйКаталогДанныхСервера; // Временный каталог данных автономного сервера
+Перем МенеджерАС; // Вложенный объект упрапвления автономным сервером
+Перем ПортHttpДоступа; // Основной сетевой порт, обслуживаемый сервером.
+
+Перем ИспользоватьПрямоеСоединение; // Режим использования прямого соединения
+Перем ПортПрямогоСоединения; // Основной сетевой порт установки прямого соединения с сервером
+
+Перем ИспользоватьОтладку; // Режим использования отладки
+Перем ПортОтладки; // Основной порт отладки
+
+#КонецОбласти
+
+#Область ПрограммныйИнтерфейс
+
+// Выполняет действие запуска платформы 1С через автономный сервер
+//
+// Параметры:
+// Действие - Действие - Метод выполняющий запуск платформы 1С.
+// ПараметрыКоманды - Соответствие - Параметры команды
+//
+// Возвращаемое значение:
+// Число - Код возврата команды запуска.
+//
+Функция ВыполнитьДействие(Действие, ПараметрыКоманды) Экспорт
+
+ ЗапуститьМенеджерАС();
+ Лог.Информация("Запущен ibsrv на основном порту %1", ПортHttpДоступа);
+
+ УстановитьДанныеПодключения(ПараметрыКоманды);
+
+ Попытка
+ Результат = Действие.Выполнить(ПараметрыКоманды);
+ Исключение
+ МенеджерАС.Остановить();
+ Лог.Информация("Процесс ibsrv остановлен");
+ ВызватьИсключение;
+ КонецПопытки;
+
+ МенеджерАС.Остановить();
+ Лог.Информация("Процесс ibsrv остановлен");
+
+ Возврат Результат;
+
+КонецФункции
+
+// Включает режим прямого соединения с автономным сервером
+//
+Процедура ВключитьПрямоеСоединение() Экспорт
+ ИспользоватьПрямоеСоединение = Истина;
+КонецПроцедуры
+
+// Включает режим отладки на автономном сервере
+//
+Процедура ВключитьОтладку() Экспорт
+ ИспользоватьОтладку = Истина;
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытий
+
+Процедура ПриСозданииОбъекта(ПараметрыКоманды)
+
+ Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
+ ВременныйКаталогДанныхСервера = ВременныеФайлы.СоздатьКаталог();
+
+ МенеджерАС = Новый УправлениеАС();
+ МенеджерАС.УстановитьКаталогДанных(ВременныйКаталогДанныхСервера);
+
+ ПортHttpДоступа = ПортHttpДоступа();
+
+ ИспользоватьПрямоеСоединение = Ложь;
+ ПортПрямогоСоединения = ПортПрямогоСоединения();
+
+ ИспользоватьОтладку = Ложь;
+ ПортОтладки = ПортОтладки();
+
+ ДанныеПодключения = ОбщиеМетоды.ДанныеПодключения(ПараметрыКоманды);
+
+ ВерсияПлатформы = ДанныеПодключения.ВерсияПлатформы;
+ Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда
+ Если ЗначениеЗаполнено(ДанныеПодключения.РазрядностьПлатформы) Тогда
+ Разрядность = ОбщиеМетоды.РазрядностьПлатформы(ДанныеПодключения.РазрядностьПлатформы);
+ Лог.Отладка("Разрядность платформы 1С указана %1", ДанныеПодключения.РазрядностьПлатформы);
+ Иначе
+ Разрядность = ОбщиеМетоды.РазрядностьПлатформы("x64x86");
+ Лог.Отладка("Разрядность платформы 1С не указана, используем значение x64x86");
+ КонецЕсли;
+
+ МенеджерАС.УстановитьВерсиюПлатформы(ВерсияПлатформы, Разрядность);
+ КонецЕсли;
+
+ Лог.Информация("Используется ibsrv платформы %1", МенеджерАС.Версия());
+
+ КаталогБазы = ОбщиеМетоды.КаталогФайловойИБ(ДанныеПодключения.ПутьБазы);
+ МенеджерАС.УстановитьПараметрыФайловойИБ(КаталогБазы);
+
+КонецПроцедуры
+
+Процедура Деструктор() Экспорт
+
+ Попытка
+ ВременныеФайлы.УдалитьФайл(ВременныйКаталогДанныхСервера);
+ Исключение
+ ИнформацияОбОшибке = ИнформацияОбОшибке();
+ Лог.Отладка(КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
+ КонецПопытки;
+
+ ВременныйКаталогДанныхСервера = "";
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция СтрокаПрямогоСоединения()
+ Возврат СтрШаблон("/S localhost:%1/DefAlias", XMLСтрока(ПортПрямогоСоединения));
+КонецФункции
+
+Функция СтрокаВебСоединения()
+ Возврат СтрШаблон("/WS http://localhost:%1/", XMLСтрока(ПортHttpДоступа));
+КонецФункции
+
+Процедура УстановитьДанныеПодключения(ПараметрыКоманды)
+
+ ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];
+
+ Если ИспользоватьПрямоеСоединение Тогда
+ СтрокаСоединения = СтрокаПрямогоСоединения();
+ Иначе
+ СтрокаСоединения = СтрокаВебСоединения();
+ КонецЕсли;
+
+ НовыеДанныеПодключения = Новый Структура(ДанныеПодключения);
+ НовыеДанныеПодключения.ПутьБазы = СтрокаСоединения;
+ НовыеДанныеПодключения.СтрокаПодключения = СтрокаСоединения;
+ Лог.Отладка("Установлена строка подключения к ИБ: %1", СтрокаСоединения);
+
+ ПараметрыКоманды["ДанныеПодключения"] = НовыеДанныеПодключения;
+
+КонецПроцедуры
+
+Процедура ЗапуститьМенеджерАС()
+
+ СдвигПортов = ДоступныйСдвигПортов();
+ ПортHttpДоступа = ПортHttpДоступа(СдвигПортов);
+ ПортПрямогоСоединения = ПортПрямогоСоединения(СдвигПортов);
+ ПортОтладки = ПортОтладки(СдвигПортов);
+
+ СформироватьФайлКонфигурацииАС(СдвигПортов);
+
+ МенеджерАС.Запустить();
+
+КонецПроцедуры
+
+Функция ДоступныйСдвигПортов()
+
+ ДиапазонПортов = 0; // Стандартный сдвиг
+ КоличествоПопыток = 8;
+ КоличествоДиапазонов = 32;
+
+ Генератор = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
+
+ Результат = Ложь;
+ ТекущаяПопытка = 0;
+ Пока Не Результат И ТекущаяПопытка < КоличествоПопыток Цикл
+
+ СдвигПортов = СдвигПортовДляДиапазона(ДиапазонПортов);
+ ПортПроверки = ПортHttpДоступа(СдвигПортов);
+ Если ПортДоступен(ПортПроверки) Тогда
+ Лог.Отладка("Порт %1 доступен для запуска ibsrv", ПортПроверки);
+ Результат = Истина;
+ Прервать;
+ Иначе
+ Лог.Отладка("Порт %1 недоступен для запуска ibsrv!", ПортПроверки);
+ КонецЕсли;
+
+ ТекущаяПопытка = ТекущаяПопытка + 1;
+ ДиапазонПортов = Генератор.СлучайноеЧисло(1, КоличествоДиапазонов);
+
+ КонецЦикла;
+
+ Если Результат Тогда
+ Возврат СдвигПортов;
+ Иначе
+ ВызватьИсключение "Не найден доступный порт для запуска автономного сервера!";
+ КонецЕсли;
+
+КонецФункции
+
+Функция СдвигПортовДляДиапазона(ДиапазонПортов)
+ Возврат 100 * ДиапазонПортов; // BSLLS:MagicNumber-off
+КонецФункции
+
+Функция ПортПрямогоСоединения(СдвигПортов = 0)
+ Возврат 8341 + СдвигПортов; // BSLLS:MagicNumber-off
+КонецФункции
+
+Функция ПортHttpДоступа(СдвигПортов = 0)
+ Возврат 8314 + СдвигПортов; // BSLLS:MagicNumber-off
+КонецФункции
+
+Функция ПортОтладки(СдвигПортов = 0)
+ Возврат 8350 + СдвигПортов; // BSLLS:MagicNumber-off
+КонецФункции
+
+Функция МинимальныйПортПодключения(СдвигПортов = 0)
+ Возврат 8360 + СдвигПортов; // BSLLS:MagicNumber-off
+КонецФункции
+
+Функция МаксимальныйПортПодключения(СдвигПортов = 0)
+ Возврат 8391 + СдвигПортов; // BSLLS:MagicNumber-off
+КонецФункции
+
+Функция ПортДоступен(ПортПроверки)
+
+ TCPСервер = Новый TCPСервер(ПортПроверки);
+ Попытка
+ TCPСервер.Запустить();
+ Исключение
+ Возврат Ложь;
+ КонецПопытки;
+
+ TCPСервер.Остановить();
+ Возврат Истина;
+
+КонецФункции
+
+Процедура СформироватьФайлКонфигурацииАС(СдвигПортов)
+
+ СетевойИнтерфейс = "any";
+ ИмяИБ = "DefAlias";
+ РазрешитьВыдачуЛицензий = Истина;
+ РазрешитьРегламентныеЗадания = Ложь;
+
+ КонфигурационныйФайлАС = Новый КонфигурационныйФайлАС;
+ КонфигурационныйФайлАС.ПараметрыСервера(СетевойИнтерфейс, ПортHttpДоступа);
+ КонфигурационныйФайлАС.ПараметрыИБ(ИмяИБ, РазрешитьВыдачуЛицензий, РазрешитьРегламентныеЗадания);
+
+ ИспользоватьШлюзПрямогоДоступа = ИспользоватьПрямоеСоединение;
+ ИспользоватьШлюзHTTP = Неопределено;
+ ИспользоватьШлюзSSH = Ложь;
+ ИспользоватьРасширеннуюФункциональностьКонфигуратора = Неопределено;
+ КонфигурационныйФайлАС.ПараметрыФункциональностиСервера(
+ ИспользоватьШлюзПрямогоДоступа, ИспользоватьШлюзHTTP,
+ ИспользоватьШлюзSSH, ИспользоватьРасширеннуюФункциональностьКонфигуратора);
+
+ Если ИспользоватьПрямоеСоединение Тогда
+ КонфигурационныйФайлАС.ПараметрыШлюзаПрямогоДоступа(ПортПрямогоСоединения,
+ МинимальныйПортПодключения(СдвигПортов),
+ МаксимальныйПортПодключения(СдвигПортов));
+ КонецЕсли;
+
+ Если ИспользоватьОтладку Тогда
+ КонфигурационныйФайлАС.ПараметрыОтладкиСервера("http", ПортОтладки, СетевойИнтерфейс);
+ КонецЕсли;
+
+ ФайлКонфигурации = ОбъединитьПути(ВременныйКаталогДанныхСервера, "ibsrv.yaml");
+ КонфигурационныйФайлАС.СоздатьКонфигурационныйФайл(ФайлКонфигурации);
+
+ МенеджерАС.УстановитьКонфигурационныйФайл(ФайлКонфигурации);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os"
index a2665ddf..3390345f 100644
--- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os"
+++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\275\321\204\320\270\320\263\321\203\321\200\320\260\321\202\320\276\321\200\320\260.os"
@@ -202,6 +202,13 @@
КонецПроцедуры
+// Создать новую файловую базу из файла выгрузки или пустую.
+//
+// Параметры:
+// КаталогБазы - Строка - Каталог информационной базы
+// ПутьКШаблону - Строка - Путь к файлу выгрузки конфигурации.
+// ИмяБазыВСписке - Строка - Имя базы для показа в списке баз стартера 1С.
+//
Процедура СоздатьФайловуюБазу(Знач КаталогБазы, Знач ПутьКШаблону = "", Знач ИмяБазыВСписке = "") Экспорт
Попытка
@@ -288,7 +295,6 @@
// ИмяРасширения - Строка - <описание параметра>
//
Процедура ОбновитьРасширение(Знач ИмяРасширения) Экспорт
- ТекущаяПроцедура = "ОбновитьРасширение";
Лог.Информация("Запускаю обновление расширения %1", ИмяРасширения);
@@ -300,7 +306,7 @@
КонецЕсли;
Исключение
Лог.Ошибка(УправлениеКонфигуратором.ВыводКоманды());
- ВызватьИсключение ТекущаяПроцедура;
+ ВызватьИсключение;
КонецПопытки;
Лог.Информация("Обновление расширения завершено.");
@@ -1591,26 +1597,24 @@
Лог.Отладка(Приложение);
Попытка
- ЗапуститьПроцесс1С(Приложение, ПутьЛогаВыполненияСценариев );
- Результат = ВыводПредприятия(ПутьДамп);
-
- ПроверитьЛогПредприятияНаИзвестныеОшибки(Результат);
-
- ПоказатьВыводПредприятия(Результат, ДопСообщения.ПоказыватьДополнительноЛогПредприятия);
-
+ ЗапуститьПроцесс1С(Приложение, ПутьЛогаВыполненияСценариев);
Исключение
- ОписаниеОшибки = ОписаниеОшибки();
+ ТекстВывода = ВыводПредприятия(ПутьДамп);
+ ПоказатьВыводПредприятия(ТекстВывода, Истина);
+
+ ВызватьИсключение;
+ КонецПопытки;
- Результат = ВыводПредприятия(ПутьДамп);
- ПоказатьВыводПредприятия(Результат, Истина);
+ Результат = ВыводПредприятия(ПутьДамп);
- Лог.Ошибка(ОписаниеОшибки);
- ВызватьИсключение ТекущаяПроцедура;
- КонецПопытки;
+ ПроверитьЛогПредприятияНаИзвестныеОшибки(Результат);
+
+ ПоказатьВыводПредприятия(Результат, ДопСообщения.ПоказыватьДополнительноЛогПредприятия);
Лог.Информация("Выполнение команды/действия в режиме 1С:Предприятие завершено.");
Возврат Результат;
+
КонецФункции
Процедура ЗапуститьПроцесс1С(Знач СтрокаЗапуска, Знач ПутьКФайлуЛога)
@@ -1766,7 +1770,7 @@
НормализованныйЛог = НРег(ЛогПредприятия);
Для каждого Ошибка Из ИзвестныеНормализованныеОшибки() Цикл
Если Найти(НормализованныйЛог, Ошибка) > 0 Тогда
- ВызватьИсключение Ошибка;
+ ВызватьИсключение ЛогПредприятия;
КонецЕсли;
КонецЦикла;
diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os"
index c1de0fb5..6d179ef2 100644
--- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os"
+++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\232\320\276\320\274\320\260\320\275\320\264\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os"
@@ -200,11 +200,10 @@
ЗначениеПараметраФайлНастроек = ЗначенияПараметров["--settings"];
Если ЗначениеЗаполнено(ЗначениеПараметраФайлНастроек) Тогда
ФайлОбщихНастроек = Новый Файл(ОбщиеМетоды.ПолныйПуть(ЗначениеПараметраФайлНастроек));
- Ожидаем.Что(ФайлОбщихНастроек.Существует(),
- СтрШаблон("Ожидаем, что указанный в --settings <%1> файл по пути <%2> существует, а его нет!",
- ЗначениеПараметраФайлНастроек,
- ФайлОбщихНастроек.ПолноеИмя)
- ).ЭтоИстина();
+ Сообщение = СтрШаблон("Ожидаем, что указанный в --settings <%1> файл по пути <%2> существует, а его нет!",
+ ЗначениеПараметраФайлНастроек,
+ ФайлОбщихНастроек.ПолноеИмя);
+ Ожидаем.Что(ФайлОбщихНастроек.Существует(), Сообщение).ЭтоИстина();
КонецЕсли;
НастройкиИзФайла = ОбщиеМетоды.ПрочитатьНастройкиФайлJSON(ТекущийКаталогПроекта,
@@ -275,7 +274,7 @@
// специально не через ВременныеФайлы для возможности сохранения файла после завершения
ПутьФайлаВывода = ПолучитьИмяВременногоФайла(".log"); // BSLLS:MissingTemporaryFileDeletion-off
ФайлВывода = Новый Файл(ПутьФайлаВывода);
- ПутьФайлаВывода = ОбъединитьПути(ФайлВывода.Путь, "vrunner-" + ФайлВывода.Имя); // BSLLS:MissingTemporaryFileDeletion-off
+ ПутьФайлаВывода = ОбъединитьПути(ФайлВывода.Путь, "vrunner-" + ФайлВывода.Имя);
Иначе
Возврат;
КонецЕсли;
@@ -397,8 +396,8 @@
Значение = КлючЗначение.Значение;
Если ЗначениеЗаполнено(Значение) И РегулярноеВыражение.Совпадает(Значение) Тогда
ВызватьИсключение СтрШаблон(
- "Запрещено использование слешей как последних символов в параметрах.%1" +
- " Это может привести к проблемам при запуске в командной строке.%1%1 Ключ %2 = %3",
+ "Запрещено использование слэшей как последних символов в параметрах.%1"
+ + " Это может привести к проблемам при запуске в командной строке.%1%1 Ключ %2 = %3",
Символы.ПС, КлючЗначение.Ключ, Значение);
КонецЕсли;
КонецЦикла;
diff --git "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os"
index f0c4d8c7..db30f0c0 100644
--- "a/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os"
+++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\236\320\261\321\211\320\270\320\265\320\234\320\265\321\202\320\276\320\264\321\213.os"
@@ -277,7 +277,6 @@
КонецФункции // ПолныйПуть()
-
Функция ЭтоОтносительныйПуть(Знач Путь)
// BSLLS:IfElseDuplicatedCodeBlock-off
@@ -623,6 +622,88 @@
Возврат НайденныйФайл;
КонецФункции
+// Выполняет запуск команды приложения с дополнительным запуском ibsrv или напрямую.
+//
+// Параметры:
+// ПараметрыКоманды - Соотвествие - Параметры команды
+// Действие - Действие - Метод выполняющий запуск платформы 1С.
+// ПараметрыАвтономногоСервера - см. НовыеПараметрыАвтономногоСервера
+//
+// Возвращаемое значение:
+// Число - Код возврата команды запуска.
+//
+Функция ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера) Экспорт
+
+ Если ИспользоватьIbsrv(ПараметрыКоманды) Тогда
+ Возврат ВыполнитьЧерезIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера);
+ Иначе
+ Возврат Действие.Выполнить(ПараметрыКоманды);
+ КонецЕсли;
+
+КонецФункции
+
+Функция ИспользоватьIbSrv(ПараметрыКоманды)
+
+ ИспользоватьIbsrv = ПараметрыКоманды["--ibsrv"];
+ ОжидатьЗавершения = НЕ (ПараметрыКоманды["--no-wait"] = Истина);
+ ДанныеПодключения = ДанныеПодключения(ПараметрыКоманды);
+ СтрокаПодключенияИБ = ДанныеПодключения.ПутьБазы;
+
+ Если Не ИспользоватьIbsrv Тогда
+ Лог.Отладка("Не указан флаг использования ibsrv");
+ Возврат Ложь;
+
+ ИначеЕсли Не ОбщиеМетоды.ЭтоФайловаяИБ(СтрокаПодключенияИБ) Тогда
+ Лог.Предупреждение("Серверные ИБ не поддерживаются ibsrv!");
+ Возврат Ложь;
+
+ ИначеЕсли Не ОжидатьЗавершения Тогда
+ Лог.Предупреждение("Запуск без ожидания не поддерживается при работе с ibsrv!");
+ Возврат Ложь;
+
+ Иначе
+ Лог.Отладка("Используем ibsrv.");
+ Возврат Истина;
+
+ КонецЕсли;
+
+КонецФункции
+
+Функция НовыеПараметрыАвтономногоСервера() Экспорт
+
+ ПараметрыАС = Новый Структура;
+ ПараметрыАС.Вставить("ИспользоватьПрямоеСоединение", Ложь);
+ ПараметрыАС.Вставить("ИспользоватьОтладку", Ложь);
+
+ Возврат ПараметрыАС;
+
+КонецФункции
+
+Функция ВыполнитьЧерезIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера)
+
+ МенеджерIbsrv = Новый МенеджерIbsrv(ПараметрыКоманды);
+
+ Если ПараметрыАвтономногоСервера.ИспользоватьПрямоеСоединение Тогда
+ МенеджерIbsrv.ВключитьПрямоеСоединение();
+ КонецЕсли;
+
+ Если ПараметрыАвтономногоСервера.ИспользоватьОтладку Тогда
+ МенеджерIbsrv.ВключитьОтладку();
+ КонецЕсли;
+
+ Попытка
+ Результат = МенеджерIbsrv.ВыполнитьДействие(Действие, ПараметрыКоманды);
+ Исключение
+ МенеджерIbsrv.Деструктор();
+ ВызватьИсключение;
+ КонецПопытки;
+
+ МенеджерIbsrv.Деструктор();
+
+ Возврат Результат;
+
+КонецФункции
+
Функция НовыйМенеджерКонфигуратора() Экспорт
Логирование.ПолучитьЛог("oscript.lib.v8runner").УстановитьУровень(Лог.Уровень());
Возврат Новый МенеджерКонфигуратора();
@@ -656,5 +737,17 @@
КонецПроцедуры
+// Получает данные подключения из параметров команды
+//
+// Параметры:
+// ПараметрыКоманды - Соответствие - Парвметры команды
+//
+// Возвращаемое значение:
+// Структура - Парметры подключения к ИБ
+//
+Функция ДанныеПодключения(ПараметрыКоманды) Экспорт
+ Возврат ПараметрыКоманды["ДанныеПодключения"];
+КонецФункции
+
// из-за особенностей загрузки модуль ОбщиеМетоды грузится раньше ПараметрыСистемы,
// поэтому сразу в конце кода модуля использовать ПараметрыСистемы нельзя
diff --git a/tests/fixtures/cf/Configuration.xml b/tests/fixtures/cf/Configuration.xml
index 616caa9a..8f82018d 100644
--- a/tests/fixtures/cf/Configuration.xml
+++ b/tests/fixtures/cf/Configuration.xml
@@ -32,7 +32,7 @@
- Version8_3_10
+ Version8_3_14
ManagedApplication
PersonalComputer
@@ -113,7 +113,7 @@
DontUse
Use
Taxi
- Version8_3_10
+ Version8_3_14
diff --git "a/tests/fixtures/feature/\320\221\320\265\320\267 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270 \321\210\320\260\320\263\320\260/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\271 \321\201 \320\275\320\265\321\200\320\265\320\260\320\273\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\274 \321\210\320\260\320\263\320\276\320\274.feature" "b/tests/fixtures/feature/\320\221\320\265\320\267 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270 \321\210\320\260\320\263\320\260/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\271 \321\201 \320\275\320\265\321\200\320\265\320\260\320\273\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\274 \321\210\320\260\320\263\320\276\320\274.feature"
new file mode 100644
index 00000000..11735e03
--- /dev/null
+++ "b/tests/fixtures/feature/\320\221\320\265\320\267 \321\200\320\265\320\260\320\273\320\270\320\267\320\260\321\206\320\270\320\270 \321\210\320\260\320\263\320\260/\320\241\321\206\320\265\320\275\320\260\321\200\320\270\320\271 \321\201 \320\275\320\265\321\200\320\265\320\260\320\273\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\274 \321\210\320\260\320\263\320\276\320\274.feature"
@@ -0,0 +1,5 @@
+# language: ru
+Функционал: Выполнение несуществующего шага
+
+Сценарий: Выполнение несуществующего шага
+ Когда я выполняю несуществующий шаг
diff --git "a/tests/fixtures/feature/\320\237\320\260\321\203\320\267\320\260/\320\237\320\260\321\203\320\267\320\260.feature" "b/tests/fixtures/feature/\320\237\320\260\321\203\320\267\320\260/\320\237\320\260\321\203\320\267\320\260.feature"
new file mode 100644
index 00000000..e175beb1
--- /dev/null
+++ "b/tests/fixtures/feature/\320\237\320\260\321\203\320\267\320\260/\320\237\320\260\321\203\320\267\320\260.feature"
@@ -0,0 +1,5 @@
+# language: ru
+Функционал: Сделать паузу в указанное число секунд
+
+Сценарий: Пауза
+ Когда Пауза 1
diff --git a/tests/fixtures/test.cfe b/tests/fixtures/test.cfe
index 20518554..437550cc 100644
Binary files a/tests/fixtures/test.cfe and b/tests/fixtures/test.cfe differ
diff --git "a/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml"
new file mode 100644
index 00000000..5f7d7790
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml"
@@ -0,0 +1,18 @@
+
+
+
+
+ ТестFAIL_ОбщийМодуль
+
+
+ false
+ false
+ true
+ true
+ false
+ false
+ false
+ DontUse
+
+
+
\ No newline at end of file
diff --git "a/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" "b/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl"
new file mode 100644
index 00000000..437d39ff
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_FAIL/CommonModules/\320\242\320\265\321\201\321\202FAIL_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl"
@@ -0,0 +1,10 @@
+
+Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
+ НаборТестов.Добавить("ТестFail");
+КонецПроцедуры
+
+Процедура ТестFail(Ванесса) Экспорт
+
+ ВызватьИсключение "Тест FAIL!";
+
+КонецПроцедуры
\ No newline at end of file
diff --git a/tests/fixtures/xdd_cfe_FAIL/Configuration.xml b/tests/fixtures/xdd_cfe_FAIL/Configuration.xml
new file mode 100644
index 00000000..cd57a891
--- /dev/null
+++ b/tests/fixtures/xdd_cfe_FAIL/Configuration.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+ 9cd510cd-abfc-11d4-9434-004095e12fc7
+ 986648a2-0daa-4f7c-90f6-55b99394ca68
+
+
+ 9fcd25a0-4822-11d4-9414-008048da11f9
+ 78e5b327-4d98-46ce-8e1d-6ce2913a42b3
+
+
+ e3687481-0a87-462c-a166-9f34594f9bba
+ ff659aab-ce9b-4126-9941-cdd1533eb0c4
+
+
+ 9de14907-ec23-4a07-96f0-85521cb6b53b
+ 8ae1a01d-72f2-4079-9934-d186b374c4d8
+
+
+ 51f2d5d8-ea4d-4064-8892-82951750031e
+ d86f397b-5b9d-48d0-aeb4-596a4f003c30
+
+
+ e68182ea-4237-4383-967f-90c1e3370bc7
+ 955aa924-ae4d-461c-92d5-004ca627de16
+
+
+ fb282519-d103-4dd3-bc12-cb271d631dfc
+ 031b5158-f0a7-40ab-a84d-93a307da1563
+
+
+
+ Adopted
+ ТестFAIL
+
+
+ ru
+ Тест FAIL
+
+
+
+ Customization
+ true
+ ТестFAIL_
+ Version8_3_14
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+ Role.ТестFAIL_ОсновнаяРоль
+
+
+
+ Language.Русский
+
+
+
+
+
+ Taxi
+
+
+ Русский
+ ТестFAIL_ОсновнаяРоль
+ ТестFAIL_ОбщийМодуль
+
+
+
diff --git "a/tests/fixtures/xdd_cfe_FAIL/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/tests/fixtures/xdd_cfe_FAIL/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml"
new file mode 100644
index 00000000..6dbda9fa
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_FAIL/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml"
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Adopted
+ Русский
+
+ ru
+
+
+
\ No newline at end of file
diff --git "a/tests/fixtures/xdd_cfe_FAIL/Roles/\320\242\320\265\321\201\321\202FAIL_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_FAIL/Roles/\320\242\320\265\321\201\321\202FAIL_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml"
new file mode 100644
index 00000000..98795e0b
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_FAIL/Roles/\320\242\320\265\321\201\321\202FAIL_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml"
@@ -0,0 +1,10 @@
+
+
+
+
+ ТестFAIL_ОсновнаяРоль
+
+
+
+
+
\ No newline at end of file
diff --git "a/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml"
new file mode 100644
index 00000000..29890491
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214.xml"
@@ -0,0 +1,18 @@
+
+
+
+
+ ТестOK_ОбщийМодуль
+
+
+ false
+ false
+ true
+ true
+ true
+ false
+ false
+ DontUse
+
+
+
diff --git "a/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl" "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl"
new file mode 100644
index 00000000..d8e3f435
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202OK_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\214/Ext/Module.bsl"
@@ -0,0 +1,12 @@
+
+Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
+ НаборТестов.Добавить("ТестOK");
+КонецПроцедуры
+
+Процедура ТестOK(Ванесса) Экспорт
+
+ Сообщение = Новый СообщениеПользователю;
+ Сообщение.Текст = "Тест OK!";
+ Сообщение.Сообщить();
+
+КонецПроцедуры
\ No newline at end of file
diff --git "a/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml" "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml"
new file mode 100644
index 00000000..74ec0bdb
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141.xml"
@@ -0,0 +1,18 @@
+
+
+
+
+ Тест_ОбщийМодуль1
+
+
+ false
+ false
+ true
+ true
+ true
+ false
+ false
+ DontUse
+
+
+
diff --git "a/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl" "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl"
new file mode 100644
index 00000000..3de44fce
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_OK/CommonModules/\320\242\320\265\321\201\321\202_\320\236\320\261\321\211\320\270\320\271\320\234\320\276\320\264\321\203\320\273\321\2141/Ext/Module.bsl"
@@ -0,0 +1,7 @@
+
+Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
+ НаборТестов.Добавить("Тест_Выполняется");
+КонецПроцедуры
+
+Процедура Тест_Выполняется(Ванесса) Экспорт
+КонецПроцедуры
diff --git a/tests/fixtures/xdd_cfe_OK/Configuration.xml b/tests/fixtures/xdd_cfe_OK/Configuration.xml
new file mode 100644
index 00000000..b4dbd7e7
--- /dev/null
+++ b/tests/fixtures/xdd_cfe_OK/Configuration.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+ 9cd510cd-abfc-11d4-9434-004095e12fc7
+ c68551a9-4e35-4db1-9a4e-d2bf7c6224d4
+
+
+ 9fcd25a0-4822-11d4-9414-008048da11f9
+ 45b51908-9aba-4ff0-9dde-96fec0c1a8d5
+
+
+ e3687481-0a87-462c-a166-9f34594f9bba
+ a7007268-2b03-4157-b9cb-a9e597e0831e
+
+
+ 9de14907-ec23-4a07-96f0-85521cb6b53b
+ 53328cf7-8389-4b5c-89f7-1cbf09324b07
+
+
+ 51f2d5d8-ea4d-4064-8892-82951750031e
+ cc8b9d47-7eeb-4d3d-a94c-b58b25ea35f6
+
+
+ e68182ea-4237-4383-967f-90c1e3370bc7
+ 8dc87c7e-a71e-4c7e-aedf-aebc06cd7599
+
+
+ fb282519-d103-4dd3-bc12-cb271d631dfc
+ 13d6e80b-14c7-44d6-a997-41eece31b85e
+
+
+
+ Adopted
+ ТестOK
+
+
+ ru
+ Тест OK
+
+
+
+ Customization
+ true
+ ТестOK_
+ Version8_3_14
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+ Role.ТестOK_ОсновнаяРоль
+
+
+
+ Language.Русский
+
+
+
+
+
+ Taxi
+
+
+ Русский
+ ТестOK_ОсновнаяРоль
+ ТестOK_ОбщийМодуль
+
+
+
diff --git "a/tests/fixtures/xdd_cfe_OK/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml" "b/tests/fixtures/xdd_cfe_OK/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml"
new file mode 100644
index 00000000..2adb33dc
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_OK/Languages/\320\240\321\203\321\201\321\201\320\272\320\270\320\271.xml"
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Adopted
+ Русский
+
+ ru
+
+
+
\ No newline at end of file
diff --git "a/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202OK_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202OK_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml"
new file mode 100644
index 00000000..83ae99ce
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202OK_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml"
@@ -0,0 +1,10 @@
+
+
+
+
+ ТестOK_ОсновнаяРоль
+
+
+
+
+
\ No newline at end of file
diff --git "a/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml" "b/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml"
new file mode 100644
index 00000000..cded8de4
--- /dev/null
+++ "b/tests/fixtures/xdd_cfe_OK/Roles/\320\242\320\265\321\201\321\202_\320\236\321\201\320\275\320\276\320\262\320\275\320\260\321\217\320\240\320\276\320\273\321\214.xml"
@@ -0,0 +1,10 @@
+
+
+
+
+ Тест_ОсновнаяРоль
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/xunits/compileext.os b/tests/xunits/compileext.os
index ee0feefc..3b49beb5 100644
--- a/tests/xunits/compileext.os
+++ b/tests/xunits/compileext.os
@@ -30,7 +30,7 @@
// Тогда
Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd");
- Исполнитель.ОжидаемЧтоВыводСодержит("Сборка расширения из исходников завершена.");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Сборка расширения testNew из исходников завершена.");
КонецПроцедуры
@@ -50,4 +50,4 @@
КонецПроцедуры
-#КонецОбласти
\ No newline at end of file
+#КонецОбласти
diff --git a/tests/xunits/designer.os b/tests/xunits/designer.os
new file mode 100644
index 00000000..59a57013
--- /dev/null
+++ b/tests/xunits/designer.os
@@ -0,0 +1,48 @@
+#Использовать asserts
+#Использовать tempfiles
+#Использовать "utils"
+#Использовать "../.."
+
+#Область ОписаниеПеременных
+
+Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+&Тест
+Процедура ТестДолжен_ВыгрузитьИнформационноюБазуВФайлIbsrv() Экспорт
+
+ // Дано
+ Исполнитель = Новый Тест_ИсполнительКоманд("designer");
+ Исполнитель.УстановитьКонтекстПустаяИБ();
+ Исполнитель.ДобавитьПараметр("--additional", """/DumpDBCfgList -AllExtensions""");
+ Исполнитель.ДобавитьФлаг("--ibsrv");
+
+ // Когда
+ Исполнитель.ВыполнитьКоманду();
+
+ // Тогда
+ Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Работа Конфигуратора завершена");
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытий
+
+Процедура ПередЗапускомТеста() Экспорт
+
+ НакопленныеВременныеФайлы = ВременныеФайлы.Файлы();
+
+КонецПроцедуры
+
+Процедура ПослеЗапускаТеста() Экспорт
+
+ ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/tests/xunits/run.os b/tests/xunits/run.os
new file mode 100644
index 00000000..7939fe37
--- /dev/null
+++ b/tests/xunits/run.os
@@ -0,0 +1,90 @@
+#Использовать asserts
+#Использовать tempfiles
+#Использовать "utils"
+#Использовать "../.."
+
+#Область ОписаниеПеременных
+
+Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+&Тест
+Процедура ТестДолжен_ЗапуститьОбработкуЗакрытьПредприятиеIbsrv() Экспорт
+
+ // Дано
+ Исполнитель = Новый Тест_ИсполнительКоманд("run");
+ Исполнитель.СобратьВнешнююОбработку("epf/ЗакрытьПредприятие/ЗакрытьПредприятие.xml", "epf/ЗакрытьПредприятие.epf");
+ Исполнитель.УстановитьКонтекстПустаяИБ();
+ Исполнитель.ДобавитьПараметр("--execute", "$runnerRoot/epf/ЗакрытьПредприятие.epf");
+ Исполнитель.ДобавитьФлаг("--ibsrv");
+
+ // Когда
+ Исполнитель.ВыполнитьКоманду();
+
+ // Тогда
+ Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Выполнение команды/действия в режиме 1С:Предприятие завершено.");
+
+КонецПроцедуры
+
+&Тест
+Процедура ТестДолжен_ЗапуститьСНевернымИменемПользователяIbsrv() Экспорт
+
+ // Дано
+ Исполнитель = Новый Тест_ИсполнительКоманд("run");
+ Исполнитель.СобратьВнешнююОбработку("epf/ЗакрытьПредприятие/ЗакрытьПредприятие.xml", "epf/ЗакрытьПредприятие.epf");
+ Исполнитель.УстановитьКонтекстПустаяИБ();
+ Исполнитель.ДобавитьПараметр("--execute", "$runnerRoot/epf/ЗакрытьПредприятие.epf");
+ Исполнитель.ДобавитьФлаг("--ibsrv");
+
+ // Когда
+ Исполнитель.ДобавитьПараметр("--db-user", "НеизвестныйПользователь");
+
+ // Тогда
+ Ожидаем.Что(Исполнитель)
+ .Метод("ВыполнитьКоманду")
+ .ВыбрасываетИсключение("Пользователь ИБ не идентифицирован");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
+
+КонецПроцедуры
+
+&Тест
+Процедура ТестДолжен_ЗапуститьСОткрытиемНавигационнойСсылкиIbsrv() Экспорт
+
+ // Дано
+ Исполнитель = Новый Тест_ИсполнительКоманд("run");
+ Исполнитель.СобратьВнешнююОбработку("epf/ЗакрытьПредприятие/ЗакрытьПредприятие.xml", "epf/ЗакрытьПредприятие.epf");
+ Исполнитель.УстановитьКонтекстПустаяИБ();
+ Исполнитель.ДобавитьПараметр("--execute", "$runnerRoot/epf/ЗакрытьПредприятие.epf");
+ Исполнитель.ДобавитьПараметр("--url", "e1cib/navigationpoint/startpage");
+ Исполнитель.ДобавитьФлаг("--ibsrv");
+
+ // Когда
+ Исполнитель.ВыполнитьКоманду();
+
+ // Тогда
+ Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Выполнение команды/действия в режиме 1С:Предприятие завершено.");
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытий
+
+Процедура ПередЗапускомТеста() Экспорт
+
+ НакопленныеВременныеФайлы = ВременныеФайлы.Файлы();
+
+КонецПроцедуры
+
+Процедура ПослеЗапускаТеста() Экспорт
+
+ ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/tests/xunits/update-dev.os b/tests/xunits/update-dev.os
index 32996eef..d94e632d 100644
--- a/tests/xunits/update-dev.os
+++ b/tests/xunits/update-dev.os
@@ -63,11 +63,6 @@
// Когда
Исполнитель.ВыполнитьКоманду();
- ЛогВыводаКоманды = СтрШаблон("Лог вывода команды:
- |%1", Исполнитель.ЛогКоманды().ВыводЛога());
- Сообщить(ЛогВыводаКоманды);
-
- //ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(Исполнитель.КаталогКоманды(), ".git"));
// Тогда
Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы");
@@ -101,12 +96,6 @@
// Когда
Исполнитель.ВыполнитьКоманду();
- ЛогВыводаКоманды = СтрШаблон("Лог вывода команды:
- |%1", Исполнитель.ЛогКоманды().ВыводЛога());
- Сообщить(ЛогВыводаКоманды);
-
- //ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(Исполнитель.КаталогКоманды(), ".git"));
-
// Тогда
Исполнитель.ОжидаемЧтоРавно(СокрЛП(Репозиторий.ПолучитьНастройку("core.quotePath")), "false", "Должно быть задано git config core.quotePath == false");
@@ -131,9 +120,6 @@
// Когда
Исполнитель.ВыполнитьКоманду();
- ЛогВыводаКоманды = СтрШаблон("Лог вывода команды:
- |%1", Исполнитель.ЛогКоманды().ВыводЛога());
- Сообщить(ЛогВыводаКоманды);
// Тогда
Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы");
@@ -158,16 +144,12 @@
// Когда
Исполнитель.ВыполнитьКоманду();
- ЛогВыводаКоманды = СтрШаблон("Лог вывода команды:
- |%1", Исполнитель.ЛогКоманды().ВыводЛога());
- Сообщить(ЛогВыводаКоманды);
// Тогда
Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы");
Исполнитель.ОжидаемЧтоВыводСодержит("Будет выполнена инкрементальная загрузка");
Исполнитель.ОжидаемЧтоВыводСодержит(ОбъединитьПути("Catalogs", "Справочник1.xml"));
-
Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников");
Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации БД завершено.");
@@ -185,9 +167,6 @@
// Когда
Исполнитель.ВыполнитьКоманду();
- ЛогВыводаКоманды = СтрШаблон("Лог вывода команды:
- |%1", Исполнитель.ЛогКоманды().ВыводЛога());
- Сообщить(ЛогВыводаКоманды);
// Тогда
Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibcmd платформы");
@@ -196,7 +175,6 @@
Исполнитель.ОжидаемЧтоВыводСодержит("ObjectModule.bsl");
Исполнитель.ОжидаемЧтоВыводСодержит(ОбъединитьПути("Catalogs", "Справочник1.xml"));
-
Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников");
Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации БД завершено.");
@@ -213,16 +191,12 @@
// Когда
Исполнитель.ВыполнитьКоманду();
- ЛогВыводаКоманды = СтрШаблон("Лог вывода команды:
- |%1", Исполнитель.ЛогКоманды().ВыводЛога());
- Сообщить(ЛогВыводаКоманды);
// Тогда
Исполнитель.ОжидаемЧтоВыводНеСодержит("Используется ibcmd платформы");
Исполнитель.ОжидаемЧтоВыводСодержит("Будет выполнена инкрементальная загрузка");
Исполнитель.ОжидаемЧтоВыводСодержит(ОбъединитьПути("Catalogs", "Справочник1.xml"));
-
Исполнитель.ОжидаемЧтоВыводСодержит("Информационная база обновлена из исходников");
Исполнитель.ОжидаемЧтоВыводСодержит("Обновление конфигурации БД завершено.");
@@ -296,6 +270,7 @@
ЗаписатьТекст(lastUploadedCommit, ПоследнийКоммит);
Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогИсходников);
+ Исполнитель.ВыгрузитьВФайлСостояниеКонфигурации(КаталогИсходников);
Если ИзмененияСКоммитом Тогда
ManagedApplicationModule = ОбъединитьПути(КаталогИсходников, "Ext", "ManagedApplicationModule.bsl");
diff --git "a/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os" "b/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os"
index 4a3ed034..c82bef68 100644
--- "a/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os"
+++ "b/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\222\321\213\320\262\320\276\320\264\320\233\320\276\320\263\320\260.os"
@@ -1,9 +1,18 @@
#Использовать tempfiles
-Перем ТекстовыйДокумент;
+#Область ОписаниеПеременных
+
+Перем ТекстовыйДокумент; // Экземпляр документа для хренения лога вывода.
+
+#КонецОбласти
#Область ПрограммныйИнтерфейс
+// Возвращает вывод лога
+//
+// Возвращаемое значение:
+// Строка - Сожержимое лога
+//
Функция ВыводЛога() Экспорт
Возврат ТекстовыйДокумент.ПолучитьТекст();
КонецФункции
@@ -16,6 +25,7 @@
Сообщение = СобытиеЛога.ПолучитьФорматированноеСообщение();
ТекстовыйДокумент.ДобавитьСтроку(Сообщение);
+ Консоль.ВывестиСтроку(Сообщение);
КонецПроцедуры
@@ -24,6 +34,10 @@
// Устанавливает свойство аппендера, заданное в конфигурационном файле
//
+// Параметры:
+// ИмяСвойства - Строка - Имя свойства
+// Значение - Строка, Число, Булево - Значение свойства
+//
Процедура УстановитьСвойство(Знач ИмяСвойства, Знач Значение) Экспорт
КонецПроцедуры // УстановитьСвойство()
diff --git "a/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os" "b/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os"
index ca0bc7aa..fb22b092 100644
--- "a/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os"
+++ "b/tests/xunits/utils/\320\232\320\273\320\260\321\201\321\201\321\213/\320\242\320\265\321\201\321\202_\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\232\320\276\320\274\320\260\320\275\320\264.os"
@@ -1,15 +1,17 @@
#Использовать "../../../.."
#Использовать cmdline
#Использовать ibcmdrunner
+#Использовать v8runner
#Использовать asserts
#Область ОписаниеПеременных
-Перем Команда;
-Перем Аргументы;
-Перем СпособВывода;
-Перем КаталогКоманды;
-Перем УправлениеИБ;
+Перем Команда; // Текущая команда приложения
+Перем Аргументы; // Аргументы команды приложения
+Перем СпособВывода; // Экземпляр вывода лога команды приложения
+Перем КаталогКоманды; // Каталог в котором выполняется команда
+Перем УправлениеИБ; // Экземпляр менеджера ibcmd
+Перем УровеньЛога; // Уровень логирования
#КонецОбласти
@@ -28,13 +30,14 @@
Аргументы.Добавить(ИмяФлага);
КонецПроцедуры
-Процедура ВыполнитьКоманду() Экспорт
+Функция ВыполнитьКоманду() Экспорт
СистемнаяИнформация = Новый СистемнаяИнформация;
ПараметрыСистемы.ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;
ДобавитьПараметр("--root", КаталогКоманды);
ДобавитьФлаг("--nocacheuse");
+ ДобавитьПараметр("--language", "ru");
МенеджерКомандПриложения.РегистраторКоманд(ПараметрыСистемы);
@@ -43,9 +46,21 @@
Парсер = Новый ПарсерАргументовКоманднойСтроки();
МенеджерКомандПриложения.ЗарегистрироватьКоманды(Парсер);
ПараметрыКоманды = Парсер.Разобрать(Аргументы);
- МенеджерКомандПриложения.ВыполнитьКоманду(Команда, ПараметрыКоманды.ЗначенияПараметров);
-КонецПроцедуры
+ Сообщить(">>>");
+ Сообщить("vrunner " + СтрСоединить(Аргументы, " "));
+ Попытка
+ Результат = МенеджерКомандПриложения.ВыполнитьКоманду(Команда, ПараметрыКоманды.ЗначенияПараметров);
+ Исключение
+ Сообщить("<<<");
+ ВызватьИсключение;
+ КонецПопытки;
+
+ Сообщить("<<<");
+
+ Возврат Результат;
+
+КонецФункции
Функция ЛогКоманды() Экспорт
Возврат СпособВывода;
@@ -90,6 +105,7 @@
КаталогПустойИБ = ОбъединитьПути(КаталогКоманды, "db-data");
УправлениеИБ = Новый УправлениеИБ;
+ УправлениеИБ.УстановитьПараметрыАвтономногоСервера(КаталогКоманды);
УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогПустойИБ);
УправлениеИБ.СоздатьИБИзФайлаВыгрузки("");
@@ -103,15 +119,19 @@
КаталогИБ = ОбъединитьПути(КаталогКоманды, "db-data");
УправлениеИБ = Новый УправлениеИБ;
+ УправлениеИБ.УстановитьПараметрыАвтономногоСервера(КаталогКоманды);
УправлениеИБ.УстановитьПараметрыФайловойИБ(КаталогИБ);
УправлениеИБ.СоздатьИБИзФайловКонфигурации(Каталог);
- УправлениеИБ.ВыгрузитьВФайлСостояниеКонфигурации(Каталог);
СтрокаСоединения = СтрШаблон("/F""%1""", КаталогИБ);
ДобавитьПараметр("--ibconnection", СтрокаСоединения);
КонецПроцедуры
+Процедура ВыгрузитьВФайлСостояниеКонфигурации(Каталог) Экспорт
+ УправлениеИБ.ВыгрузитьВФайлСостояниеКонфигурации(Каталог);
+КонецПроцедуры
+
Процедура СоздатьПустоеРасширение(ИмяРасширения, ПрефиксИмен) Экспорт
УправлениеИБ.СоздатьРасширение(ИмяРасширения, ПрефиксИмен);
КонецПроцедуры
@@ -120,6 +140,33 @@
УправлениеИБ.ЗагрузитьКонфигурациюИзФайлов(КаталогИсходников, ИмяРасширения);
КонецПроцедуры
+Процедура ОбновитьКонфигурациюБазыДанных(ИмяРасширения = "") Экспорт
+ УправлениеИБ.ОбновитьКонфигурациюБазыДанных(ИмяРасширения);
+КонецПроцедуры
+
+Процедура УстановитьУровеньЛога(Знач Уровень) Экспорт
+ УровеньЛога = Уровень;
+КонецПроцедуры
+
+Процедура СобратьВнешнююОбработку(Знач КаталогИсходников, Знач ПутьКФайлуОбработки) Экспорт
+
+ Если ФС.ФайлСуществует(ПутьКФайлуОбработки) Тогда
+ Возврат;
+ КонецЕсли;
+
+ Конфигуратор = Новый УправлениеКонфигуратором();
+ КаталогВременнойИБ = ВременныеФайлы.СоздатьКаталог();
+ Конфигуратор.КаталогСборки(КаталогВременнойИБ);
+
+ Параметры = Конфигуратор.ПолучитьПараметрыЗапуска();
+ Параметры.Добавить("/LoadExternalDataProcessorOrReportFromFiles");
+ Параметры.Добавить(ОбщиеМетоды.ОбернутьПутьВКавычки(КаталогИсходников));
+ Параметры.Добавить(ОбщиеМетоды.ОбернутьПутьВКавычки(ПутьКФайлуОбработки));
+
+ Конфигуратор.ВыполнитьКоманду(Параметры);
+
+КонецПроцедуры
+
#КонецОбласти
#Область ОбработчикиСобытий
@@ -133,6 +180,7 @@
КаталогКоманды = ВременныеФайлы.СоздатьКаталог();
СпособВывода = Новый Тест_ВыводЛога();
+ УровеньЛога = УровниЛога.Информация;
КонецПроцедуры
@@ -141,8 +189,13 @@
#Область СлужебныеПроцедурыИФункции
Процедура ДобавитьСпособВывода(МенеджерКомандПриложения)
+
Лог = МенеджерКомандПриложения.Лог();
+
+ Лог.Закрыть();
Лог.ДобавитьСпособВывода(СпособВывода);
+ Лог.УстановитьУровень(УровеньЛога);
+
КонецПроцедуры
#КонецОбласти
diff --git a/tests/xunits/vanessa.os b/tests/xunits/vanessa.os
new file mode 100644
index 00000000..a143f8d0
--- /dev/null
+++ b/tests/xunits/vanessa.os
@@ -0,0 +1,85 @@
+#Использовать asserts
+#Использовать tempfiles
+#Использовать "utils"
+#Использовать "../.."
+
+#Область ОписаниеПеременных
+
+Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+&Тест
+Процедура ТестДолжен_ВыполнитьФичуПаузаIbsrv() Экспорт
+
+ // Дано
+ Исполнитель = Новый Тест_ИсполнительКоманд("vanessa");
+
+ КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf");
+ Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf);
+ Исполнитель.ОбновитьКонфигурациюБазыДанных();
+
+ ФайлНастроек = Исполнитель.ПутьТестовыхДанных("feature/vb-conf.json");
+ ПутьКФичам = Исполнитель.ПутьТестовыхДанных("feature/Пауза");
+
+ Исполнитель.ДобавитьПараметр("--vanessasettings", ФайлНастроек);
+ Исполнитель.ДобавитьПараметр("--path", ПутьКФичам);
+ Исполнитель.ДобавитьФлаг("--ibsrv");
+
+ // Когда
+ Исполнитель.ВыполнитьКоманду();
+
+ // Тогда
+ Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Все фичи/сценарии выполнены!");
+
+КонецПроцедуры
+
+&Тест
+Процедура ТестДолжен_ВыполнитьНереализованнуюФичуIbsrv() Экспорт
+
+ // Дано
+ Исполнитель = Новый Тест_ИсполнительКоманд("vanessa");
+
+ КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf");
+ Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf);
+ Исполнитель.ОбновитьКонфигурациюБазыДанных();
+
+ ФайлНастроек = Исполнитель.ПутьТестовыхДанных("feature/vb-conf.json");
+ ПутьКФичам = Исполнитель.ПутьТестовыхДанных("feature/Без реализации шага");
+
+ Исполнитель.ДобавитьПараметр("--vanessasettings", ФайлНастроек);
+ Исполнитель.ДобавитьПараметр("--path", ПутьКФичам);
+ Исполнитель.ДобавитьФлаг("--ibsrv");
+
+ // Когда
+ Исполнитель.ВыполнитьКоманду();
+
+ // Тогда
+ Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Все фичи/сценарии выполнены!");
+
+ // В текущем релизе add нет нужного вывода.
+ // Исполнитель.ОжидаемЧтоВыводСодержит("Пустой адрес снипета у шага: Когда я выполняю несуществующий шаг");
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытий
+
+Процедура ПередЗапускомТеста() Экспорт
+
+ НакопленныеВременныеФайлы = ВременныеФайлы.Файлы();
+
+КонецПроцедуры
+
+Процедура ПослеЗапускаТеста() Экспорт
+
+ ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/tests/xunits/xunit.os b/tests/xunits/xunit.os
new file mode 100644
index 00000000..1681c316
--- /dev/null
+++ b/tests/xunits/xunit.os
@@ -0,0 +1,90 @@
+#Использовать asserts
+#Использовать tempfiles
+#Использовать "utils"
+#Использовать "../.."
+
+#Область ОписаниеПеременных
+
+Перем НакопленныеВременныеФайлы; // фиксация накопленных времнных файлов для сброса
+
+#КонецОбласти
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+&Тест
+Процедура ТестДолжен_ВыполнитьУспешноеТестированиеПроектаIbsrv() Экспорт
+
+ // Дано
+ ИмяРасширения = "ТестOK";
+
+ Исполнитель = Новый Тест_ИсполнительКоманд("xunit");
+
+ КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf");
+ Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf);
+ Исполнитель.ОбновитьКонфигурациюБазыДанных();
+
+ КаталогSrc = Исполнитель.ПутьТестовыхДанных("xdd_cfe_OK");
+ Исполнитель.СоздатьРасширениеИзФайлов(ИмяРасширения, КаталогSrc);
+ Исполнитель.ОбновитьКонфигурациюБазыДанных(ИмяРасширения);
+
+ Исполнитель.ДобавитьПараметр(ИмяРасширения);
+ Исполнитель.ДобавитьФлаг("--config-tests");
+ Исполнитель.ДобавитьПараметр("--xddExitCodePath", "./exitCode.txt");
+ Исполнитель.ДобавитьФлаг("--ibsrv");
+
+ // Когда
+ Исполнитель.ВыполнитьКоманду();
+
+ // Тогда
+ Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Все тесты выполнены!");
+
+КонецПроцедуры
+
+&Тест
+Процедура ТестДолжен_ВыполнитьОшибочноеТестированиеПроектаIbsrv() Экспорт
+
+ // Дано
+ ИмяРасширения = "ТестFAIL";
+
+ Исполнитель = Новый Тест_ИсполнительКоманд("xunit");
+
+ КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf");
+ Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf);
+ Исполнитель.ОбновитьКонфигурациюБазыДанных();
+
+ КаталогSrc = Исполнитель.ПутьТестовыхДанных("xdd_cfe_FAIL");
+ Исполнитель.СоздатьРасширениеИзФайлов(ИмяРасширения, КаталогSrc);
+ Исполнитель.ОбновитьКонфигурациюБазыДанных(ИмяРасширения);
+
+ // Когда
+ Исполнитель.ДобавитьПараметр(ИмяРасширения);
+ Исполнитель.ДобавитьФлаг("--config-tests");
+ Исполнитель.ДобавитьПараметр("--xddExitCodePath", "./exitCode.txt");
+ Исполнитель.ДобавитьФлаг("--ibsrv");
+
+ // Тогда
+ Ожидаем.Что(Исполнитель)
+ .Метод("ВыполнитьКоманду")
+ .ВыбрасываетИсключение("Часть тестов упала!");
+ Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область ОбработчикиСобытий
+
+Процедура ПередЗапускомТеста() Экспорт
+
+ НакопленныеВременныеФайлы = ВременныеФайлы.Файлы();
+
+КонецПроцедуры
+
+Процедура ПослеЗапускаТеста() Экспорт
+
+ ВременныеФайлы.УдалитьНакопленныеВременныеФайлы(НакопленныеВременныеФайлы);
+
+КонецПроцедуры
+
+#КонецОбласти
diff --git a/vanessa-runner-schema.json b/vanessa-runner-schema.json
index 09427eab..f02684dd 100644
--- a/vanessa-runner-schema.json
+++ b/vanessa-runner-schema.json
@@ -1096,6 +1096,13 @@
"type": "boolean",
"default": false
},
+ "--ibsrv": {
+ "description": "Запуск команды с использованием утилиты ibsrv",
+ "id": "/properties/xunit/--ibsrv",
+ "title": "The --ibsrv Schema",
+ "type": "boolean",
+ "default": false
+ },
"--ibconnection": {
"description": "Строка подключения к БД (/FfilePath или /SserverPath)\n\tНапример, для файловых баз --ibconnection /FC:\\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1\n\tИли для серверных баз --ibconnection /Sservername\\basename",
"id": "/properties/xunit/--ibconnection",
@@ -1272,6 +1279,13 @@
"type": "boolean",
"default": false
},
+ "--ibsrv": {
+ "description": "Запуск команды с использованием утилиты ibsrv",
+ "id": "/properties/vanessa/--ibsrv",
+ "title": "The --ibsrv Schema",
+ "type": "boolean",
+ "default": false
+ },
"--ibconnection": {
"description": "Строка подключения к БД (/FfilePath или /SserverPath)\n\tНапример, для файловых баз --ibconnection /FC:\\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1\n\tИли для серверных баз --ibconnection /Sservername\\basename",
"id": "/properties/vanessa/--ibconnection",
@@ -1434,6 +1448,13 @@
"type": "string",
"default": ""
},
+ "--ibsrv": {
+ "description": "Запуск команды с использованием утилиты ibsrv",
+ "id": "/properties/run/--ibsrv",
+ "title": "The --ibsrv Schema",
+ "type": "boolean",
+ "default": false
+ },
"--ibconnection": {
"description": "Строка подключения к БД (/FfilePath или /SserverPath)\n\tНапример, для файловых баз --ibconnection /FC:\\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1\n\tИли для серверных баз --ibconnection /Sservername\\basename",
"id": "/properties/run/--ibconnection",
@@ -1582,6 +1603,13 @@
"type": "string",
"default": ""
},
+ "--ibsrv": {
+ "description": "Запуск команды с использованием утилиты ibsrv",
+ "id": "/properties/designer/--ibsrv",
+ "title": "The --ibsrv Schema",
+ "type": "boolean",
+ "default": false
+ },
"--ibconnection": {
"description": "Строка подключения к БД (/FfilePath или /SserverPath)\n\tНапример, для файловых баз --ibconnection /FC:\\base1 или --ibconnection /F./base1 или --ibconnection /Fbase1\n\tИли для серверных баз --ibconnection /Sservername\\basename",
"id": "/properties/designer/--ibconnection",
@@ -8638,6 +8666,13 @@
"type": "boolean",
"default": false
},
+ "--ibsrv": {
+ "description": "Запуск команды с использованием утилиты ibsrv",
+ "id": "/properties/default/--ibsrv",
+ "title": "The --ibsrv Schema",
+ "type": "boolean",
+ "default": false
+ },
"--path": {
"description": "Путь для запуска тестов\nМожно указывать как каталог с фичами, так и конкретную фичу",
"id": "/properties/default/--path",