Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

467 / запуск тестов из внешних обработок #471

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@
ДанныеФормы = СтрЗаменить(ДанныеФормы, "MODULE_PLACEHOLDER", ТекстМодуляФормы);
ЮТФайлы.ЗаписатьТекстВФайла(ИмяФайлаФормы, ДанныеФормы);

СобратьОбработку(РабочийКаталог);
ИмяФайла = СобратьОбработку(РабочийКаталог);

Возврат ЮТФайлы.ОбъединитьПути(КаталогСборки, "out.epf");
Возврат ИмяФайла;

КонецФункции

Expand Down Expand Up @@ -89,17 +89,22 @@

КонецПроцедуры

Процедура СобратьОбработку(РабочийКаталог)
Функция СобратьОбработку(РабочийКаталог)

Если ЮТОкружение.ЭтоWindows() Тогда
Команда = "build-epf.bat";
Иначе
Команда = "/bin/bash build-epf.sh"; // BSLLS:UsingHardcodePath-off
КонецЕсли;

ИмяФайла = ЮТФайлы.ОбъединитьПути(РабочийКаталог, Новый УникальныйИдентификатор()) + ".epf";
Команда = Команда + " " + ИмяФайла;

ВыполнитьКомандуСистемы(РабочийКаталог, Команда, "Сборка обработки");

КонецПроцедуры
Возврат ИмяФайла;

КонецФункции

Процедура ВыполнитьКомандуСистемы(РабочийКаталог, Знач Команда, Описание)

Expand Down Expand Up @@ -131,15 +136,14 @@

Функция ВыполнитьКомандуОСБезПоказаЧерногоОкна(ТекстКоманды, РабочийКаталог) Экспорт

#Если НЕ ВебКлиент Тогда

#Если НЕ ВебКлиент Тогда
WshShell = Новый COMОбъект("WScript.Shell"); // BSLLS:UsingObjectNotAvailableUnix-off
WshShell.CurrentDirectory = РабочийКаталог;
Рез = WshShell.Run(ТекстКоманды, 0, -1);

Возврат Рез;
#КонецЕсли
#КонецЕсли

КонецФункции

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@
ИсполняемыеТестовыеМодули = Новый Массив;

Для Каждого ТестовыйМодуль Из ТестовыеМодули Цикл
ИсполняемыйТестовыйМодуль = ИсполняемыйТестовыйМодуль(ТестовыйМодуль);
ИсполняемыйТестовыйМодуль = ЮТИсполнительСлужебныйКлиентСервер.ИсполняемыйТестовыйМодуль(ТестовыйМодуль);
ИсполняемыеТестовыеМодули.Добавить(ИсполняемыйТестовыйМодуль);
КонецЦикла;

Expand Down Expand Up @@ -294,125 +294,6 @@

КонецПроцедуры

Функция ИсполняемыйТестовыйМодуль(ТестовыйМодуль)

ИсполняемыйТестовыйМодуль = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль);

КонтекстыПриложения = ЮТФабрикаСлужебный.КонтекстыПриложения();
КонтекстыМодуля = ЮТФабрикаСлужебный.КонтекстыМодуля(ТестовыйМодуль.Метаданные);
КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения();

ИсполняемыйТестовыйМодуль.НаборыТестов = ИсполняемыеНаборыМодуля(ТестовыйМодуль);

Для Каждого Набор Из ИсполняемыйТестовыйМодуль.НаборыТестов Цикл

КонтекстИсполнения = ЮТФабрикаСлужебный.КонтекстИсполнения(Набор.Режим);

Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда
ОшибкаКонтекста = "Неподдерживаемый режим запуска";
ИначеЕсли КонтекстыМодуля.Найти(Набор.Режим) = Неопределено Тогда
ОшибкаКонтекста = "Модуль не доступен в этом контексте";
ИначеЕсли КонтекстИсполнения <> КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда
ОшибкаКонтекста = "Неизвестный контекст/режим исполнения";
Иначе
ОшибкаКонтекста = Неопределено;
КонецЕсли;

Если ОшибкаКонтекста <> Неопределено Тогда
Набор.Выполнять = Ложь;
ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуРежимаВыполнения(Набор, ОшибкаКонтекста);
Для Каждого Тест Из Набор.Тесты Цикл
ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуРежимаВыполнения(Тест, ОшибкаКонтекста);
КонецЦикла;
КонецЕсли;

КонецЦикла;

Возврат ИсполняемыйТестовыйМодуль;

КонецФункции

Функция ИсполняемыеНаборыМодуля(ТестовыйМодуль)

Результат = Новый Массив();

Для Каждого ТестовыйНабор Из ТестовыйМодуль.НаборыТестов Цикл

НаборыКонтекстов = Новый Структура;

ТестыНабора = ЮТКоллекции.ЗначениеСтруктуры(ТестовыйНабор, "Тесты", Новый Массив());
ОбработатьОшибкиЧтенияНабора(ТестовыйНабор, ТестовыйМодуль);

Для Каждого Тест Из ТестыНабора Цикл

Для Каждого Контекст Из Тест.КонтекстВызова Цикл

Если НЕ НаборыКонтекстов.Свойство(Контекст) Тогда
ИсполняемыйНабор = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоНабораТестов(ТестовыйНабор);
ИсполняемыйНабор.Режим = Контекст;
НаборыКонтекстов.Вставить(Контекст, ИсполняемыйНабор);
Иначе
ИсполняемыйНабор = НаборыКонтекстов[Контекст];
КонецЕсли;

ИсполняемыйТест = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоТеста(Тест, Контекст, ТестовыйМодуль);

Если Тест.Свойство("Ошибки") И Тест.Ошибки.Количество() > 0 Тогда
ИсполняемыйТест.Ошибки = ЮТКоллекции.СкопироватьМассив(Тест.Ошибки);
ИсполняемыйТест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();
ИсполняемыйТест.Длительность = 0;
КонецЕсли;

ИсполняемыйНабор.Тесты.Добавить(ИсполняемыйТест);

КонецЦикла;

КонецЦикла;

Если НаборыКонтекстов.Количество() Тогда

Для Каждого Элемент Из НаборыКонтекстов Цикл
Результат.Добавить(Элемент.Значение);
КонецЦикла;

КонецЕсли;

КонецЦикла;

Возврат Результат;

КонецФункции

Процедура ОбработатьОшибкиЧтенияНабора(Набор, Модуль)

ТестыНабора = ЮТКоллекции.ЗначениеСтруктуры(Набор, "Тесты", Новый Массив());
Ошибки = ЮТКоллекции.ЗначениеСтруктуры(Набор, "Ошибки", Новый Массив());

Если Ошибки.Количество() > 0 Тогда
Для Каждого Ошибка Из Ошибки Цикл

Если Ошибка.ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().ЧтенияТестов Тогда
Тест = ОписаниеТестаСОшибкойЧтения(Модуль, Ошибка);
ТестыНабора.Добавить(Тест);
Прервать;
КонецЕсли;

КонецЦикла;
КонецЕсли;

КонецПроцедуры

Функция ОписаниеТестаСОшибкойЧтения(Модуль, Ошибка)

Контексты = ЮТФабрикаСлужебный.КонтекстыМодуля(Модуль.Метаданные);
Тест = ЮТФабрикаСлужебный.ОписаниеТеста("ИсполняемыеСценарии", "ИсполняемыеСценарии", Контексты);
Тест.Вставить("Ошибки", Новый Массив);
Тест.Ошибки.Добавить(ЮТКоллекции.СкопироватьСтруктуру(Ошибка));

Возврат Тест;

КонецФункции

Процедура ПоказатьОтчет(РезультатыТестирования, Параметры)

Данные = Новый Структура("РезультатыТестирования, ПараметрыЗапуска", РезультатыТестирования, Параметры);
Expand Down
Loading
Loading