mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-23 18:54:40 +02:00
Merge pull request #186 from bia-technologies/feature/169
Сокращение сообщения об ошибке
This commit is contained in:
commit
67e287eb80
@ -236,6 +236,20 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// КонтекстОшибки
|
||||
// Возвращает служебный контекст, содержит дополнительные детали ошибки теста
|
||||
// Параметры:
|
||||
// ПолучитьССервера - Булево - Получить значение из серверного контекста
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Неопределено, Массив из Строка- Детали ошибки
|
||||
Функция КонтекстДеталиОшибки(ПолучитьССервера = Ложь) Экспорт
|
||||
|
||||
//@skip-check constructor-function-return-section
|
||||
Возврат ЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ПолучитьССервера);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеКонтекста() Экспорт
|
||||
|
||||
Описание = Новый Структура;
|
||||
@ -293,6 +307,12 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьКонтекстДеталиОшибки(Знач ДанныеКонтекста) Экспорт
|
||||
|
||||
УстановитьЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ДанныеКонтекста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьКонтекст() Экспорт
|
||||
|
||||
#Если Клиент Тогда
|
||||
@ -354,4 +374,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИмяКонтекстаДеталиОшибки()
|
||||
|
||||
Возврат "ДеталиОшибки";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -137,8 +137,8 @@
|
||||
|
||||
Исключение
|
||||
|
||||
Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
|
||||
ВызватьИсключение СтрШаблон("Ошибка загрузки настроек из файла: '%1'", Ошибка);
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка загрузки настроек из файла");
|
||||
ВызватьИсключение;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
|
@ -26,10 +26,11 @@
|
||||
// ИмяСобытия - Строка
|
||||
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
|
||||
// Ошибка - ИнформацияОбОшибке
|
||||
// - Строка
|
||||
Процедура ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка) Экспорт
|
||||
|
||||
ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия;
|
||||
Пояснение = СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, Ошибка.Описание);
|
||||
Пояснение = ЮТСообщенияСлужебный.СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка);
|
||||
ДанныеОшибки = ДанныеОшибки(Ошибка, Пояснение, ТипОшибки);
|
||||
|
||||
Если ОписаниеСобытия.Тест <> Неопределено Тогда
|
||||
@ -70,7 +71,7 @@
|
||||
ИначеЕсли ТипОшибки = ЮТФабрика.ТипыОшибок().Пропущен Тогда
|
||||
ДанныеОшибки = ДанныеОшибкиПропуска(Ошибка);
|
||||
Иначе
|
||||
ДанныеОшибки = ДанныеОшибки(Ошибка, Ошибка.Описание, ТипОшибки);
|
||||
ДанныеОшибки = ДанныеОшибки(Ошибка, ЮТСообщенияСлужебный.КраткоеСообщениеОшибки(Ошибка), ТипОшибки);
|
||||
КонецЕсли;
|
||||
|
||||
Тест.Ошибки.Добавить(ДанныеОшибки);
|
||||
@ -131,7 +132,7 @@
|
||||
ОбъектПроверки = "проверяемое значение") Экспорт
|
||||
|
||||
УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение);
|
||||
ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -147,7 +148,7 @@
|
||||
Процедура СгенерироватьОшибкуУтверждения(ОписаниеПроверки, Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
|
||||
|
||||
УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение);
|
||||
ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
|
||||
ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
|
||||
|
||||
КонецПроцедуры
|
||||
@ -186,7 +187,7 @@
|
||||
|
||||
Процедура ЗарегистрироватьОшибкуИнициализацииДвижка(Ошибка, Описание) Экспорт
|
||||
|
||||
Ошибка(Ошибка, Описание);
|
||||
СообщитьОбОшибке(Ошибка, Описание);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -324,42 +325,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Форматированный текст ошибки утверждения.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
// ТекстОжидания - Строка - Описание ожидания
|
||||
// ОбъектПроверки - Строка - Объект проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Форматированный текст ошибки утверждения
|
||||
Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда
|
||||
ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
ВставкаСвойство = "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда
|
||||
ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление;
|
||||
Иначе
|
||||
ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение);
|
||||
КонецЕсли;
|
||||
|
||||
// Заголовок сообщения
|
||||
ТекстСообщения = "";
|
||||
// Тело сообщения
|
||||
ТекстСообщения = СтрШаблон("ожидали, что %1 %2%3 %4, но это не так.",
|
||||
ОбъектПроверки,
|
||||
ПредставлениеЗначения,
|
||||
ВставкаСвойство,
|
||||
ТекстОжидания);
|
||||
|
||||
Возврат ТекстСообщения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьОписания(ТекстОшибки, ОписаниеПроверки = Неопределено) Экспорт
|
||||
|
||||
Если ОписаниеПроверки <> Неопределено Тогда
|
||||
@ -399,18 +364,60 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьПояснениеОшибки(Пояснение) Экспорт
|
||||
|
||||
Детали = ЮТКонтекст.КонтекстДеталиОшибки();
|
||||
Установить = Детали = Неопределено;
|
||||
|
||||
Если Установить Тогда
|
||||
Детали = Новый Массив();
|
||||
КонецЕсли;
|
||||
|
||||
Детали.Добавить(Пояснение);
|
||||
|
||||
Если Установить Тогда
|
||||
ЮТКонтекст.УстановитьКонтекстДеталиОшибки(Детали);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
#Область КонструкторыОписанийОшибки
|
||||
|
||||
Функция ДанныеОшибки(Ошибка, Сообщение, ТипОшибки)
|
||||
Функция ДанныеОшибки(Ошибка, Знач Сообщение, ТипОшибки)
|
||||
|
||||
#Если Сервер Тогда
|
||||
Детали = ЮТКонтекст.КонтекстДеталиОшибки(Истина);
|
||||
#Иначе
|
||||
ДеталиСервер = ЮТКонтекст.КонтекстДеталиОшибки(Истина);
|
||||
ДеталиКлиент = ЮТКонтекст.КонтекстДеталиОшибки();
|
||||
|
||||
Если ЗначениеЗаполнено(ДеталиКлиент) И ЗначениеЗаполнено(ДеталиСервер) Тогда
|
||||
ЮТОбщий.ДополнитьМассив(ДеталиСервер, ДеталиКлиент);
|
||||
Детали = ДеталиСервер;
|
||||
ИначеЕсли ЗначениеЗаполнено(ДеталиКлиент) Тогда
|
||||
Детали = ДеталиКлиент;
|
||||
ИначеЕсли ЗначениеЗаполнено(ДеталиСервер) Тогда
|
||||
Детали = ДеталиСервер;
|
||||
Иначе
|
||||
Детали = Неопределено;
|
||||
КонецЕсли;
|
||||
#КонецЕсли
|
||||
|
||||
Если ЗначениеЗаполнено(Детали) Тогда
|
||||
ЮТКонтекст.УстановитьКонтекстДеталиОшибки(Новый Массив());
|
||||
|
||||
Детали.Добавить(Сообщение);
|
||||
Сообщение = СтрСоединить(Детали, Символы.ПС);
|
||||
КонецЕсли;
|
||||
|
||||
ДанныеОшибки = ЮТФабрика.ОписаниеВозникшейОшибки(ТипОшибки + ": " + Сообщение);
|
||||
|
||||
Если Ошибка <> Неопределено Тогда
|
||||
ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка);
|
||||
ДанныеОшибки.Стек = СтекОшибки(Ошибка);
|
||||
КонецЕсли;
|
||||
ДанныеОшибки.ТипОшибки = ТипОшибки;
|
||||
ДобавитьСообщенияПользователю(ДанныеОшибки);
|
||||
@ -419,13 +426,23 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СтекОшибки(Ошибка)
|
||||
|
||||
Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда
|
||||
Возврат ПодробноеПредставлениеОшибки(Ошибка);
|
||||
Иначе
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДанныеОшибкиУтверждений(Ошибка)
|
||||
|
||||
Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиУтверждений());
|
||||
|
||||
ДанныеОшибки = ЮТФабрика.ОписаниеОшибкиСравнения(Описание);
|
||||
|
||||
ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка);
|
||||
ДанныеОшибки.Стек = СтекОшибки(Ошибка);
|
||||
ДобавитьСообщенияПользователю(ДанныеОшибки);
|
||||
|
||||
СтруктураОшибки = ЮТКонтекст.КонтекстОшибки();
|
||||
@ -472,10 +489,9 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура Ошибка(Ошибка, Описание)
|
||||
Процедура СообщитьОбОшибке(Ошибка, Описание)
|
||||
|
||||
ТекстОшибки = ПредставлениеОшибки(Описание, Ошибка);
|
||||
ЮТОбщий.СообщитьПользователю(ТекстОшибки);
|
||||
ЮТОбщий.СообщитьПользователю(ПредставлениеОшибки(Описание, Ошибка));
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -0,0 +1,92 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// Copyright 2021-2023 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Форматированный текст ошибки утверждения.
|
||||
//
|
||||
// Параметры:
|
||||
// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
|
||||
// ТекстОжидания - Строка - Описание ожидания
|
||||
// ОбъектПроверки - Строка - Объект проверки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Форматированный текст ошибки утверждения
|
||||
Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда
|
||||
ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства);
|
||||
Иначе
|
||||
ВставкаСвойство = "";
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда
|
||||
ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление;
|
||||
Иначе
|
||||
ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение);
|
||||
КонецЕсли;
|
||||
|
||||
// Заголовок сообщения
|
||||
ТекстСообщения = "";
|
||||
// Тело сообщения
|
||||
ТекстСообщения = СтрШаблон("ожидали, что %1 %2%3 %4, но это не так.",
|
||||
ОбъектПроверки,
|
||||
ПредставлениеЗначения,
|
||||
ВставкаСвойство,
|
||||
ТекстОжидания);
|
||||
|
||||
Возврат ТекстСообщения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Сообщение об ошибке события.
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяСобытия - Строка
|
||||
// Ошибка - Строка - Текст ошибки
|
||||
// - ИнформацияОбОшибке - ошибка выполнения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Сообщение об ошибке события
|
||||
Функция СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка) Экспорт
|
||||
|
||||
ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия;
|
||||
Возврат СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, КраткоеСообщениеОшибки(Ошибка));
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КраткоеСообщениеОшибки(Ошибка) Экспорт
|
||||
|
||||
Если ЭтоИнформацияОбОшибке(Ошибка) Тогда
|
||||
Возврат КраткоеПредставлениеОшибки(Ошибка);
|
||||
Иначе
|
||||
Возврат Ошибка;
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция ЭтоИнформацияОбОшибке(Ошибка) Экспорт
|
||||
|
||||
Возврат ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке");
|
||||
|
||||
КонецФункции
|
||||
#КонецОбласти
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="12de2656-e7f8-42f9-b620-006310aa949e">
|
||||
<name>ЮТСообщенияСлужебный</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Сообщения служебный</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -437,7 +437,9 @@
|
||||
Попытка
|
||||
Результат = РегулярныеВыражения.Совпадает(ПроверяемаяСтрока, РегулярноеВыражение);
|
||||
Исключение
|
||||
ВызватьИсключение РегулярныеВыражения.ОписаниеОшибки;
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка проверки строки по шаблону " + РегулярноеВыражение);
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(РегулярныеВыражения.ОписаниеОшибки);
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
|
||||
Возврат Результат;
|
||||
@ -636,7 +638,7 @@
|
||||
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
|
||||
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
|
||||
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
|
||||
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
|
||||
|
||||
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
|
||||
|
@ -292,9 +292,8 @@
|
||||
|
||||
Исключение
|
||||
|
||||
Сообщение = СтрШаблон("Не удалось записать объект `%1` (%2)
|
||||
|%3", Объект, ТипЗнч(Объект), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
ВызватьИсключение Сообщение;
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(СтрШаблон("Не удалось записать объект `%1` (%2)", Объект, ТипЗнч(Объект)));
|
||||
ВызватьИсключение;
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
|
@ -48,8 +48,8 @@
|
||||
СериализаторXDTO.ЗаписатьJSON(Запись, Тип);
|
||||
Возврат Запись.Закрыть();
|
||||
Исключение
|
||||
ВызватьИсключение СтрШаблон("Не удалось определить индетификатор типа для `%1`
|
||||
|%2", Тип, ОписаниеОшибки());
|
||||
ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(СтрШаблон("Не удалось определить идетификатор типа для `%1`", Тип));
|
||||
ВызватьИсключение;
|
||||
КонецПопытки;
|
||||
#КонецЕсли
|
||||
|
||||
|
@ -94,6 +94,7 @@
|
||||
<commonModules>CommonModule.ЮТРасширения</commonModules>
|
||||
<commonModules>CommonModule.ЮТРегистрацияОшибок</commonModules>
|
||||
<commonModules>CommonModule.ЮТСобытия</commonModules>
|
||||
<commonModules>CommonModule.ЮТСообщенияСлужебный</commonModules>
|
||||
<commonModules>CommonModule.ЮТСравнениеКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТСравнениеСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТСтроки</commonModules>
|
||||
|
Loading…
x
Reference in New Issue
Block a user