Skip to content

Commit

Permalink
feat: запуск тестов из внешних обработок
Browse files Browse the repository at this point in the history
  • Loading branch information
alkoleft committed Dec 18, 2024
1 parent a6f008a commit 075f578
Show file tree
Hide file tree
Showing 18 changed files with 456 additions and 229 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@
ИсполняемыеТестовыеМодули = Новый Массив;

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

КонецЦикла;

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

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

КонецЕсли;

КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

0 comments on commit 075f578

Please sign in to comment.