diff --git a/.github/workflows/step-run-tests.yml b/.github/workflows/step-run-tests.yml index f4b817661..09aa2f90b 100644 --- a/.github/workflows/step-run-tests.yml +++ b/.github/workflows/step-run-tests.yml @@ -55,6 +55,16 @@ jobs: sudo ln -s /usr/lib/x86_64-linux-gnu/libenchant-2.so.2 /usr/lib/libenchant.so.1 sudo localedef -i ${{ inputs.locale }} -c -f UTF-8 -A /usr/share/locale/locale.alias ${{ inputs.locale }}.UTF-8 + mkdir -p ~/.1cv8/1C/1cv8/conf/ + cat >~/.1cv8/1C/1cv8/conf/conf.cfg < КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда - ОшибкаКонтекста = "Неизвестный контекст/режим исполнения"; - Иначе - ОшибкаКонтекста = Неопределено; - КонецЕсли; - - Если ОшибкаКонтекста <> Неопределено Тогда - Набор.Выполнять = Ложь; - ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуРежимаВыполнения(Набор, ОшибкаКонтекста); - Для Каждого Тест Из Набор.Тесты Цикл - ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуРежимаВыполнения(Тест, ОшибкаКонтекста); - КонецЦикла; - КонецЕсли; - - КонецЦикла; - - Возврат ИсполняемыйТестовыйМодуль; - -КонецФункции - -Функция ИсполняемыеНаборыМодуля(ТестовыйМодуль) - - Результат = Новый Массив(); - - Для Каждого ТестовыйНабор Из ТестовыйМодуль.НаборыТестов Цикл - - НаборыКонтекстов = Новый Структура; - - ТестыНабора = ЮТКоллекции.ЗначениеСтруктуры(ТестовыйНабор, "Тесты", Новый Массив()); - ОбработатьОшибкиЧтенияНабора(ТестовыйНабор, ТестовыйМодуль); - - Для Каждого Тест Из ТестыНабора Цикл - - Для Каждого Контекст Из Тест.КонтекстВызова Цикл - - Если НЕ НаборыКонтекстов.Свойство(Контекст) Тогда - ИсполняемыйНабор = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоНабораТестов(ТестовыйНабор); - ИсполняемыйНабор.Режим = Контекст; - НаборыКонтекстов.Вставить(Контекст, ИсполняемыйНабор); - Иначе - ИсполняемыйНабор = НаборыКонтекстов[Контекст]; - КонецЕсли; - - ИсполняемыйТест = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоТеста(Тест, Контекст, ТестовыйМодуль); - - Если Тест.Свойство("Ошибки") И Тест.Ошибки.Количество() > 0 Тогда - ИсполняемыйТест.Ошибки = ЮТКоллекции.СкопироватьМассив(Тест.Ошибки); - ИсполняемыйТест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах(); - ИсполняемыйТест.Длительность = 0; - КонецЕсли; - - ИсполняемыйНабор.Тесты.Добавить(ИсполняемыйТест); - - КонецЦикла; - - КонецЦикла; - - Если НаборыКонтекстов.Количество() Тогда - - Для Каждого Элемент Из НаборыКонтекстов Цикл - Результат.Добавить(Элемент.Значение); - КонецЦикла; - - КонецЕсли; - - КонецЦикла; - - Возврат Результат; - -КонецФункции - -Процедура ОбработатьОшибкиЧтенияНабора(Набор, Модуль) - - ТестыНабора = ЮТКоллекции.ЗначениеСтруктуры(Набор, "Тесты", Новый Массив()); - Ошибки = ЮТКоллекции.ЗначениеСтруктуры(Набор, "Ошибки", Новый Массив()); - - Если Ошибки.Количество() > 0 Тогда - Для Каждого Ошибка Из Ошибки Цикл - - Если Ошибка.ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().ЧтенияТестов Тогда - Тест = ОписаниеТестаСОшибкойЧтения(Модуль, Ошибка); - ТестыНабора.Добавить(Тест); - Прервать; - КонецЕсли; - - КонецЦикла; - КонецЕсли; - -КонецПроцедуры - -Функция ОписаниеТестаСОшибкойЧтения(Модуль, Ошибка) - - Контексты = ЮТФабрикаСлужебный.КонтекстыМодуля(Модуль.Метаданные); - Тест = ЮТФабрикаСлужебный.ОписаниеТеста("ИсполняемыеСценарии", "ИсполняемыеСценарии", Контексты); - Тест.Вставить("Ошибки", Новый Массив); - Тест.Ошибки.Добавить(ЮТКоллекции.СкопироватьСтруктуру(Ошибка)); - - Возврат Тест; - -КонецФункции - Процедура ПоказатьОтчет(РезультатыТестирования, Параметры) Данные = Новый Структура("РезультатыТестирования, ПараметрыЗапуска", РезультатыТестирования, Параметры); @@ -502,6 +383,7 @@ // Повторно сохраним для передачи на сервер ЮТКонтекстСлужебный.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекстСлужебный.ГлобальныеНастройкиВыполнения()); + ЮТСобытияСлужебный.ПослеИнициализации(); КонецПроцедуры diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 38af274fe..cd807fb64 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// Copyright 2021-2025 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. @@ -18,29 +18,89 @@ #Область СлужебныйПрограммныйИнтерфейс +Функция ИсполняемыйТестовыйМодуль(ТестовыйМодуль) Экспорт + + ИсполняемыйТестовыйМодуль = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль); + + КонтекстыПриложения = ЮТФабрикаСлужебный.КонтекстыПриложения(); + КонтекстыМодуля = ЮТФабрикаСлужебный.КонтекстыМодуля(ТестовыйМодуль.Метаданные); + КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения(); + + ИсполняемыйТестовыйМодуль.НаборыТестов = ИсполняемыеНаборыМодуля(ТестовыйМодуль); + + Для Каждого Набор Из ИсполняемыйТестовыйМодуль.НаборыТестов Цикл + + КонтекстИсполнения = ЮТФабрикаСлужебный.КонтекстИсполнения(Набор.Режим); + + Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда + ОшибкаКонтекста = "Неподдерживаемый режим запуска"; + ИначеЕсли КонтекстыМодуля.Найти(Набор.Режим) = Неопределено Тогда + ОшибкаКонтекста = "Модуль не доступен в этом контексте"; + ИначеЕсли КонтекстИсполнения <> КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда + ОшибкаКонтекста = "Неизвестный контекст/режим исполнения"; + Иначе + ОшибкаКонтекста = Неопределено; + КонецЕсли; + + Если ОшибкаКонтекста <> Неопределено Тогда + Набор.Выполнять = Ложь; + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуРежимаВыполнения(Набор, ОшибкаКонтекста); + Для Каждого Тест Из Набор.Тесты Цикл + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуРежимаВыполнения(Тест, ОшибкаКонтекста); + КонецЦикла; + КонецЕсли; + + КонецЦикла; + + Возврат ИсполняемыйТестовыйМодуль; + +КонецФункции + +Функция ИсполняемыеНаборыМодуля(ТестовыйМодуль) Экспорт + + Результат = Новый Массив(); + + Для Каждого ТестовыйНабор Из ТестовыйМодуль.НаборыТестов Цикл + + ОбработатьОшибкиЧтенияНабора(ТестовыйНабор, ТестовыйМодуль); + НаборыКонтекстов = ИсполняемыеНаборыПоКонтекстам(ТестовыйНабор, ТестовыйМодуль); + + Если НаборыКонтекстов.Количество() Тогда + Для Каждого Элемент Из НаборыКонтекстов Цикл + Результат.Добавить(Элемент.Значение); + КонецЦикла; + КонецЕсли; + + КонецЦикла; + + Возврат Результат; + +КонецФункции + // Выполняет тесты группы наборов, соответствующих одному режиму выполнения (клиент/сервер) // Параметры: // Наборы - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Наборы тестов модуля -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// ОписаниеТестовогоОбъекта - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля // // Возвращаемое значение: // Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Результат прогона наборов тестов с заполненной информацией о выполнении -Функция ВыполнитьГруппуНаборовТестов(Наборы, ТестовыйМодуль) Экспорт +Функция ВыполнитьГруппуНаборовТестов(Наборы, ОписаниеТестовогоОбъекта) Экспорт Если Наборы.Количество() = 0 Тогда Возврат Наборы; КонецЕсли; - ЮТСобытияСлужебный.ПередВсемиТестамиМодуля(ТестовыйМодуль); + ТестовыйМодуль = ТестовыйМодуль(ОписаниеТестовогоОбъекта); + ЮТСобытияСлужебный.ПередВсемиТестамиМодуля(ТестовыйМодуль, ОписаниеТестовогоОбъекта); - Если ЕстьОшибки(ТестовыйМодуль) Тогда - СкопироватьОшибкиВ(Наборы, ТестовыйМодуль.Ошибки); + Если ЕстьОшибки(ОписаниеТестовогоОбъекта) Тогда + СкопироватьОшибкиВ(Наборы, ОписаниеТестовогоОбъекта.Ошибки); Возврат Наборы; КонецЕсли; Для Каждого Набор Из Наборы Цикл - Результат = ВыполнитьНаборТестов(Набор, ТестовыйМодуль); + Результат = ВыполнитьНаборТестов(ТестовыйМодуль, Набор, ОписаниеТестовогоОбъекта); Если Результат <> Неопределено Тогда Набор.Тесты = Результат; @@ -48,13 +108,13 @@ КонецЦикла; - ЮТСобытияСлужебный.ПослеВсехТестовМодуля(ТестовыйМодуль); + ЮТСобытияСлужебный.ПослеВсехТестовМодуля(ТестовыйМодуль, ОписаниеТестовогоОбъекта); - Если ЕстьОшибки(ТестовыйМодуль) Тогда - СкопироватьОшибкиВ(Наборы, ТестовыйМодуль.Ошибки); + Если ЕстьОшибки(ОписаниеТестовогоОбъекта) Тогда + СкопироватьОшибкиВ(Наборы, ОписаниеТестовогоОбъекта.Ошибки); КонецЕсли; - ТестовыйМодуль.Ошибки.Очистить(); // Эти ошибки используются как буфер и уже скопированы в наборы, но ломают последующие наборы + ОписаниеТестовогоОбъекта.Ошибки.Очистить(); // Эти ошибки используются как буфер и уже скопированы в наборы, но ломают последующие наборы Возврат Наборы; @@ -106,10 +166,10 @@ #Область СлужебныеПроцедурыИФункции -Функция ВыполнитьНаборТестов(Набор, ТестовыйМодуль) +Функция ВыполнитьНаборТестов(ТестовыйМодуль, Набор, ОписаниеТестовогоОбъекта) Набор.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах(); - ЮТСобытияСлужебный.ПередТестовымНабором(ТестовыйМодуль, Набор); + ЮТСобытияСлужебный.ПередТестовымНабором(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор); Если ЕстьОшибки(Набор) Тогда Возврат Неопределено; @@ -123,20 +183,20 @@ Состояние(Тест.Имя); #КонецЕсли ВТранзакции = Ложь; - ПередКаждымТестом(ТестовыйМодуль, Набор, Тест, ВТранзакции); + ПередКаждымТестом(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор, Тест, ВТранзакции); Тест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах(); - ВыполнитьТестовыйМетод(Тест); + ВыполнитьТестовыйМетод(ТестовыйМодуль, Тест); Тест.Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - Тест.ДатаСтарта; - ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест, ВТранзакции); + ПослеКаждогоТеста(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор, Тест, ВТранзакции); Тест.Статус = ЮТРегистрацияОшибокСлужебный.СтатусВыполненияТеста(Тест); Результаты.Добавить(Тест); КонецЦикла; - ЮТСобытияСлужебный.ПослеТестовогоНабора(ТестовыйМодуль, Набор); + ЮТСобытияСлужебный.ПослеТестовогоНабора(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор); Набор.Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - Набор.ДатаСтарта; @@ -144,10 +204,10 @@ КонецФункции -Процедура ПередКаждымТестом(ТестовыйМодуль, Набор, Тест, ВТранзакции) +Процедура ПередКаждымТестом(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор, Тест, ВТранзакции) ОбновитьПовторноИспользуемыеЗначения(); - ЮТКонтекстИсполненияСлужебныйКлиентСервер.УстановитьКонтекстИсполнения(ТестовыйМодуль, Набор, Тест); + ЮТКонтекстИсполненияСлужебныйКлиентСервер.УстановитьКонтекстИсполнения(ОписаниеТестовогоОбъекта, Набор, Тест); #Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда ВТранзакции = ЮТНастройкиВыполнения.ВТранзакции(); Если ВТранзакции Тогда @@ -159,16 +219,16 @@ КонецЕсли; #КонецЕсли - ЮТСобытияСлужебный.ПередКаждымТестом(ТестовыйМодуль, Набор, Тест); + ЮТСобытияСлужебный.ПередКаждымТестом(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор, Тест); КонецПроцедуры -Процедура ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест, ВТранзакции) +Процедура ПослеКаждогоТеста(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор, Тест, ВТранзакции) Если КонтекстСломан(Тест, ВТранзакции) Тогда - ЮТСобытияСлужебный.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест); + ЮТСобытияСлужебный.ПослеКаждогоТеста(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор, Тест); Иначе - ЮТСобытияСлужебный.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест); + ЮТСобытияСлужебный.ПослеКаждогоТеста(ТестовыйМодуль, ОписаниеТестовогоОбъекта, Набор, Тест); Если НЕ КонтекстСломан(Тест, ВТранзакции) Тогда ОтменитьТранзакциюТеста(Тест, ВТранзакции); КонецЕсли; @@ -219,7 +279,7 @@ КонецФункции -Процедура ВыполнитьТестовыйМетод(Тест) +Процедура ВыполнитьТестовыйМетод(ТестовыйМодуль, Тест) Если ЕстьОшибки(Тест) Тогда Возврат; @@ -228,7 +288,7 @@ СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста(); Тест.Статус = СтатусыИсполненияТеста.Исполнение; - Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодКонфигурацииСПерехватомОшибки(Тест.ПолноеИмяМетода, , Тест.Параметры); + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодОбъектаСПерехватомОшибки(ТестовыйМодуль, Тест.Метод, Тест.Параметры); Если Ошибка <> Неопределено Тогда ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуВыполненияТеста(Тест, Ошибка); @@ -250,4 +310,85 @@ КонецПроцедуры +Процедура ОбработатьОшибкиЧтенияНабора(Набор, Модуль) + + ТестыНабора = ЮТКоллекции.ЗначениеСтруктуры(Набор, "Тесты", Новый Массив()); + Ошибки = ЮТКоллекции.ЗначениеСтруктуры(Набор, "Ошибки", Новый Массив()); + + Если Ошибки.Количество() > 0 Тогда + Для Каждого Ошибка Из Ошибки Цикл + + Если Ошибка.ТипОшибки = ЮТФабрикаСлужебный.ТипыОшибок().ЧтенияТестов Тогда + Тест = ОписаниеТестаСОшибкойЧтения(Модуль, Ошибка); + ТестыНабора.Добавить(Тест); + Прервать; + КонецЕсли; + + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +Функция ОписаниеТестаСОшибкойЧтения(Модуль, Ошибка) + + Контексты = ЮТФабрикаСлужебный.КонтекстыМодуля(Модуль.Метаданные); + Тест = ЮТФабрикаСлужебный.ОписаниеТеста("ИсполняемыеСценарии", "ИсполняемыеСценарии", Контексты); + Тест.Вставить("Ошибки", Новый Массив); + Тест.Ошибки.Добавить(ЮТКоллекции.СкопироватьСтруктуру(Ошибка)); + + Возврат Тест; + +КонецФункции + +Функция ТестовыйМодуль(ОписаниеТестовогоОбъекта) + + Если ОписаниеТестовогоОбъекта.Метаданные.Тип = "ОбщийМодуль" Тогда + Возврат ЮТМетодыСлужебный.ВычислитьБезопасно(ОписаниеТестовогоОбъекта.Метаданные.Имя); + КонецЕсли; + + Если ОписаниеТестовогоОбъекта.Метаданные.Тип = "ВнешняяОбработка" Тогда +#Если Клиент Тогда + Возврат ПолучитьФорму(СтрШаблон("ВнешняяОбработка.%1.Форма", ОписаниеТестовогоОбъекта.Метаданные.Имя)); +#Иначе + Возврат ВнешниеОбработки.Создать(ОписаниеТестовогоОбъекта.Метаданные.Имя); +#КонецЕсли + КонецЕсли; + +КонецФункции + +Функция ИсполняемыеНаборыПоКонтекстам(ТестовыйНабор, ТестовыйМодуль) + + ТестыНабора = ЮТКоллекции.ЗначениеСтруктуры(ТестовыйНабор, "Тесты", Новый Массив()); + НаборыКонтекстов = Новый Структура; + + Для Каждого Тест Из ТестыНабора Цикл + + Для Каждого Контекст Из Тест.КонтекстВызова Цикл + + Если НЕ НаборыКонтекстов.Свойство(Контекст) Тогда + ИсполняемыйНабор = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоНабораТестов(ТестовыйНабор); + ИсполняемыйНабор.Режим = Контекст; + НаборыКонтекстов.Вставить(Контекст, ИсполняемыйНабор); + Иначе + ИсполняемыйНабор = НаборыКонтекстов[Контекст]; + КонецЕсли; + + ИсполняемыйТест = ЮТФабрикаСлужебный.НовоеОписаниеИсполняемогоТеста(Тест, Контекст, ТестовыйМодуль); + + Если Тест.Свойство("Ошибки") И Тест.Ошибки.Количество() > 0 Тогда + ИсполняемыйТест.Ошибки = ЮТКоллекции.СкопироватьМассив(Тест.Ошибки); + ИсполняемыйТест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах(); + ИсполняемыйТест.Длительность = 0; + КонецЕсли; + + ИсполняемыйНабор.Тесты.Добавить(ИсполняемыйТест); + + КонецЦикла; + + КонецЦикла; + + Возврат НаборыКонтекстов; + +КонецФункции + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 2cd3fae43..af27e3eb1 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\233\320\276\320\263\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// Copyright 2021-2025 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. @@ -108,10 +108,23 @@ КонецПроцедуры +Процедура ПослеИнициализации() Экспорт + + Контекст = Контекст(); + Если НЕ ЛогированиеВключено(Контекст) Тогда + Возврат; + КонецЕсли; + + Окружение = ЮТОкружение.ОписаниеОкружения(); + + ЮТЛогирование.Информация(ЮТОбщийСлужебный.ПредставлениеОбъекта(Окружение, , "Окружение")); + +КонецПроцедуры + // Обработка события "ПередЧтениемСценариевМодуля" // // Параметры: -// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля +// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМетаданныеМодуля Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля) Экспорт ЮТЛогирование.Информация(СтрШаблон("Загрузка сценариев модуля `%1`", МетаданныеМодуля.Имя)); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" index 9d7f63764..c319d9c10 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265/Module.bsl" @@ -31,7 +31,7 @@ // см. СтруктураОписанияОбъектаМетаданных Функция ОписаниеОбъектаМетаданных(Знач Значение) Экспорт - Если ЮТМетаданныеСлужебный.ЭтоОписаниеОбъектаМетаданных(Значение) Тогда + Если ЮТМетаданныеСлужебныйКлиентСервер.ЭтоОписаниеОбъектаМетаданных(Значение) Тогда //@skip-check constructor-function-return-section Возврат Значение; КонецЕсли; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" index 30964eca5..42b8d5730 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -24,7 +24,7 @@ // Выполняет чтение метаданных общих модулей, которые предположительно могут являться тестами // // Возвращаемое значение: -// Массив из см. ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля - Коллекция описаний моделей +// Массив из см. ЮТФабрика.ОписаниеМетаданныеМодуля - Коллекция описаний моделей Функция МодулиРасширений() Экспорт УстановитьПривилегированныйРежим(Истина); @@ -144,7 +144,8 @@ КонецЕсли; КонецЕсли; - Описание = ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля(); + Описание = ЮТФабрика.ОписаниеМетаданныеМодуля(); + Описание.Тип = "ОбщийМодуль"; Описание.Имя = Модуль.Имя; Описание.КлиентУправляемоеПриложение = Модуль.КлиентУправляемоеПриложение; Описание.КлиентОбычноеПриложение = Модуль.КлиентОбычноеПриложение; @@ -157,6 +158,19 @@ КонецФункции +Функция МетаданныеОбработки(Обработка, Сервер = Ложь, Клиент = Ложь) Экспорт + + Описание = ЮТФабрика.ОписаниеМетаданныеМодуля(); + Описание.Тип = "ВнешняяОбработка"; + Описание.Имя = Обработка.Метаданные().Имя; + Описание.КлиентУправляемоеПриложение = Клиент; + Описание.КлиентОбычноеПриложение = Клиент; + Описание.Сервер = Сервер; + + Возврат Описание; + +КонецФункции + Функция ОписаниеОбъектаМетаданных(Знач Значение, ЗаполнятьРеквизиты = Истина) Экспорт МетаданныеОбъекта = ОбъектМетаданных(Значение); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" similarity index 100% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" similarity index 84% rename from "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" rename to "exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" index 1580425b2..3b8e28dda 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/\320\256\320\242\320\234\320\265\321\202\320\260\320\264\320\260\320\275\320\275\321\213\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -1,6 +1,6 @@ - ЮТМетаданныеСлужебный + ЮТМетаданныеСлужебныйКлиентСервер ru Метаданные служебный diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" index 7fe47a631..9def7901d 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// Copyright 2021-2025 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. @@ -762,72 +762,6 @@ #Область СлужебныеПроцедурыИФункции -Функция ПредставлениеОбъекта(Объект, Знач Уровень = 1, ПредставлениеОбъекта = Неопределено) - - ТипОбъекта = ТипЗнч(Объект); - - Шаблон = "%1 (%2)"; - Представление = ""; - ПредставлениеТипа = ТипОбъекта; - - Если ТипОбъекта = Тип("Структура") ИЛИ ТипОбъекта = Тип("Соответствие") Тогда - ЮТСтроки.СтрокаСимволов(" ", Уровень * 4); - Шаблон = "%2: - |%1"; - Представление = ЮТСтроки.СтрокаСимволов(" ", Уровень * 4) + ПредставлениеСтруктуры(Объект, Уровень); - - ИначеЕсли ТипОбъекта = Тип("Массив") Тогда - - Шаблон = "[%1] (%2)"; - Представление = СтрСоединить(Объект, ", "); - - ИначеЕсли ТипОбъекта = Тип("Число") Тогда - - Представление = ЧислоВСтроку(Объект); - - ИначеЕсли ТипОбъекта = Тип("Дата") Тогда - - Представление = Формат(Объект, "ДФ=""dd.MM.yyyy ЧЧ:мм:сс"""); - - ИначеЕсли ТипОбъекта = Тип("Булево") Тогда - - Представление = Строка(Объект); - - ИначеЕсли ТипОбъекта = Тип("Строка") Тогда - - Представление = Объект; - - Иначе - - Представление = Строка(Объект); - ПредставлениеТипа = ЮТТипыДанныхСлужебный.ПредставлениеТипа(ТипОбъекта); // Для ссылочных - - КонецЕсли; - - Если ПустаяСтрока(Представление) Тогда - - Представление = "<Пусто>"; - - КонецЕсли; - - Возврат СтрШаблон(Шаблон, Представление, ?(ПредставлениеОбъекта = Неопределено, ПредставлениеТипа, ПредставлениеОбъекта)); - -КонецФункции - -Функция ПредставлениеСтруктуры(Значение, Уровень) - - Строки = Новый Массив(); - - Для Каждого Элемент Из Значение Цикл - - Строки.Добавить(СтрШаблон("%1: %2", Элемент.Ключ, ПредставлениеОбъекта(Элемент.Значение, Уровень + 1))); - - КонецЦикла; - - Возврат СтрСоединить(Строки, Символы.ПС + ЮТСтроки.СтрокаСимволов(" ", Уровень * 4)); - -КонецФункции - Функция ЧастиПути(Цепочка) Экспорт ПутьКСвойству = Новый Массив(); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 3c4b618d7..4b3c6fd52 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\261\321\211\320\270\320\271\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// Copyright 2021-2025 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. @@ -102,8 +102,86 @@ // BSLLS:NumberOfParams-on // BSLLS:NumberOfOptionalParams-on +Функция ПредставлениеОбъекта(Объект, Знач Уровень = 1, ПредставлениеОбъекта = Неопределено) Экспорт + + ТипОбъекта = ТипЗнч(Объект); + Представление = ""; + + Если ТипОбъекта = Тип("Структура") ИЛИ ТипОбъекта = Тип("Соответствие") Тогда + + Представление = Отступ(Уровень) + ПредставлениеСтруктуры(Объект, Уровень); + + ИначеЕсли ТипОбъекта = Тип("Массив") Тогда + + Представление = "[" + ПредставлениеМассива(Объект, Уровень) + "]"; + + ИначеЕсли ТипОбъекта = Тип("Число") Тогда + + Представление = ЮТОбщий.ЧислоВСтроку(Объект); + + ИначеЕсли ТипОбъекта = Тип("Дата") Тогда + + Представление = Формат(Объект, "ДФ=""dd.MM.yyyy ЧЧ:мм:сс"""); + + ИначеЕсли ТипОбъекта = Тип("Булево") Тогда + + Представление = Строка(Объект); + + ИначеЕсли ТипОбъекта = Тип("Строка") Тогда + + Представление = Объект; + + Иначе + + Представление = СтрШаблон("%1 (%2)", Объект, ЮТТипыДанныхСлужебный.ПредставлениеТипа(ТипОбъекта)); // Для ссылочных + + КонецЕсли; + + Если ПустаяСтрока(Представление) Тогда + + Представление = "<Пусто>"; + + КонецЕсли; + + Возврат Представление; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции +Функция ПредставлениеСтруктуры(Значение, Уровень) + + Строки = Новый Массив(); + + Для Каждого Элемент Из Значение Цикл + Строки.Добавить(СтрШаблон("%1: %2", Элемент.Ключ, ПредставлениеОбъекта(Элемент.Значение, Уровень + 1))); + КонецЦикла; + + Разделитель = Символы.ПС + Отступ(Уровень); + Возврат Разделитель + "- " + СтрСоединить(Строки, Разделитель + "- "); + +КонецФункции + +Функция ПредставлениеМассива(Значение, Уровень) + + Строки = Новый Массив(); + + Для Каждого Элемент Из Значение Цикл + Строки.Добавить(ПредставлениеОбъекта(Элемент, Уровень + 1)); + КонецЦикла; + + Разделитель = Символы.ПС + Отступ(Уровень); + Возврат Разделитель + СтрСоединить(Строки, Разделитель); + +КонецФункции + +Функция Отступ(Уровень) + + КоличествоПробелов = 4; + Возврат ЮТСтроки.СтрокаСимволов(" ", Уровень * КоличествоПробелов); + +КонецФункции + #КонецОбласти diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 6cd501937..af7c99e2f 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// Copyright 2021-2025 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. @@ -49,6 +49,7 @@ Окружение.ФайловаяБаза = ЭтоФайловаяБаза(); + Окружение.Расширения = ОписаниеСерверногоОкружения.Расширения; #Если ВебКлиент Тогда Окружение.ВебКлиент = Истина; #ИначеЕсли ТолстыйКлиентОбычноеПриложение Тогда @@ -144,6 +145,17 @@ Окружение.Вставить("Конфигурация", Метаданные.Представление()); Окружение.Вставить("ВерсияКонфигурации", Метаданные.Версия); + Окружение.Вставить("Расширения", Новый Массив); + + Для Каждого Расширение Из РасширенияКонфигурации.Получить() Цикл + ОписаниеРасширения = Новый Структура; + ОписаниеРасширения.Вставить("Имя", Расширение.Имя); + ОписаниеРасширения.Вставить("Версия", Расширение.Версия); + ОписаниеРасширения.Вставить("БезопасныйРежим", Расширение.БезопасныйРежим); + ОписаниеРасширения.Вставить("ЗащитаОтОпасныхДействий", Строка(Расширение.ЗащитаОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях)); + Окружение.Расширения.Добавить(ОписаниеРасширения); + КонецЦикла; + Возврат Окружение; КонецФункции diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 3f0552528..15c2a0cbb 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\241\320\276\320\261\321\213\321\202\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// Copyright 2021-2025 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. @@ -63,6 +63,12 @@ КонецПроцедуры +Процедура ПослеИнициализации() Экспорт + + ВызватьПодключаемыйОбработчикСобытия("ПослеИнициализации", "Инициализация", Новый Массив); + +КонецПроцедуры + // Вызывается при сборе информации об окружении на клиенте. // Позволяет дополнить описание окружения своими данными // @@ -82,72 +88,78 @@ // Вызов события "ПередВсемиТестамиМодуля" // // Параметры: -// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля -Процедура ПередВсемиТестамиМодуля(ТестовыйМодуль) Экспорт +// ТестовыйМодуль - ОбщийМодуль, ВнешняяОбработка - Объект, содержищий тесты +// ОписаниеТестовогоМодуля - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля +Процедура ПередВсемиТестамиМодуля(ТестовыйМодуль, ОписаниеТестовогоМодуля) Экспорт - ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль); - ВызватьОбработкуСобытияИсполненияТестов("ПередВсемиТестами", ОписаниеСобытия); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ОписаниеТестовогоМодуля); + ВызватьОбработкуСобытияИсполненияТестов(ТестовыйМодуль, "ПередВсемиТестами", ОписаниеСобытия); КонецПроцедуры // Вызов события "ПередТестовымНабором" // // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// ТестовыйМодуль - ОбщийМодуль, ВнешняяОбработка - Объект, содержищий тесты +// ОписаниеТестовогоМодуля - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля // Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -Процедура ПередТестовымНабором(ТестовыйМодуль, Набор) Экспорт +Процедура ПередТестовымНабором(ТестовыйМодуль, ОписаниеТестовогоМодуля, Набор) Экспорт - ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор); - ВызватьОбработкуСобытияИсполненияТестов("ПередТестовымНабором", ОписаниеСобытия); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ОписаниеТестовогоМодуля, Набор); + ВызватьОбработкуСобытияИсполненияТестов(ТестовыйМодуль, "ПередТестовымНабором", ОписаниеСобытия); КонецПроцедуры // Вызов события "ПередКаждымТестом" // // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// ТестовыйМодуль - ОбщийМодуль, ВнешняяОбработка - Объект, содержищий тесты +// ОписаниеТестовогоМодуля - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля // Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов // Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста -Процедура ПередКаждымТестом(ТестовыйМодуль, Набор, Тест) Экспорт +Процедура ПередКаждымТестом(ТестовыйМодуль, ОписаниеТестовогоМодуля, Набор, Тест) Экспорт - ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест); - ВызватьОбработкуСобытияИсполненияТестов("ПередКаждымТестом", ОписаниеСобытия, "ПередКаждымТестом, ПередТестом"); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ОписаниеТестовогоМодуля, Набор, Тест); + ВызватьОбработкуСобытияИсполненияТестов(ТестовыйМодуль, "ПередКаждымТестом", ОписаниеСобытия, "ПередКаждымТестом, ПередТестом"); КонецПроцедуры // Вызов события "ПослеКаждогоТеста" // // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// ТестовыйМодуль - ОбщийМодуль, ВнешняяОбработка - Объект, содержищий тесты +// ОписаниеТестовогоМодуля - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля // Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов // Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста -Процедура ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест) Экспорт +Процедура ПослеКаждогоТеста(ТестовыйМодуль, ОписаниеТестовогоМодуля, Набор, Тест) Экспорт - ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест); - ВызватьОбработкуСобытияИсполненияТестов("ПослеКаждогоТеста", ОписаниеСобытия, "ПослеКаждогоТеста, ПослеТеста"); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ОписаниеТестовогоМодуля, Набор, Тест); + ВызватьОбработкуСобытияИсполненияТестов(ТестовыйМодуль, "ПослеКаждогоТеста", ОписаниеСобытия, "ПослеКаждогоТеста, ПослеТеста"); КонецПроцедуры // Вызов события "ПослеТестовогоНабора" // // Параметры: -// ТестовыйМодуль - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +// ТестовыйМодуль - ОбщийМодуль, ВнешняяОбработка - Объект, содержищий тесты +// ОписаниеТестовогоМодуля - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля // Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов -Процедура ПослеТестовогоНабора(ТестовыйМодуль, Набор) Экспорт +Процедура ПослеТестовогоНабора(ТестовыйМодуль, ОписаниеТестовогоМодуля, Набор) Экспорт - ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор); - ВызватьОбработкуСобытияИсполненияТестов("ПослеТестовогоНабора", ОписаниеСобытия); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ОписаниеТестовогоМодуля, Набор); + ВызватьОбработкуСобытияИсполненияТестов(ТестовыйМодуль, "ПослеТестовогоНабора", ОписаниеСобытия); КонецПроцедуры // Вызов события "ПослеВсехТестовМодуля" // // Параметры: -// ТестовыйМодуль - см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля -Процедура ПослеВсехТестовМодуля(ТестовыйМодуль) Экспорт +// ТестовыйМодуль - ОбщийМодуль, ВнешняяОбработка - Объект, содержищий тесты +// ОписаниеТестовогоМодуля - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля +Процедура ПослеВсехТестовМодуля(ТестовыйМодуль, ОписаниеТестовогоМодуля) Экспорт - ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль); - ВызватьОбработкуСобытияИсполненияТестов("ПослеВсехТестов", ОписаниеСобытия); + ОписаниеСобытия = ЮТФабрикаСлужебный.ОписаниеСобытияИсполненияТестов(ОписаниеТестовогоМодуля); + ВызватьОбработкуСобытияИсполненияТестов(ТестовыйМодуль, "ПослеВсехТестов", ОписаниеСобытия); КонецПроцедуры @@ -205,7 +217,7 @@ // Позволяет настроить базовые параметры перед чтением настроек тестов модуля. // // Параметры: -// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля +// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМетаданныеМодуля Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля) Экспорт Параметры = ЮТКоллекции.ЗначениеВМассиве(МетаданныеМодуля); @@ -249,7 +261,7 @@ // Позволяет отфильтровать "лишние" тестовые модули // // Параметры: -// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля +// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМетаданныеМодуля // Отказ - Булево - Отказ от загрузки тестов из модуля Процедура ФильтрацияТестов_ПроверкаМодуля(МетаданныеМодуля, Отказ) Экспорт @@ -269,7 +281,7 @@ #Область СлужебныеПроцедурыИФункции -Процедура ВызватьОбработкуСобытияИсполненияТестов(ИмяСобытия, ОписаниеСобытия, ОбработчикиТестовогоМодуля = Неопределено) +Процедура ВызватьОбработкуСобытияИсполненияТестов(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикиТестовогоМодуля = Неопределено) Параметры = ЮТКоллекции.ЗначениеВМассиве(ОписаниеСобытия); #Если ТонкийКлиент Тогда @@ -287,11 +299,11 @@ ЮТКоллекции.ДополнитьМассив(Ошибки, СерверныеОшибки); КонецЕсли; #КонецЕсли - ВызватьОбработчикиТестовогоМодуля(ИмяСобытия, ОписаниеСобытия, ОбработчикиТестовогоМодуля); + ВызватьОбработчикиТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикиТестовогоМодуля); Иначе - ВызватьОбработчикиТестовогоМодуля(ИмяСобытия, ОписаниеСобытия, ОбработчикиТестовогоМодуля); + ВызватьОбработчикиТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикиТестовогоМодуля); Ошибки = ВызватьПодключаемыйОбработчикСобытия(ИмяСобытия, "ИсполнениеТестов", Параметры); #Если Клиент Тогда Если ВыполнятьСервернуюОбработку Тогда @@ -391,39 +403,52 @@ КонецФункции -Процедура ВызватьОбработчикиТестовогоМодуля(ИмяСобытия, ОписаниеСобытия, ОбработчикиСобытия) +Процедура ВызватьОбработчикиТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикиСобытия) ОбработчикСобытия = ПереопределенноеИмяСобытия(ИмяСобытия); Если ЗначениеЗаполнено(ОбработчикСобытия) Тогда - ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, Истина); + ВызватьОбработчикТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, Истина); ИначеЕсли НЕ ЗначениеЗаполнено(ОбработчикиСобытия) Тогда - ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия, ИмяСобытия, Ложь); + ВызватьОбработчикТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ИмяСобытия, Ложь); Иначе Для Каждого ОбработчикСобытия Из ЮТСтроки.РазделитьСтроку(ОбработчикиСобытия, ",") Цикл - ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, Ложь); + ВызватьОбработчикТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, Ложь); КонецЦикла; КонецЕсли; КонецПроцедуры -Процедура ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, ОбработчикСобытияПереопределен) - - ИмяМодуля = ОписаниеСобытия.Модуль.Метаданные.Имя; +Процедура ВызватьОбработчикТестовогоМодуля(ТестовыйМодуль, ИмяСобытия, ОписаниеСобытия, ОбработчикСобытия, ОбработчикСобытияПереопределен) ЧастиКоманды = СтрРазделить(ОбработчикСобытия, "."); Если ЧастиКоманды.Количество() = 2 Тогда ИмяМодуля = ЧастиКоманды[0]; ИмяМетода = ЧастиКоманды[1]; + ПредставлениеОбъекта = "ОбщийМодуль." + ИмяМодуля; Иначе ИмяМетода = ОбработчикСобытия; + ПредставлениеОбъекта = ОписаниеСобытия.Модуль.Метаданные.Тип + "." + ОписаниеСобытия.Модуль.Метаданные.Имя; + КонецЕсли; + + ВызватьВнешнийОбработчик = ЗначениеЗаполнено(ИмяМодуля) И СтрСравнить(ОписаниеСобытия.Модуль.Метаданные.Имя, ИмяМодуля) <> 0; + + Если ВызватьВнешнийОбработчик Тогда + МетодОбработчикСуществует = ЮТМетодыСлужебный.МетодМодуляСуществует(ИмяМодуля, ИмяМетода); + Иначе + МетодОбработчикСуществует = ЮТМетодыСлужебный.МетодОбъектаСуществует(ТестовыйМодуль, ИмяМетода); КонецЕсли; Ошибки = Новый Массив(); - Если ЮТМетодыСлужебный.МетодМодуляСуществует(ИмяМодуля, ИмяМетода) Тогда + Если МетодОбработчикСуществует Тогда + + ЮТЛогирование.Отладка(СтрШаблон("Обработка события `%1` - `%2.%3`", ИмяСобытия, ПредставлениеОбъекта, ИмяМетода)); - ЮТЛогирование.Отладка(СтрШаблон("Обработка события `%1` - `%2.%3`", ИмяСобытия, ИмяМодуля, ИмяМетода)); - Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодКонфигурацииСПерехватомОшибки(ИмяМодуля, ИмяМетода); + Если ВызватьВнешнийОбработчик Тогда + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодКонфигурацииСПерехватомОшибки(ИмяМодуля, ИмяМетода); + Иначе + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодОбъектаСПерехватомОшибки(ТестовыйМодуль, ИмяМетода); + КонецЕсли; Если Ошибка <> Неопределено Тогда ЮТЛогирование.Ошибка(ЮТРегистрацияОшибок.ПредставлениеОшибки("Ошибка обработки события", Ошибка)); @@ -432,7 +457,7 @@ ИначеЕсли ОбработчикСобытияПереопределен Тогда - ТекстИсключения = СтрШаблон("Не найден обработчик тестового модуля %1.%2", ИмяМодуля, ИмяМетода); + ТекстИсключения = СтрШаблон("Не найден обработчик тестового модуля %1.%2", ПредставлениеОбъекта, ИмяМетода); ВызватьИсключение ТекстИсключения; КонецЕсли; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index fdd1e6317..a557424af 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\265\321\201\321\202\321\213\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -205,7 +205,7 @@ // Новое описание тестового модуля. // // Параметры: -// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля +// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМетаданныеМодуля // // Возвращаемое значение: // см. ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index c93c45a95..571108ddf 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -285,7 +285,7 @@ Функция НовыйТип(ОбъектМетаданных, ВидТипа = "Ссылка") Экспорт - Если ЮТМетаданныеСлужебный.ЭтоОписаниеОбъектаМетаданных(ОбъектМетаданных) Тогда + Если ЮТМетаданныеСлужебныйКлиентСервер.ЭтоОписаниеОбъектаМетаданных(ОбъектМетаданных) Тогда ИмяТипа = СтрШаблон("%1%2.%3", ОбъектМетаданных.ОписаниеТипа.Имя, ВидТипа, ОбъектМетаданных.Имя); Иначе ИмяТипа = СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ".", ВидТипа + "."); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/Module.bsl" index 2a8b20b9b..692d17249 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// Copyright 2021-2025 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. @@ -283,8 +283,6 @@ // * ИнформационнаяСреда - Строка - // * ТестовыйДвижок - Строка - // * ВерсияТестовогоДвижка - Строка - -// * ЛокальПлатформы - Строка - -// * ЛокальИнтерфейса - Строка - // * ОперационнаяСистемаКлиент - Строка - Возможные значения: Linux, Windows, MacOS // * АрхитектураКлиент - Строка - Возможные значения: x86_64, i386 // * ОперационнаяСистемаСервер - Строка - Возможные значения: Linux, Windows, MacOS @@ -295,6 +293,7 @@ // * ВебКлиент - Булево - // * ТолстыйКлиент - Булево - // * ВремяЗапуска - Дата - +// * Расширения - Массив из Структура - Описание расширений Функция НовоеОписаниеОкружения() Экспорт Окружение = Новый Структура; @@ -319,6 +318,8 @@ Окружение.Вставить("ТолстыйКлиент", Ложь); Окружение.Вставить("ВремяЗапуска", '00010101'); + Окружение.Вставить("Расширения", Новый Массив); + Возврат Окружение; КонецФункции @@ -422,6 +423,7 @@ // Возвращает структуру описания метаданных модуля // Возвращаемое значение: // Структура - Метаданные модуля: +// * Тип - Строка - Тип модуля, поддерживаемые значения: `ОбщийМодуль`, `ВнешняяОбработка` // * Имя - Строка - Имя модуля // * Расширение - Строка - Имя расширения, владельца модуля // * КлиентУправляемоеПриложение - Булево - Доступность контекста @@ -432,6 +434,7 @@ Функция ОписаниеМетаданныеМодуля() Экспорт Описание = Новый Структура; + Описание.Вставить("Тип", ""); Описание.Вставить("Имя", ""); Описание.Вставить("Расширение", ""); Описание.Вставить("КлиентУправляемоеПриложение", Ложь); diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 9c16af450..1d7768492 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\244\320\260\320\261\321\200\320\270\320\272\320\260\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -247,31 +247,6 @@ КонецФункции -// Возвращает структуру описания метаданных модуля -// Возвращаемое значение: -// Структура - Метаданные модуля: -// * Имя - Строка - Имя модуля -// * Расширение - Строка - Имя расширения, владельца модуля -// * КлиентУправляемоеПриложение - Булево - Доступность контекста -// * КлиентОбычноеПриложение - Булево - Доступность контекста -// * Сервер - Булево - Доступность контекста -// * ВызовСервера - Булево - Доступность контекста -// * Глобальный - Булево - Доступность контекста -Функция ОписаниеМетаданныеМодуля() Экспорт - - Описание = Новый Структура; - Описание.Вставить("Имя", ""); - Описание.Вставить("Расширение", ""); - Описание.Вставить("КлиентУправляемоеПриложение", Ложь); - Описание.Вставить("КлиентОбычноеПриложение", Ложь); - Описание.Вставить("Сервер", Ложь); - Описание.Вставить("ВызовСервера", Ложь); - Описание.Вставить("Глобальный", Ложь); - - Возврат Описание; - -КонецФункции - // ОписаниеВозникшейОшибки // Возвращает базовую структуру ошибки // @@ -505,21 +480,18 @@ // Массив из Строка - Контексты приложения, возможные значения см. ЮТФабрика.КонтекстыВызова Функция КонтекстыПриложения() Экспорт -#Если НЕ Клиент Тогда - ВызватьИсключение "Метод получения контекстов приложения должен вызываться с клиента"; -#КонецЕсли - + Окружение = ЮТОкружение.ОписаниеОкружения(); Контексты = ЮТФабрика.КонтекстыВызова(); КонтекстыПриложения = Новый Массив(); КонтекстыПриложения.Добавить(Контексты.Сервер); КонтекстыПриложения.Добавить(Контексты.ВызовСервера); -#Если ТолстыйКлиентОбычноеПриложение Тогда - КонтекстыПриложения.Добавить(Контексты.КлиентОбычноеПриложение); -#ИначеЕсли ТолстыйКлиентУправляемоеПриложение Или ТонкийКлиент Тогда - КонтекстыПриложения.Добавить(Контексты.КлиентУправляемоеПриложение); -#КонецЕсли + Если Окружение.ОбычноеПриложение Тогда + КонтекстыПриложения.Добавить(Контексты.КлиентОбычноеПриложение); + Иначе + КонтекстыПриложения.Добавить(Контексты.КлиентУправляемоеПриложение); + КонецЕсли; Возврат КонтекстыПриложения; diff --git "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index b5e2d69e8..133329661 100644 --- "a/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/exts/yaxunit/src/CommonModules/\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -54,7 +54,7 @@ // ПрочитатьНаборТестов // Читает набор тестов из модуля // Параметры: -// МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля +// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМетаданныеМодуля // // Возвращаемое значение: // - Неопределено - Если это не тестовый модуль @@ -110,10 +110,61 @@ КонецФункции +Функция ИсполняемыеСценарииОбъекта(Объект, МетаданныеОбъекта) Экспорт + + ЭтоТестовыйМодуль = Истина; + + ЮТСобытияСлужебный.ПередЧтениемСценариевМодуля(МетаданныеОбъекта); + ИмяМетода = ИмяМетодаСценариев(); + + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодОбъектаСПерехватомОшибки(Объект, ИмяМетода); + + Если Ошибка <> Неопределено Тогда + + ТипыОшибок = ЮТФабрикаСлужебный.ТипыОшибок(); + ТипОшибки = ЮТРегистрацияОшибокСлужебный.ТипОшибки(Ошибка, ИмяМетода); + + Если ТипОшибки = ТипыОшибок.ТестНеРеализован Тогда + ЭтоТестовыйМодуль = Ложь; + Ошибка = Неопределено; + ИначеЕсли ТипОшибки = ТипыОшибок.МалоПараметров Тогда + Ошибка = ЮТМетодыСлужебный.ВыполнитьМетодОбъектаСПерехватомОшибки(Объект, ИмяМетода, ЮТКоллекции.ЗначениеВМассиве(Неопределено)); + + Сообщение = "Используется устаревшая сигнатура метода `ИсполняемыеСценарии`, метод не должен принимать параметров."; + ЮТОбщий.СообщитьПользователю(Сообщение); + ЮТЛогирование.Предостережение(Сообщение); + КонецЕсли; + + КонецЕсли; + + Если Ошибка <> Неопределено Тогда + + НаборПоУмолчанию = ЮТФабрикаСлужебный.ОписаниеТестовогоНабора(МетаданныеОбъекта.Имя); + ЮТРегистрацияОшибокСлужебный.ЗарегистрироватьОшибкуЧтенияТестов(НаборПоУмолчанию, "Ошибка формирования списка тестовых методов", Ошибка); + + ОписаниеТестовогоМодуля = ЮТФабрикаСлужебный.ОписаниеТестовогоМодуля(МетаданныеОбъекта, Новый Массив); + ОписаниеТестовогоМодуля.НаборыТестов.Добавить(НаборПоУмолчанию); + + ИначеЕсли ЭтоТестовыйМодуль Тогда + + ОписаниеТестовогоМодуля = ЮТТестыСлужебный.ОписаниеМодуля(); + ЮТФильтрацияСлужебный.ОтфильтроватьТестовыеНаборы(ОписаниеТестовогоМодуля); + ЮТСобытияСлужебный.ПослеЧтенияСценариевМодуля(ОписаниеТестовогоМодуля); + + Иначе + + ОписаниеТестовогоМодуля = Неопределено; + + КонецЕсли; + + Возврат ОписаниеТестовогоМодуля; + +КонецФункции + // ЭтоТестовыйМодуль // Проверяет, является ли модуль модулем с тестами // Параметры: -// МетаданныеМодуля - Структура - Описание метаданных модуля, см. ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля +// МетаданныеМодуля - Структура - Описание метаданных модуля, см. ЮТФабрика.ОписаниеМетаданныеМодуля // // Возвращаемое значение: // Булево - Этот модуль содержит тесты diff --git "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242V8UnpackWS/Template.bin" "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242V8UnpackWS/Template.bin" index 5b39c5474..674254762 100644 Binary files "a/exts/yaxunit/src/CommonTemplates/\320\256\320\242V8UnpackWS/Template.bin" and "b/exts/yaxunit/src/CommonTemplates/\320\256\320\242V8UnpackWS/Template.bin" differ diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo index ccdaa039f..7908467eb 100644 --- a/exts/yaxunit/src/Configuration/Configuration.mdo +++ b/exts/yaxunit/src/Configuration/Configuration.mdo @@ -100,8 +100,8 @@ CommonModule.ЮТЛогированиеСлужебныйВызовСервера CommonModule.ЮТЛогИсполненияТестаСлужебный CommonModule.ЮТМетаданные - CommonModule.ЮТМетаданныеСлужебный CommonModule.ЮТМетаданныеСлужебныйВызовСервера + CommonModule.ЮТМетаданныеСлужебныйКлиентСервер CommonModule.ЮТМетаданныеСлужебныйПовтИсп CommonModule.ЮТМетоды CommonModule.ЮТМетодыСлужебный diff --git "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" index 52afa2a56..ca5af204e 100644 --- "a/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" +++ "b/exts/yaxunit/src/Subsystems/\320\256\320\242\320\224\320\262\320\270\320\266\320\276\320\272/Subsystems/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201/\320\256\320\242\320\241\320\265\321\200\320\262\320\270\321\201.mdo" @@ -26,8 +26,8 @@ CommonModule.ЮТЛогированиеСлужебныйВызовСервера CommonModule.ЮТЛогИсполненияТестаСлужебный CommonModule.ЮТМетаданные - CommonModule.ЮТМетаданныеСлужебный CommonModule.ЮТМетаданныеСлужебныйВызовСервера + CommonModule.ЮТМетаданныеСлужебныйКлиентСервер CommonModule.ЮТМетаданныеСлужебныйПовтИсп CommonModule.ЮТМетоды CommonModule.ЮТМетодыСлужебный diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Module.bsl" new file mode 100644 index 000000000..afc1efaa0 --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/Module.bsl" @@ -0,0 +1,142 @@ +//©///////////////////////////////////////////////////////////////////////////©// +// +// Copyright 2021-2025 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. +// +//©///////////////////////////////////////////////////////////////////////////©// + +#Область СлужебныйПрограммныйИнтерфейс + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты.ВТранзакции(Ложь) + .ДобавитьТест("ЗагрузитьТестыВременнойОбработки") + .ДобавитьТест("ИсполняемыеСценарииВременнойОбработки") + .ДобавитьТест("ВыполнитьТестыВременнойОбработки") + ; + +КонецПроцедуры + +Процедура ЗагрузитьТестыВременнойОбработки() Экспорт + + Сценарии = СценарииОбработки(); + + ЮТест.ОжидаетЧто(Сценарии) + .Заполнено() + .Свойство("Метаданные").Заполнено() + .Свойство("Метаданные.Сервер").ЭтоИстина() + .Свойство("Метаданные.КлиентУправляемоеПриложение").ЭтоЛожь() + .Свойство("Метаданные.КлиентОбычноеПриложение").ЭтоЛожь() + .Свойство("НаборыТестов").Заполнено() + .Свойство("НаборыТестов[0].Тесты").Заполнено() + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестУспешно") + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестОшибка") + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестСломан") + ; + +КонецПроцедуры + +Процедура ИсполняемыеСценарииВременнойОбработки() Экспорт + + Сценарии = СценарииОбработки(); + ИсполняемыеСценарии = ЮТИсполнительСлужебныйКлиентСервер.ИсполняемыйТестовыйМодуль(Сценарии); + ЮТест.ОжидаетЧто(ИсполняемыеСценарии) + .Заполнено() + .Свойство("Метаданные").Заполнено() + .Свойство("Метаданные.Сервер").ЭтоИстина() + .Свойство("Метаданные.КлиентУправляемоеПриложение").ЭтоЛожь() + .Свойство("Метаданные.КлиентОбычноеПриложение").ЭтоЛожь() + .Свойство("НаборыТестов").Заполнено() + .Свойство("НаборыТестов[0].Тесты").Заполнено() + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестУспешно") + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестОшибка") + .ЛюбойЭлементСодержитСвойствоСоЗначением("Имя", "ТестСломан") + ; + +КонецПроцедуры + +Процедура ВыполнитьТестыВременнойОбработки() Экспорт + + ТестовыйМодуль = ЮТест.ОписаниеТекущегоТестовогоМодуля(); + Набор = ЮТест.ОписаниеТекущегоТестовогоНабора(); + Тест = ЮТест.ОписаниеТекущегоТеста(); + Сценарии = СценарииОбработки(); + ИсполняемыеСценарии = ЮТИсполнительСлужебныйКлиентСервер.ИсполняемыйТестовыйМодуль(Сценарии); + СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста(); + + Результат = ЮТИсполнительСлужебныйКлиентСервер.ВыполнитьГруппуНаборовТестов(ИсполняемыеСценарии.НаборыТестов, ИсполняемыеСценарии); + + ЮТест.ОжидаетЧто(Результат) + .Заполнено() + .Что(Результат[0]) + .Свойство("Тесты") + .Свойство("Тесты[0].Статус").Равно(СтатусыИсполненияТеста.Успешно) + .Свойство("Тесты[1].Статус").Равно(СтатусыИсполненияТеста.Ошибка) + .Свойство("Тесты[2].Статус").Равно(СтатусыИсполненияТеста.Сломан) + ; + + ЮТСобытияСлужебный.ПередКаждымТестом(ОМ_ВыполнениеТестовОбработки, ТестовыйМодуль, Набор, Тест); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция СценарииОбработки() + + Обработка = ВнешниеОбработки.Создать(Обработка()); + + МетаданныеОбработки = ЮТМетаданныеСлужебныйВызовСервера.МетаданныеОбработки(Обработка, Истина); + ЮТФильтрацияСлужебный.УстановитьКонтекст(Новый Структура("filter", Новый Структура)); + + Возврат ЮТЧитательСлужебный.ИсполняемыеСценарииОбъекта(Обработка, МетаданныеОбработки); + +КонецФункции + +Функция Обработка() + + Текст = + "Процедура ИсполняемыеСценарии() Экспорт + | + | ЮТТесты + | .ДобавитьТест(""ТестУспешно"") + | .ДобавитьТест(""ТестОшибка"") + | .ДобавитьТест(""ТестСломан"") + | ; + | + |КонецПроцедуры + | + |Процедура ТестУспешно() Экспорт + | ЮТест.ОжидаетЧто(1).Равно(1); + |КонецПроцедуры + | + |Процедура ТестОшибка() Экспорт + | ЮТест.ОжидаетЧто(1).Равно(2); + |КонецПроцедуры + | + |Процедура ТестСломан() Экспорт + | ЮТест.ОжидаетЧто(1).ОтсутствующийМетод(2); + |КонецПроцедуры + |"; + + ИмяФайлаОбработки = ЮТВнешниеОбработкиСлужебныйСервер.СкомпилироватьВнешнююОбработку(Текст); + + Данные = Новый ДвоичныеДанные(ИмяФайлаОбработки); + УдалитьФайлы(ИмяФайлаОбработки); + Возврат ВнешниеОбработки.Подключить(ПоместитьВоВременноеХранилище(Данные)); + +КонецФункции + +#КонецОбласти diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" "b/tests/src/CommonModules/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" new file mode 100644 index 000000000..4c98ce1e2 --- /dev/null +++ "b/tests/src/CommonModules/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270/\320\236\320\234_\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\276\320\262\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270.mdo" @@ -0,0 +1,9 @@ + + + ОМ_ВыполнениеТестовОбработки + + ru + О м выполнение тестов обработки + + true + diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 2b28e3819..3aae14c24 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\222\320\275\320\265\321\210\320\275\320\270\320\265\320\236\320\261\321\200\320\260\320\261\320\276\321\202\320\272\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -1,6 +1,6 @@ //©///////////////////////////////////////////////////////////////////////////©// // -// Copyright 2021-2024 BIA-Technologies Limited Liability Company +// Copyright 2021-2025 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. @@ -53,6 +53,7 @@ Функция Обработка(ИмяФайлаОбработки) Данные = Новый ДвоичныеДанные(ИмяФайлаОбработки); + УдалитьФайлы(ИмяФайлаОбработки); ИмяОбработки = ВнешниеОбработки.Подключить(ПоместитьВоВременноеХранилище(Данные), , Ложь); Возврат ВнешниеОбработки.Создать(ИмяОбработки); diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" index 8397c5f4d..bb776fe12 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\265\321\201\321\202\321\213/Module.bsl" @@ -31,7 +31,7 @@ Процедура ПередКаждымТестом() Экспорт - ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля(); + ОписаниеМодуля = ЮТФабрика.ОписаниеМетаданныеМодуля(); ОписаниеМодуля.КлиентУправляемоеПриложение = Истина; ОписаниеМодуля.КлиентОбычноеПриложение = Истина; ОписаниеМодуля.Сервер = Истина; diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 1ebc5fb21..60a3654fc 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\242\320\270\320\277\321\213\320\224\320\260\320\275\320\275\321\213\321\205\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -114,7 +114,7 @@ Процедура ОписаниеТиповЛюбаяСсылка() Экспорт - ЛюбаяСсылка = ЮТОбщий.ОписаниеТиповЛюбаяСсылка(); + ЛюбаяСсылка = ЮТТипыДанныхСлужебный.ОписаниеТиповЛюбаяСсылка(); ЮТест.ОжидаетЧто(ЛюбаяСсылка) .ИмеетТип("ОписаниеТипов") diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 47446e5e8..bd4f99dff 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\244\320\270\320\273\321\214\321\202\321\200\320\260\321\206\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -372,7 +372,7 @@ Функция МетаданныеМодуля(ИмяМодуля = "ТестовыйМодуль", Расширение = "ТестовоеРасширение") - МетаданныеМодуля = ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля(); + МетаданныеМодуля = ЮТФабрика.ОписаниеМетаданныеМодуля(); МетаданныеМодуля.Имя = ИмяМодуля; МетаданныеМодуля.Расширение = Расширение; diff --git "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" index 4dc1f099a..a291e09c3 100644 --- "a/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" +++ "b/tests/src/CommonModules/\320\236\320\234_\320\256\320\242\320\247\320\270\321\202\320\260\321\202\320\265\320\273\321\214\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -90,7 +90,7 @@ Наборы = ЮТЧитательСлужебный.ЗагрузитьТесты(ПараметрыЗапуска); ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests") - .ИмеетДлину(41); + .ИмеетДлину(42); КонецПроцедуры @@ -149,7 +149,7 @@ КонецПроцедуры Процедура ИсполняемыеСценарииМодуляСОшибкойЧтения() Экспорт - ОписаниеМодуля = ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля(); + ОписаниеМодуля = ЮТФабрика.ОписаниеМетаданныеМодуля(); ОписаниеМодуля.Имя = "ОМ_ЮТЧитатель"; ОписаниеМодуля.Расширение = "tests"; #Если Клиент Тогда diff --git "a/tests/src/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" "b/tests/src/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" index ade1e0061..0e1903d00 100644 --- "a/tests/src/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" +++ "b/tests/src/CommonModules/\320\242\320\265\321\201\321\202\320\276\320\262\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265/Module.bsl" @@ -35,7 +35,7 @@ Функция ОписаниеТестовогоМодуля(ИмяМодуля = Неопределено) Экспорт Описание = Новый Структура(); - Описание.Вставить("Метаданные", ЮТФабрикаСлужебный.ОписаниеМетаданныеМодуля()); + Описание.Вставить("Метаданные", ЮТФабрика.ОписаниеМетаданныеМодуля()); Описание.Вставить("НаборыТестов", Новый Массив); Описание.Вставить("Ошибки", Новый Массив); Описание.Вставить("НастройкиВыполнения", Новый Структура); diff --git a/tests/src/Configuration/Configuration.mdo b/tests/src/Configuration/Configuration.mdo index 81e89359d..8632142b0 100644 --- a/tests/src/Configuration/Configuration.mdo +++ b/tests/src/Configuration/Configuration.mdo @@ -33,6 +33,7 @@ CommonModule.Обр_ЮТКонструкторДвижений_МО CommonModule.Обр_ЮТКонструкторОбъектаXDTO_МО CommonModule.Обр_ЮТСообщениеСервисаИнтеграции + CommonModule.ОМ_ВыполнениеТестовОбработки CommonModule.ОМ_ДТОткрытиеФормСлужебныйВызовСервера CommonModule.ОМ_Мокито CommonModule.ОМ_МокитоОбучение diff --git a/tools/local-test/scripts/lib/prepare-db.sh b/tools/local-test/scripts/lib/prepare-db.sh index ba75b064a..f9eb5848a 100755 --- a/tools/local-test/scripts/lib/prepare-db.sh +++ b/tools/local-test/scripts/lib/prepare-db.sh @@ -1,29 +1,31 @@ CONNECTION_STRING=$1 JOB_NAME=$2 -BASE_ARGUMENTS="$CONNECTION_STRING /DisableStartupDialogs /DisableStartupMessages /Out $TMP_PATH/$JOB_NAME.log" +. $LIB_PATH/print.sh + +BASE_ARGUMENTS="$CONNECTION_STRING /DisableStartupDialogs /DisableStartupMessages /Out $LOGS_PATH/$JOB_NAME.log" DESIGNER_COMMAND="$ONEC_PATH/1cv8 DESIGNER $BASE_ARGUMENTS" -echo "=========== Загрузка конфигурации ($JOB_NAME)" -$DESIGNER_COMMAND /LoadCfg $BINARY_PATH/configuration.cf /UpdateDBCfg >&- 2>&- +$DESIGNER_COMMAND /LoadCfg $BINARY_PATH/configuration.cf /UpdateDBCfg >> $LOGS_PATH/$JOB_NAME.log 2>&1 SUCCESS=$? +print_state "Загрузка конфигурации в ${BOLD}$JOB_NAME${RESET}" # cat $TMP_PATH/$JOB_NAME.log EXTENSIONS_SET=("smoke" "tests" "yaxunit") for key in "${EXTENSIONS_SET[@]}";do if [[ $SUCCESS -eq 0 ]]; then - echo "=========== Загрузка расширения $key ($JOB_NAME)" - $DESIGNER_COMMAND /LoadCfg $BINARY_PATH/$key.cfe -Extension $key /UpdateDBCfg >&- 2>&- + $DESIGNER_COMMAND /LoadCfg $BINARY_PATH/$key.cfe -Extension $key /UpdateDBCfg >> $LOGS_PATH/$JOB_NAME.log 2>&1 SUCCESS=$? + print_state "Загрузка расширения $key в ${BOLD}$JOB_NAME${RESET}" # cat $TMP_PATH/$JOB_NAME.log fi done if [[ $SUCCESS -eq 0 ]]; then - echo "=========== Снятие безопасного режима ($JOB_NAME)" - $ONEC_PATH/1cv8 ENTERPRISE $BASE_ARGUMENTS /Execute $LIB_PATH/DisableSafeMode.epf >&- 2>&- + $ONEC_PATH/1cv8 ENTERPRISE $BASE_ARGUMENTS /Execute $LIB_PATH/DisableSafeMode.epf >> $LOGS_PATH/$JOB_NAME.log 2>&1 SUCCESS=$? + print_state "Снятие безопасного режима ${BOLD}$JOB_NAME${RESET}" # cat $TMP_PATH/$JOB_NAME.log fi diff --git a/tools/local-test/scripts/lib/print.sh b/tools/local-test/scripts/lib/print.sh index 77568ee32..8dc7256bf 100644 --- a/tools/local-test/scripts/lib/print.sh +++ b/tools/local-test/scripts/lib/print.sh @@ -1,16 +1,35 @@ -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' +RED=$(tput setaf 1) +GREEN=$(tput setaf 2) +YELLOW=$(tput setaf 3) +BLUE=$(tput setaf 4) NC='\033[0m' +RESET=$(tput sgr0) +BOLD=$(tput bold) + +function print_state { + if [[ $? -eq 0 ]]; then + echo -e " ${GREEN}✓ ${RESET} $1. ${GREEN}Успешно${RESET}" + else + echo -e " ${RED}× ${RESET} $1. ${RED}Не удалось${RESET}" + fi +} function print_success { - echo -e "${GREEN}#${NC} $1" + echo -e " ${GREEN}🟢 ${RESET} $1" +} + +function print_run { + echo -e " ${BOLD}${GREEN}⭆ ${RESET}${BOLD} $1${RESET}" } function print_error { - echo -e "${RED}#${NC} $1" + echo -e " ${RED}🔴 ${RESET} $1 " +} + +function print_info { + echo -e " ${BLUE}🛈 ${RESET} $1" } function print_warn { - echo -e "${YELLOW}#${NC} $1" + echo -e " ${YELLOW}🟠 ${RESET} $1" } \ No newline at end of file diff --git a/tools/local-test/scripts/lib/run-tests.sh b/tools/local-test/scripts/lib/run-tests.sh index cadeb912d..9ac9c5a5f 100755 --- a/tools/local-test/scripts/lib/run-tests.sh +++ b/tools/local-test/scripts/lib/run-tests.sh @@ -25,14 +25,14 @@ cat >$CONFIG < /dev/null +print_run "=========== Тестирование ${BOLD}$JOB_NAME${RESET}" +$ONEC_PATH/$APP ENTERPRISE $CONNECTION_STRING /DisableSplash /DisableStartupDialogs /DisableStartupMessages $RUN_MODE /C "RunUnitTests=$CONFIG" >> $LOGS_PATH/$JOB_NAME.log 2>&1 RESULT=$(head -n 1 $RESULT_PATH/exit-code-$JOB_NAME.txt) RESULT=${RESULT:1:1} if [[ "$RESULT" == "0" ]]; then - print_success "Тестирование $JOB_NAME завершилось успешно" + print_success "Тестирование ${BOLD}$JOB_NAME${RESET} завершилось успешно" else - print_error "Тестирование $JOB_NAME завершилось с ошибкой" + print_error "Тестирование ${BOLD}$JOB_NAME${RESET} завершилось с ошибкой" fi \ No newline at end of file diff --git a/tools/local-test/scripts/steps/build-artifacts.sh b/tools/local-test/scripts/steps/build-artifacts.sh index 9978364e7..8a774372e 100755 --- a/tools/local-test/scripts/steps/build-artifacts.sh +++ b/tools/local-test/scripts/steps/build-artifacts.sh @@ -1,4 +1,6 @@ TEMP_DB_PATH=$TMP_PATH/file-db +. $LIB_PATH/print.sh + rm -rf $TEMP_DB_PATH/* extensions=("smoke" "tests" "yaxunit") @@ -6,13 +8,13 @@ configuration_exists=0 if [[ -f $BINARY_PATH/configuration.cf ]]; then configuration_exists=1 - echo " Сборка конфигурации не требуется" + print_success " Сборка конфигурации ${BOLD}не требуется${RESET}" fi extensions_set=() for key in "${extensions[@]}";do if [[ -f $BINARY_PATH/$key.cfe ]]; then - echo " Сборка $key не требуется" + print_success " Сборка $key ${BOLD}не требуется${RESET}" else extensions_set+=($key) fi @@ -22,17 +24,20 @@ if [[ ${#extensions_set[@]} -eq 0 && $configuration_exists -eq 1 ]]; then exit 0 fi -echo " Создание информационной базы" -$ONEC_PATH/ibcmd infobase create --db-path=$TEMP_DB_PATH --import=$EXPORT_PATH/configuration --apply --force > /dev/null +print_run "Сборка артефактов" + +$ONEC_PATH/ibcmd infobase create --db-path=$TEMP_DB_PATH --import=$EXPORT_PATH/configuration --apply --force >> $LOGS_PATH/configuration.log 2>&1 +print_state 'Создание информационной базы' if [[ $configuration_exists -eq 0 ]]; then - echo " Сохрание тестовой конфигурации" - $ONEC_PATH/ibcmd infobase config save --db-path=$TEMP_DB_PATH $BINARY_PATH/configuration.cf > /dev/null + $ONEC_PATH/ibcmd infobase config save --db-path=$TEMP_DB_PATH $BINARY_PATH/configuration.cf >> $LOGS_PATH/configuration.log 2>&1 + print_state 'Сохрание тестовой конфигурации' fi for key in "${extensions_set[@]}";do - echo " Импорт расширения $key" - $ONEC_PATH/ibcmd infobase config import --db-path=$TEMP_DB_PATH --extension=$key $EXPORT_PATH/$key > /dev/null - echo " Сохрание расширения $key" - $ONEC_PATH/ibcmd infobase config save --db-path=$TEMP_DB_PATH --extension=$key $BINARY_PATH/$key.cfe > /dev/null + $ONEC_PATH/ibcmd infobase config import --db-path=$TEMP_DB_PATH --extension=$key $EXPORT_PATH/$key >> $LOGS_PATH/$key.log 2>&1 + print_state "Импорт расширения ${BOLD}$key${RESET}" + + $ONEC_PATH/ibcmd infobase config save --db-path=$TEMP_DB_PATH --extension=$key $BINARY_PATH/$key.cfe >> $LOGS_PATH/$key.log 2>&1 + print_state "Сохрание расширения ${BOLD}$key${RESET}" done \ No newline at end of file diff --git a/tools/local-test/scripts/steps/clean-outdated.sh b/tools/local-test/scripts/steps/clean-outdated.sh index 120570970..67d3e1fb3 100755 --- a/tools/local-test/scripts/steps/clean-outdated.sh +++ b/tools/local-test/scripts/steps/clean-outdated.sh @@ -15,10 +15,10 @@ if [ -f $hash_file_name ]; then fi if [[ "$current_hash" != "$old_hash" ]]; then - print_warn "$PROJECT_NAME, исходники изменены. Будет выполнена сбора" + print_warn "$PROJECT_NAME, исходники ${BOLD}изменены${RESET}. Будет выполнена сборка" rm -rf $EXPORT_PATH/$PROJECT_NAME rm -rf $BINARY_PATH/$PROJECT_NAME.* - echo $current_hash>$hash_file_name + echo $current_hash > $hash_file_name else - print_success "$PROJECT_NAME, исходники не изменены. Будут использованы существующие артефакты" + print_success "$PROJECT_NAME, исходники ${BOLD}не изменены${RESET}. Будут использованы существующие артефакты" fi diff --git a/tools/local-test/scripts/steps/convert-to-xml.sh b/tools/local-test/scripts/steps/convert-to-xml.sh index 2fbaa323f..3d6e05baa 100755 --- a/tools/local-test/scripts/steps/convert-to-xml.sh +++ b/tools/local-test/scripts/steps/convert-to-xml.sh @@ -1,9 +1,11 @@ PROJECT_NAME=$1 PROJECT_PATH=$2 +. $LIB_PATH/print.sh + if [[ -d $EXPORT_PATH/$PROJECT_NAME ]]; then - echo " Конвертация $PROJECT_NAME не требуется" + print_info "Конвертация ${BOLD}$PROJECT_NAME${RESET} не требуется" else - echo " Конвертация $PROJECT_NAME" - $EDT_PATH/1cedtcli -data $TMP_PATH/ws -timeout 300 -command export --configuration-files $EXPORT_PATH/$PROJECT_NAME --project $ROOT_PATH/$PROJECT_PATH + print_run "Конвертация ${BOLD}$PROJECT_NAME${RESET}" + $EDT_PATH/1cedtcli -data $TMP_PATH/ws -timeout 300 -v -command export --configuration-files $EXPORT_PATH/$PROJECT_NAME --project $ROOT_PATH/$PROJECT_PATH > $LOGS_PATH/$PROJECT_NAME.log 2>&1 fi diff --git a/tools/local-test/scripts/steps/run-filedb-test.sh b/tools/local-test/scripts/steps/run-filedb-test.sh index c6f0fa829..08f06b353 100755 --- a/tools/local-test/scripts/steps/run-filedb-test.sh +++ b/tools/local-test/scripts/steps/run-filedb-test.sh @@ -3,12 +3,23 @@ JOB_NAME=${MODE}Application-File TEST_DB_PATH=$DB_PATH/$MODE CONNECTION_STRING=/F$TEST_DB_PATH +. $LIB_PATH/print.sh + rm -rf $TEST_DB_PATH -echo "=========== Создание информационной базы ($JOB_NAME)" -$ONEC_PATH/1cv8 CREATEINFOBASE File=$TEST_DB_PATH /DisableStartupDialogs /DisableStartupMessages /Out $TMP_PATH/$JOB_NAME.log >&- 2>&- -# cat $TMP_PATH/$JOB_NAME.log +echo "=========== Подготовка информационной базы ${BOLD}$JOB_NAME${RESET}" +$ONEC_PATH/1cv8 CREATEINFOBASE File=$TEST_DB_PATH /DisableStartupDialogs /DisableStartupMessages /Out $LOGS_PATH/$JOB_NAME.log >> $LOGS_PATH/$JOB_NAME.log 2>&1 +SUCCESS=$? +print_state "Создание информационной базы ${BOLD}$JOB_NAME${RESET}" + +if [ $SUCCESS -ne 0 ]; then + print_error "Не удалось создать базу ${BOLD}$JOB_NAME${RESET}" + exit 0 +fi if $LIB_PATH/prepare-db.sh $CONNECTION_STRING $JOB_NAME; then + print_info "Подготовлена база ${BOLD}$JOB_NAME${RESET}" $LIB_PATH/run-tests.sh $MODE $CONNECTION_STRING $JOB_NAME +else + print_error "Не удалось подготовить базу ${BOLD}$JOB_NAME${RESET}" fi \ No newline at end of file diff --git a/tools/local-test/scripts/steps/run-serverdb-test.sh b/tools/local-test/scripts/steps/run-serverdb-test.sh index de7f01550..8338489d3 100755 --- a/tools/local-test/scripts/steps/run-serverdb-test.sh +++ b/tools/local-test/scripts/steps/run-serverdb-test.sh @@ -3,10 +3,21 @@ JOB_NAME=${MODE}Application-Server DB_NAME=DB_${MODE}Application CONNECTION_STRING=/S\"localhost\\$DB_NAME\" -echo "=========== Создание информационной базы ($JOB_NAME)" -$ONEC_PATH/1cv8 CREATEINFOBASE Srvr=localhost\;Ref=$DB_NAME\;DBMS=PostgreSQL\;DBSrvr=localhost\;DB=$DB_NAME\;DBUID=postgres\;CrSQLDB=Y\;SchJobDn=Y /DisableStartupDialogs /DisableStartupMessages /Out $TMP_PATH/$JOB_NAME.log >&- 2>&- -# cat $TMP_PATH/$JOB_NAME.log +. $LIB_PATH/print.sh + +echo "=========== Подготовка информационной базы ${BOLD}$JOB_NAME${RESET}" +$ONEC_PATH/1cv8 CREATEINFOBASE Srvr=localhost\;Ref=$DB_NAME\;DBMS=PostgreSQL\;DBSrvr=localhost\;DB=$DB_NAME\;DBUID=postgres\;CrSQLDB=Y\;SchJobDn=Y /DisableStartupDialogs /DisableStartupMessages /Out $LOGS_PATH/$JOB_NAME.log >> $LOGS_PATH/$JOB_NAME.log 2>&1 +SUCCESS=$? +print_state "Создание информационной базы ${BOLD}$JOB_NAME${RESET}" + +if [ $SUCCESS -ne 0 ]; then + print_error "Не удалось создать базу ${BOLD}$JOB_NAME${RESET}" + exit 0 +fi if $LIB_PATH/prepare-db.sh $CONNECTION_STRING $JOB_NAME; then + print_info "Подготовлена база для ${BOLD}$JOB_NAME${RESET}" $LIB_PATH/run-tests.sh $MODE $CONNECTION_STRING $JOB_NAME +else + print_error "Не удалось создать базу для ${BOLD}$JOB_NAME${RESET}" fi \ No newline at end of file diff --git a/tools/local-test/scripts/test-by-ibcmd.sh b/tools/local-test/scripts/test-by-ibcmd.sh index 9377afcdf..93b47930a 100755 --- a/tools/local-test/scripts/test-by-ibcmd.sh +++ b/tools/local-test/scripts/test-by-ibcmd.sh @@ -1,45 +1,105 @@ -source .env +#!/bin/bash -SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +export SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" -WORK_PATH=/tmp/yaxunit-test -EDT_PATH=/opt/1C/1CE/components/1c-edt-$EDT_VERSION-x86_64 -ONEC_PATH=/opt/1cv8/x86_64/$ONEC_VERSION -PROJECT_PATH=$SCRIPTPATH/../.. -DB_PATH=$WORK_PATH/file-db -mkdir -p $WORK_PATH +source $SCRIPTPATH/../.env -# echo "Конвертация configuration" -# $EDT_PATH/1cedtcli -data $WORK_PATH/ws -timeout 300 -command export --configuration-files $WORK_PATH/configuration --project $PROJECT_PATH/fixtures/demo-configuration +if [[ -z "${EDT_VERSION}" ]]; then + >&2 echo 'Не установлена переменная $EDT_VERSION' + exit 1 +fi -# echo "Конвертация yaxunit" -# $EDT_PATH/1cedtcli -data $WORK_PATH/ws -timeout 300 -command export --configuration-files $WORK_PATH/yaxunit --project $PROJECT_PATH/exts/yaxunit +if [[ -z "$ONEC_VERSION" ]]; then + >&2 echo 'Не установлена переменная $ONEC_VERSION' + exit 1 +fi -# echo "Конвертация smoke" -# $EDT_PATH/1cedtcli -data $WORK_PATH/ws -timeout 300 -command export --configuration-files $WORK_PATH/smoke --project $PROJECT_PATH/exts/smoke -# echo "Конвертация тесты" -# $EDT_PATH/1cedtcli -data $WORK_PATH/ws -timeout 300 -command export --configuration-files $WORK_PATH/tests --project $PROJECT_PATH/tests +export EDT_PATH=/opt/1C/1CE/components/1c-edt-$EDT_VERSION-x86_64 +export ONEC_PATH=/opt/1cv8/x86_64/$ONEC_VERSION + +if [[ ! -d "${EDT_PATH}" ]]; then + >&2 echo "Не найдена инсталяция ${EDT_PATH}" + exit 1 +fi + +if [[ ! -d "$ONEC_PATH" ]]; then + >&2 echo "Не найдена инсталяция ${ONEC_PATH}" + exit 1 +fi + +export WORK_PATH=$(realpath $SCRIPTPATH/../workpath) +export ROOT_PATH=$(realpath $SCRIPTPATH/../../../) +export STEPS_PATH=$(realpath $SCRIPTPATH/steps) +export LIB_PATH=$(realpath $SCRIPTPATH/lib) + +export TMP_PATH=$WORK_PATH/tmp +export DB_PATH=$WORK_PATH/file-db +export EXPORT_PATH=$WORK_PATH/export +export BINARY_PATH=$WORK_PATH/binary +export RESULT_PATH=$WORK_PATH/result +export LOGS_PATH=$WORK_PATH/logs + +. $LIB_PATH/print.sh + +mkdir -p $LOGS_PATH +mkdir -p $DB_PATH +mkdir -p $EXPORT_PATH +mkdir -p $BINARY_PATH + +mkdir -p $TMP_PATH +mkdir -p $RESULT_PATH + +rm -rf "${TMP_PATH:?}/"* +rm -rf "${RESULT_PATH:?}/"* +rm -rf "${LOGS_PATH:?}/"* + +cat >~/.1cv8/1C/1cv8/conf/conf.cfg <$WORK_PATH/yaxunit-config.json <$WORK_PATH/yaxunit-config.json <~/.1cv8/1C/1cv8/conf/conf.cfg <