diff --git a/exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl index cac59d23..d22eb8a3 100644 --- a/exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl @@ -19,6 +19,7 @@ #Область ПрограммныйИнтерфейс // Возвращает внешнюю компоненту, реализующую паузу +// Предоставляет метод `Ожидать`, `Sleep` // // Возвращаемое значение: // ВнешнийОбъект @@ -28,6 +29,17 @@ КонецФункции +// Возвращает внешнюю компоненту, реализующую вывод в консоль +// Предоставляет метод `Напечатать`, `Print` +// +// Возвращаемое значение: +// ВнешнийОбъект +Функция Консоль() Экспорт + + Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза()); + +КонецФункции + #КонецОбласти #Область СлужебныйПрограммныйИнтерфейс @@ -74,7 +86,7 @@ // см. ОписаниеКомпоненты Функция ОписаниеКомпонентыПауза() Экспорт - Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Sleep"); + Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Common"); КонецФункции diff --git a/exts/yaxunit/src/CommonModules/ЮТЛогирование/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЛогирование/Module.bsl index abb848b4..738ee4b7 100644 --- a/exts/yaxunit/src/CommonModules/ЮТЛогирование/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТЛогирование/Module.bsl @@ -62,12 +62,12 @@ #Если Клиент Тогда Контекст = Контекст(); - Если Контекст = Неопределено ИЛИ НЕ Контекст.Включено ИЛИ Контекст.ДоступенНаСервере Тогда + Если Контекст = Неопределено ИЛИ НЕ Контекст.Включено ИЛИ Контекст.ФайлЛогаДоступенНаСервере Тогда Возврат; КонецЕсли; Сообщения = ЮТЛогированиеВызовСервера.НакопленныеСообщенияЛогирования(Истина); - ЗаписатьСообщения(Контекст.ФайлЛога, Сообщения); + ЗаписатьСообщения(Контекст, Сообщения); #Иначе ВызватьИсключение "Метод вывода серверных сообщений в лог должен вызываться с клиента"; #КонецЕсли @@ -86,13 +86,16 @@ // ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска Процедура Инициализация(ПараметрыЗапуска) Экспорт - ДанныеКонтекста = НовыйДанныеКонтекста(); - ДанныеКонтекста.ФайлЛога = ПараметрыЗапуска.logging.file; + УровниЛога = УровниЛога(); - Если ПараметрыЗапуска.logging.enable = Неопределено Тогда - ДанныеКонтекста.Включено = ЗначениеЗаполнено(ДанныеКонтекста.ФайлЛога); - Иначе - ДанныеКонтекста.Включено = ПараметрыЗапуска.logging.enable; + ДанныеКонтекста = НовыйДанныеКонтекста(); + ДанныеКонтекста.ФайлЛога = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "file"); + ДанныеКонтекста.ВыводВКонсоль = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "console", Ложь); + ДанныеКонтекста.Включено = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "enable", Неопределено); + УровеньЛога = ЮТОбщий.ЗначениеСтруктуры(ПараметрыЗапуска.logging, "level", УровниЛога.Отладка); + + Если ДанныеКонтекста.Включено = Неопределено Тогда + ДанныеКонтекста.Включено = ДанныеКонтекста.ВыводВКонсоль ИЛИ ЗначениеЗаполнено(ДанныеКонтекста.ФайлЛога); КонецЕсли; Если НЕ ДанныеКонтекста.Включено Тогда @@ -100,24 +103,23 @@ Возврат; КонецЕсли; - УровниЛога = УровниЛога(); - - Если СтрСравнить(ПараметрыЗапуска.logging.level, УровниЛога.Ошибка) = 0 Тогда + Если СтрСравнить(УровеньЛога, УровниЛога.Ошибка) = 0 Тогда ДанныеКонтекста.УровеньЛога = 2; - ИначеЕсли СтрСравнить(ПараметрыЗапуска.logging.level, УровниЛога.Информация) = 0 Тогда + ИначеЕсли СтрСравнить(УровеньЛога, УровниЛога.Информация) = 0 Тогда ДанныеКонтекста.УровеньЛога = 1; Иначе ДанныеКонтекста.УровеньЛога = 0; КонецЕсли; ЗначениеПроверки = Строка(Новый УникальныйИдентификатор()); - ЗаписатьСообщения(ДанныеКонтекста.ФайлЛога, ЮТОбщий.ЗначениеВМассиве(ЗначениеПроверки), Ложь); - ДанныеКонтекста.ДоступенНаСервере = ЮТЛогированиеВызовСервера.ФайлЛогаДоступенНаСервере(ДанныеКонтекста.ФайлЛога, ЗначениеПроверки); + ЗаписатьСообщения(ДанныеКонтекста, ЮТОбщий.ЗначениеВМассиве(ЗначениеПроверки), Ложь); + + ДанныеКонтекста.ФайлЛогаДоступенНаСервере = ЮТЛогированиеВызовСервера.ФайлЛогаДоступенНаСервере(ДанныеКонтекста.ФайлЛога, ЗначениеПроверки); ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования(), ДанныеКонтекста, Истина); Разделитель = "------------------------------------------------------"; - ЗаписатьСообщения(ДанныеКонтекста.ФайлЛога, ЮТОбщий.ЗначениеВМассиве(Разделитель), Ложь); + ЗаписатьСообщения(ДанныеКонтекста, ЮТОбщий.ЗначениеВМассиве(Разделитель), Ложь); Информация("Старт"); КонецПроцедуры @@ -284,7 +286,8 @@ // Структура - Новый данные контекста: // * Включено - Булево - Логирование включено // * ФайлЛога - Неопределено - Файл вывода лога -// * ДоступенНаСервере - Булево - Файл лога доступен на сервере +// * ВыводВКонсоль- Булево - Вывод лога в консоль +// * ФайлЛогаДоступенНаСервере - Булево - Файл лога доступен на сервере // * НакопленныеЗаписи - Массив из Строка - Буфер для серверных сообщений // * ОбщееКоличествоТестов - Число // * КоличествоВыполненныхТестов - Число @@ -294,7 +297,8 @@ ДанныеКонтекста = Новый Структура(); ДанныеКонтекста.Вставить("Включено", Ложь); ДанныеКонтекста.Вставить("ФайлЛога", Неопределено); - ДанныеКонтекста.Вставить("ДоступенНаСервере", Ложь); + ДанныеКонтекста.Вставить("ВыводВКонсоль", Ложь); + ДанныеКонтекста.Вставить("ФайлЛогаДоступенНаСервере", Ложь); ДанныеКонтекста.Вставить("НакопленныеЗаписи", Новый Массив()); ДанныеКонтекста.Вставить("ОбщееКоличествоТестов", 0); ДанныеКонтекста.Вставить("КоличествоВыполненныхТестов", 0); @@ -336,10 +340,10 @@ #КонецЕсли Текст = СтрШаблон("%1 [%2][%3]: %4", ЮТОбщий.ПредставлениеУниверсальнойДата(), КонтекстИсполнения, УровеньЛога, Сообщение); #Если Клиент Тогда - ЗаписатьСообщения(Контекст.ФайлЛога, ЮТОбщий.ЗначениеВМассиве(Текст)); + ЗаписатьСообщения(Контекст, ЮТОбщий.ЗначениеВМассиве(Текст)); #Иначе - Если Контекст.ДоступенНаСервере Тогда - ЗаписатьСообщения(Контекст.ФайлЛога, ЮТОбщий.ЗначениеВМассиве(Текст)); + Если Контекст.ФайлЛогаДоступенНаСервере Тогда + ЗаписатьСообщения(Контекст, ЮТОбщий.ЗначениеВМассиве(Текст)); Иначе Контекст.НакопленныеЗаписи.Добавить(Текст); КонецЕсли; @@ -347,11 +351,30 @@ КонецПроцедуры -Процедура ЗаписатьСообщения(ФайлЛога, Сообщения, Дописывать = Истина) +Процедура ЗаписатьСообщения(Контекст, Сообщения, Дописывать = Истина) #Если ВебКлиент Тогда ВызватьИсключение "Метод записи лога не доступен в web-клиенте"; #Иначе + + Если Контекст.ВыводВКонсоль Тогда + ЗаписатьЛогВКонсоль(Сообщения); + КонецЕсли; + + Если ЗначениеЗаполнено(Контекст.ФайлЛога) Тогда + ЗаписатьЛогВФайл(Контекст.ФайлЛога, Сообщения, Дописывать); + КонецЕсли; + +#КонецЕсли + +КонецПроцедуры + +Процедура ЗаписатьЛогВФайл(ФайлЛога, Сообщения, Дописывать = Истина) + +#Если ВебКлиент Тогда + ВызватьИсключение "Метод записи лога не доступен в web-клиенте"; +#Иначе + Запись = Новый ЗаписьТекста(ФайлЛога, КодировкаТекста.UTF8, , Дописывать); Для Каждого Сообщение Из Сообщения Цикл @@ -363,6 +386,24 @@ КонецПроцедуры +Процедура ЗаписатьЛогВКонсоль(Сообщения) + +#Если ВебКлиент Тогда + ВызватьИсключение "Метод записи лога не доступен в web-клиенте"; +#Иначе + + Попытка + Консоль = ЮТКомпоненты.Консоль(); + + Для Каждого Сообщение Из Сообщения Цикл + Консоль.Напечатать(Сообщение); + КонецЦикла; + Исключение + КонецПопытки; +#КонецЕсли + +КонецПроцедуры + Функция Прогресс() Контекст = Контекст(); diff --git a/exts/yaxunit/src/CommonModules/ЮТЛогированиеВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТЛогированиеВызовСервера/Module.bsl index c3009acd..fb73b8d5 100644 --- a/exts/yaxunit/src/CommonModules/ЮТЛогированиеВызовСервера/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТЛогированиеВызовСервера/Module.bsl @@ -30,6 +30,8 @@ Чтение = Новый ЧтениеТекста(ИмяФайла); Строка = Чтение.ПрочитатьСтроку(); + Чтение.Закрыть(); + Возврат Строка = ЗначениеПроверки; Исключение diff --git a/exts/yaxunit/src/CommonTemplates/ЮТYaxUnitAddIn/Template.addin b/exts/yaxunit/src/CommonTemplates/ЮТYaxUnitAddIn/Template.addin index 6fa244c6..c6512937 100644 Binary files a/exts/yaxunit/src/CommonTemplates/ЮТYaxUnitAddIn/Template.addin and b/exts/yaxunit/src/CommonTemplates/ЮТYaxUnitAddIn/Template.addin differ diff --git a/tests/src/CommonModules/ОМ_Общий/Module.bsl b/tests/src/CommonModules/ОМ_Общий/Module.bsl index 2e8aa1fe..b9155cc1 100644 --- a/tests/src/CommonModules/ОМ_Общий/Module.bsl +++ b/tests/src/CommonModules/ОМ_Общий/Module.bsl @@ -26,6 +26,7 @@ .ДобавитьТест("СформироватьСтрокуСимволов") .ДобавитьТест("ДанныеСовпадают") .ДобавитьТест("Пауза") + .ДобавитьТест("СообщитьВКонсоль") ; КонецПроцедуры @@ -43,6 +44,12 @@ КонецПроцедуры +Процедура СообщитьВКонсоль() Экспорт + + ЮТКомпоненты.Консоль().Напечатать(ТекущаяДата()); + +КонецПроцедуры + Процедура ДобавитьСтроку() Экспорт Варианты = ЮТест.Варианты("Исходная, Дополнение, Разделитель, Результат")