Skip to content

Commit

Permalink
feat: формирование единой точки запуска тестов по тексту модуля
Browse files Browse the repository at this point in the history
  • Loading branch information
alkoleft committed Dec 25, 2024
1 parent 656213b commit ce8fa27
Show file tree
Hide file tree
Showing 10 changed files with 502 additions and 90 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

#Область СлужебныйПрограммныйИнтерфейс

Функция СкомпилироватьВнешнююОбработку(ТекстМодуляОбъект = "", Знач ТекстМодуляФормы = "") Экспорт
Функция СкомпилироватьВнешнююОбработку(ТекстМодуляОбъект = "", Знач ТекстМодуляОбычнойФормы = "", Знач ТекстМодуляУправляемойФормы = "") Экспорт

// Для сборки используется утилита v8unpack - https://github.com/e8tools/v8unpack

Expand All @@ -45,8 +45,9 @@
// Модуль формы
ИмяФайлаФормы = ЮТФайлы.ОбъединитьПути(КаталогФайловОбработки, ИдентификаторФормы);
ДанныеФормы = ЮТФайлы.ДанныеТекстовогоФайла(ИмяФайлаФормы);
ТекстМодуляФормы = СтрЗаменить(ТекстМодуляФормы, """", """""");
ДанныеФормы = СтрЗаменить(ДанныеФормы, "MODULE_PLACEHOLDER", ТекстМодуляФормы);
ТекстМодуляОбычнойФормы = СтрЗаменить(ТекстМодуляОбычнойФормы, """", """""");
ДанныеФормы = СтрЗаменить(ДанныеФормы, "MODULE_PLACEHOLDER", ТекстМодуляОбычнойФормы);

ЮТФайлы.ЗаписатьТекстВФайла(ИмяФайлаФормы, ДанныеФормы);

ИмяФайла = СобратьОбработку(РабочийКаталог);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,29 @@

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

Функция СоздатьВнешнююОбработку(Знач ОписаниеМодуля) Экспорт

ТекстМодуляОбъект = ?(ОписаниеМодуля.Сервер, ОписаниеМодуля.Текст, "");
ТекстМодуляОбычнойФормы = ?(ОписаниеМодуля.КлиентОбычное, ОписаниеМодуля.Текст, "");
ТекстМодуляУправляемойФормы = ?(ОписаниеМодуля.КлиентУправляемое, ОписаниеМодуля.Текст, "");

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

Возврат ВнешниеОбработки.Подключить(ПоместитьВоВременноеХранилище(Данные));

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

Функция СценарииВнешнейОбработки(Знач ИмяОбработки) Экспорт

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

Возврат ЮТЧитательСлужебный.ИсполняемыеСценарииОбъекта(Обработка, МетаданныеОбработки);

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

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -104,10 +104,42 @@

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

Процедура ВыполнитьТестыВременногоМодуля(ПараметрыЗапуска, ОписаниеМодуля, ИменаМетодов, ОбработчикЗавершения) Экспорт

ПараметрыИсполнения = ПараметрыИсполнения();
ПараметрыИсполнения.ПараметрыЗапуска = ПараметрыЗапуска;
ПараметрыИсполнения.Вставить("ОписаниеМодуля", ОписаниеМодуля);
ПараметрыИсполнения.Вставить("ИмяВнешнейОбработки", "");

ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикИнициализация");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикСоздатьВнешнююОбработку");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗагрузитьТестыВнешнейОбработки");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикСформироватьИсполняемыеТесты");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикПослеФормированияИсполняемыхНаборовТестов");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикРазрешитьЗависимости");
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикВыполнитьТестирование");
ПараметрыИсполнения.Цепочка.Добавить(ОбработчикЗавершения);

ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыИсполнения);

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ОписаниеВременногоМодуля() Экспорт

Описание = Новый Структура;
Описание.Вставить("Текст", "");
Описание.Вставить("КлиентУправляемое", Ложь);
Описание.Вставить("КлиентОбычное", Ложь);
Описание.Вставить("Сервер", Ложь);

Возврат Описание;

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

Функция ПараметрыИсполнения() Экспорт

Параметры = ЮТАсинхроннаяОбработкаСлужебныйКлиент.ЦепочкаАсинхроннойОбработки();
Expand Down Expand Up @@ -190,7 +222,7 @@

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

Процедура ОбработчикПослеФормированияИсполняемыхНаборовТестов(_, ДополнительныеПараметры) Экспорт
Процедура ОбработчикПослеФормированияИсполняемыхНаборовТестов(_, ДополнительныеПараметры) Экспорт

ЮТСобытияСлужебный.ПослеФормированияИсполняемыхНаборовТестов(ДополнительныеПараметры.ИсполняемыеТестовыеМодули);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ДополнительныеПараметры);
Expand Down Expand Up @@ -285,6 +317,27 @@
ВызватьИсключение ТекстОшибки;
КонецПроцедуры

Процедура ОбработчикСоздатьВнешнююОбработку(_, ПараметрыИсполнения) Экспорт

ЮТЛогирование.Информация("Создание внешней обработки");
ПараметрыИсполнения.ИмяВнешнейОбработки = ЮТИсполнительСлужебныйВызовСервера.СоздатьВнешнююОбработку(ПараметрыИсполнения.ОписаниеМодуля);
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыИсполнения);

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

Процедура ОбработчикЗагрузитьТестыВнешнейОбработки(_, ПараметрыИсполнения) Экспорт

ЮТФильтрацияСлужебный.УстановитьКонтекст(Новый Структура("filter", Новый Структура));//("tests", ЮТКоллекции.ЗначениеВМассиве(Метод))));

СценарцииСервер = ЮТИсполнительСлужебныйВызовСервера.СценарииВнешнейОбработки(ПараметрыИсполнения.ИмяВнешнейОбработки);
СценарцииКлиента = ЮТИсполнительСлужебныйВызовСервера.СценарииВнешнейОбработки(ПараметрыИсполнения.ИмяВнешнейОбработки);

ТестовыеМодули = ЮТКоллекции.ЗначениеВМассиве(СценарцииСервер, СценарцииКлиента);

ЮТАсинхроннаяОбработкаСлужебныйКлиент.ВызватьСледующийОбработчик(ПараметрыИсполнения, ТестовыеМодули);

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

#КонецОбласти

Процедура ДобавитьОбработчикЦепочки(ПараметрыИсполнения, ИмяМетода)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//

// Это разработка @zeegin(https://github.com/zeegin) aka Ingvar

#Область СлужебныйПрограммныйИнтерфейс

// Загружает реактивное приложение как в веб клиенте так и в тонком
//
// Параметры:
// ДвоичныеДанные - ДвоичныеДанные - Реактивное приложение, например полученное из макета
// УникальныйИдентификатор - УникальныйИдентификатор - Для управления временем жизни временного хранилища
//
// Возвращаемое значение:
// Строка - Адрес или данные для html документа
Функция ЗагрузитьПриложение(ДвоичныеДанные, УникальныйИдентификатор) Экспорт

Если ЮТОкружение.ОписаниеОкружения().ВебКлиент Тогда
Возврат ПолучитьСтрокуИзДвоичныхДанных(ДвоичныеДанные);
Иначе
Возврат ПолучитьНавигационнуюСсылкуИнформационнойБазы() + "/" + ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
КонецЕсли;

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

Функция ЗагрузитьПриложениеИзМакета(ИмяМакета, УникальныйИдентификатор) Экспорт

Данные = ПолучитьОбщийМакет(ИмяМакета);
Возврат ЗагрузитьПриложение(Данные, УникальныйИдентификатор);

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

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="beec9565-1322-4f08-af5a-395edab2fb21">
<name>ЮТРеактивныйСервер</name>
<synonym>
<key>ru</key>
<value>Реактивный сервер</value>
</synonym>
<server>true</server>
</mdclass:CommonModule>
1 change: 1 addition & 0 deletions exts/yaxunit/src/Configuration/Configuration.mdo
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@
<commonModules>CommonModule.ЮТРазрешениеЗависимостейСлужебныйВызовСервера</commonModules>
<commonModules>CommonModule.ЮТРазрешениеЗависимостейСлужебныйКлиент</commonModules>
<commonModules>CommonModule.ЮТРеактивныйКлиент</commonModules>
<commonModules>CommonModule.ЮТРеактивныйСервер</commonModules>
<commonModules>CommonModule.ЮТРегистрацияОшибок</commonModules>
<commonModules>CommonModule.ЮТРегистрацияОшибокСлужебный</commonModules>
<commonModules>CommonModule.ЮТСлужебныйПовторногоИспользования</commonModules>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2024 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//

#Область ОбработчикиСобытий

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

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

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

#КонецОбласти
Loading

0 comments on commit ce8fa27

Please sign in to comment.