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

Дополнения по загрузке тестов из расширений #881

Merged
merged 16 commits into from
Aug 21, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
e47a6f4
Merge pull request #2 from vanessa-opensource/develop
yukon39 May 19, 2021
4974407
Добавлена поддержка запуска тестов из общих модулей
yukon39 May 19, 2021
406b3e6
Добавлен плагин-загрузчик тестов из расширения
yukon39 May 19, 2021
30fdbb6
Добавлена передача контекста ядра в тестовый метод общего модуля
yukon39 May 26, 2021
6c9f210
Исправлена передача мутабельного значения на сервер
yukon39 Jun 3, 2021
0001fe2
Добавлено получение списка тестов по всем метаданным конфигурации
yukon39 Jun 3, 2021
8c15c89
Исправлено форматирование кода
yukon39 Jun 3, 2021
874d1ca
формат 8.3.10
artbear Aug 14, 2021
4de0f35
возможность указания отключения функциональности плагина
artbear Aug 15, 2021
865434d
еще исправления из-за новой сигнатуры
artbear Aug 15, 2021
a32a978
новые экспортные методы
artbear Aug 15, 2021
6316e16
еще исправления из-за новой сигнатуры
artbear Aug 15, 2021
5865c44
bdd новые экспортные методы
artbear Aug 15, 2021
35f140a
внесенная рантайм-ошибка
artbear Aug 21, 2021
a6cc6ed
Показ списка активных расширений
artbear Aug 21, 2021
2629210
Тестовое расширение ТестЗагрузкиТестовИзРасширения
artbear Aug 21, 2021
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 @@ -12,7 +12,7 @@
// Структура - структура-результат
//
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции

Expand All @@ -27,7 +27,8 @@

&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner");
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Перем ПутьКФайлуПолный Экспорт;// в эту переменную будет установлен правильный клиентский путь к текущему файлу

// { Plugin interface
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт
Результат = Новый Структура;
Результат.Вставить("Тип", ВозможныеТипыПлагинов.Загрузчик);
Результат.Вставить("Идентификатор", Метаданные().Имя);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции

Expand All @@ -13,7 +13,8 @@

&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner");
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Перем ПутьКФайлуПолный Экспорт;// в эту переменную будет установлен правильный клиентский путь к текущему файлу

// { Plugin interface
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт
Результат = Новый Структура;
Результат.Вставить("Тип", ВозможныеТипыПлагинов.Утилита);
Результат.Вставить("Идентификатор", Метаданные().Имя);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

// { Plugin interface
&НаКлиенте
Функция ОписаниеПлагина(ВозможныеТипыПлагинов) Экспорт
Функция ОписаниеПлагина(КонтекстЯдра, ВозможныеТипыПлагинов) Экспорт
Возврат ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов);
КонецФункции

Expand All @@ -13,7 +13,8 @@

&НаСервере
Функция ОписаниеПлагинаНаСервере(ВозможныеТипыПлагинов)
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(ВозможныеТипыПлагинов);
КонтекстЯдраНаСервере = ВнешниеОбработки.Создать("xddTestRunner");
Возврат ЭтотОбъектНаСервере().ОписаниеПлагина(КонтекстЯдраНаСервере, ВозможныеТипыПлагинов);
КонецФункции
// } Plugin interface

Expand Down
75 changes: 74 additions & 1 deletion epf/bddRunner/bddRunner/Ext/ObjectModule.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
Перем ЭтоLinux Экспорт;
Перем РазницаВМилисекундахМеждуЮниксИНачалЭпохи;

Перем КешРежимСовместимости;
Перем КешВерсияРежимСовместимости;

Функция ПолучитьВерсиюОбработки(ДобавлятьНазвание = Истина, ТолькоЦифры = Ложь) Экспорт

Версия = "6.7.0";
Expand Down Expand Up @@ -50,7 +53,10 @@
Для каждого КлючЗначение Из Плагины Цикл
Плагин = Плагин(КлючЗначение.Ключ);
Плагин.Инициализация(ЭтотОбъект);
ОписаниеПлагина = Плагин.ОписаниеПлагина(ТипыПлагинов);
ОписаниеПлагина = Плагин.ОписаниеПлагина(ЭтотОбъект, ТипыПлагинов);
Если ОписаниеПлагина = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ОписаниеПлагина.Тип = ТипПлагина Тогда
Результат.Добавить(ОписаниеПлагина);
КонецЕсли;
Expand Down Expand Up @@ -2233,6 +2239,73 @@

// }

#Область Версии_и_РежимСовместимости

Функция ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(Версия1, Версия2) Экспорт
Массив1 = РазложитьСтрокуВМассивПодстрок(Версия1, ".");
Массив2 = РазложитьСтрокуВМассивПодстрок(Версия2, ".");

Версия1БольшеИлиРавно = Истина;
Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл
Элем1 = Массив1.Получить(Ккк);
Элем2 = Массив2.Получить(Ккк);

Если Число(Элем2) > Число(Элем1) Тогда
Версия1БольшеИлиРавно = Ложь;
ИначеЕсли Число(Элем2) < Число(Элем1) Тогда
Прервать;
КонецЕсли;
КонецЦикла;

Возврат Версия1БольшеИлиРавно;
КонецФункции

Функция ПодходящийРежимСовместимостиПлатформы(Знач НеобходимаяВерсияПриложения) Экспорт

СистемнаяИнформация = Новый СистемнаяИнформация;
Если Не ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, НеобходимаяВерсияПриложения) Тогда
Возврат Ложь;
КонецЕсли;

ВерсияРежимаСовместимости = ВерсияРежимаСовместимости();

Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(ВерсияРежимаСовместимости, НеобходимаяВерсияПриложения);

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

Функция ВерсияРежимаСовместимости(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт

Если Не ЗначениеЗаполнено(КешВерсияРежимСовместимости) Тогда
РежимСовместимостиВерсия = СтрЗаменить(РежимСовместимости(ЗначениеПоУмолчанию), "Версия", "");
КешВерсияРежимСовместимости = СтрЗаменить(РежимСовместимостиВерсия, "_", ".");
КонецЕсли;

Возврат КешВерсияРежимСовместимости;

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

Функция РежимСовместимости(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт

Если Не ЗначениеЗаполнено(КешРежимСовместимости) Тогда

Если ЗначениеПоУмолчанию = Неопределено Тогда
ЗначениеПоУмолчанию = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать;;
КонецЕсли;

Попытка
КешРежимСовместимости = Вычислить("Метаданные.РежимСовместимости");
Исключение
КешРежимСовместимости = ЗначениеПоУмолчанию;
КонецПопытки;

КонецЕсли;

Возврат КешРежимСовместимости;

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

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

СтатусыРезультатаТестирования = Новый Структура;
СтатусыРезультатаТестирования.Вставить("ОшибкаПроверки", "Failed");
СтатусыРезультатаТестирования.Вставить("НеизвестнаяОшибка", "Broken");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@
&НаКлиенте
Перем КешРежимСовместимости;

&НаКлиенте
Перем КешВерсияРежимСовместимости;

&НаКлиенте
Перем СчетчикШаговБезТаймера, МаксСчетчикШаговБезТаймера;

Expand Down Expand Up @@ -4316,7 +4319,7 @@
Массив2 = РазложитьСтрокуВМассивПодстрокБезКонтекста(Версия2, ".");

Версия1БольшеИлиРавно = Истина;
Для Ккк = 0 По Массив1.Количество() - 1 Цикл
Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл
Элем1 = Массив1.Получить(Ккк);
Элем2 = Массив2.Получить(Ккк);

Expand All @@ -4337,6 +4340,20 @@

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

&НаКлиенте
Функция ПодходящийРежимСовместимостиПлатформыКлиент(Знач НеобходимаяВерсияПриложения) Экспорт

СистемнаяИнформация = Новый СистемнаяИнформация;
Если Не ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(СистемнаяИнформация.ВерсияПриложения, НеобходимаяВерсияПриложения) Тогда
Возврат Ложь;
КонецЕсли;

ВерсияРежимаСовместимости = ВерсияРежимаСовместимостиКлиент();

Возврат ВерсияПриложенияБольшеИлиРавнаЧемЗаданная(ВерсияРежимаСовместимости, НеобходимаяВерсияПриложения);

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

&НаКлиенте
Функция ПолучитьМакетОбработки(ИмяМакета) Экспорт
Шаги = МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Шаги;
Expand Down Expand Up @@ -6026,14 +6043,16 @@
Для каждого ОбъектПлагина Из МассивПодключенныхПлагинов Цикл
Попытка
ОбъектПлагина.Инициализация(ЭтаФорма);
ОписаниеПлагина = ОбъектПлагина.ОписаниеПлагина(Объект.ТипыПлагинов);
ИмяПлагина = ОписаниеПлагина.Идентификатор;

ПодключенныеРанее.Вставить(ОписаниеПлагина.Идентификатор, Истина);
Объект.ПлагиныЗагружены = Истина;
Объект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ИмяПлагина);
КэшФормПлагинов.Вставить(ОписаниеПлагина.Идентификатор, Истина);
СделатьСообщение("Подключен плагин " + ИмяПлагина + " в режиме отладки");
ОписаниеПлагина = ОбъектПлагина.ОписаниеПлагина(ЭтаФорма, Объект.ТипыПлагинов);
Если ОписаниеПлагина <> Неопределено Тогда
ИмяПлагина = ОписаниеПлагина.Идентификатор;

ПодключенныеРанее.Вставить(ОписаниеПлагина.Идентификатор, Истина);
Объект.ПлагиныЗагружены = Истина;
Объект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, ИмяПлагина);
КэшФормПлагинов.Вставить(ОписаниеПлагина.Идентификатор, Истина);
СделатьСообщение("Подключен плагин " + ИмяПлагина + " в режиме отладки");
КонецЕсли;
Исключение
ИнфоОшибки = ИнформацияОбОшибке();
Если ОбъектПлагина <> Неопределено Тогда
Expand Down Expand Up @@ -6725,7 +6744,7 @@
Массив2 = РазложитьСтрокуВМассивПодстрок("8.3.3.641", ".");

Версия1БольшеИлиРавно = Истина;
Для Ккк = 0 По Массив1.Количество() - 1 Цикл
Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл
Элем1 = Массив1.Получить(Ккк);
Элем2 = Массив2.Получить(Ккк);

Expand All @@ -6746,7 +6765,7 @@
Массив2 = РазложитьСтрокуВМассивПодстрок("8.3.9.2033", ".");

Версия1БольшеИлиРавно = Истина;
Для Ккк = 0 По Массив1.Количество() - 1 Цикл
Для Ккк = 0 По Мин(Массив1.Количество(), Массив2.Количество()) - 1 Цикл
Элем1 = Массив1.Получить(Ккк);
Элем2 = Массив2.Получить(Ккк);

Expand All @@ -6767,6 +6786,16 @@
Возврат КешРежимСовместимости;
КонецФункции

&НаКлиенте
Функция ВерсияРежимаСовместимостиКлиент(Знач ЗначениеПоУмолчанию = Неопределено) Экспорт
Если Не ЗначениеЗаполнено(КешВерсияРежимСовместимости) Тогда
РежимСовместимостиВерсия = СтрЗаменить(УзнатьРежимСовместимостиКлиент(ЗначениеПоУмолчанию), "Версия", "");
КешВерсияРежимСовместимости = СтрЗаменить(РежимСовместимостиВерсия, "_", ".");
КонецЕсли;

Возврат КешВерсияРежимСовместимости;
КонецФункции

&НаСервереБезКонтекста
Функция УзнатьРежимСовместимости(ЗначениеПоУмолчанию)
Значение = ЗначениеПоУмолчанию;
Expand Down Expand Up @@ -19078,7 +19107,10 @@
Попытка
ОбъектОбработки = СоздатьФайлОбработкиНаСервере(КлючФайла, ИмяПлагина, Объект.ИспользоватьПрямыеПутиФайлов);
ОбъектОбработки.Инициализация(ЭтотОбъектНаСервере);
ОписанияПлагинов.Вставить(КлючФайла, ОбъектОбработки.ОписаниеПлагина(Объект.ТипыПлагинов));
ОписаниеПлагина = ОбъектОбработки.ОписаниеПлагина(ЭтотОбъектНаСервере, Объект.ТипыПлагинов);
Если ОписаниеПлагина <> Неопределено Тогда
ОписанияПлагинов.Вставить(КлючФайла, ОписаниеПлагина);
КонецЕсли;
Исключение
Ошибка = "Возникла ошибка при загрузке плагина: " + КлючФайла + Символы.ПС
+ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Expand Down
8 changes: 5 additions & 3 deletions epf/bddRunner/bddRunner/Forms/Форма/Ext/Form/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,11 @@
Для каждого ФайлОбработки Из НайденныеФайлы Цикл
Обработка = ВнешниеОбработки.Создать(ФайлОбработки.ПолноеИмя, Ложь);
Попытка
ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект.ТипыПлагинов);
Обработка.Инициализация(ЭтотОбъект);
ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, Обработка);
ОписаниеПлагина = Обработка.ОписаниеПлагина(ЭтотОбъект, ЭтотОбъект.ТипыПлагинов);
Если ОписаниеПлагина <> Неопределено Тогда
Обработка.Инициализация(ЭтотОбъект);
ЭтотОбъект.Плагины.Вставить(ОписаниеПлагина.Идентификатор, Обработка);
КонецЕсли;
Исключение
Ошибка = "Возникла ошибка при загрузке плагина: "+ФайлОбработки.Имя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
Сообщить(Ошибка);
Expand Down
Loading