Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Полная информация об исключении при загрузке файлов с дымовыми тестами в случае конфигурации с поддержкой синхронности #1096

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -181,17 +181,11 @@
&НаКлиенте
Функция ЗагрузитьФайл(КонтекстЯдра, ФайлОбработки)
ЗагрузчикФайла = КонтекстЯдра.Плагин("ЗагрузчикФайла");
Попытка
ДеревоТестовФайла = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработки.ПолноеИмя);
Результат = ДеревоТестовФайла;
Если ДеревоТестовФайла.Строки.Количество() > 0 Тогда
Результат = ДеревоТестовФайла.Строки[0];
КонецЕсли;

Исключение
Сообщить("Не удалось загрузить файл " + ФайлОбработки.ПолноеИмя + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Результат = Неопределено;
КонецПопытки;
ДеревоТестовФайла = ЗагрузчикФайла.Загрузить(КонтекстЯдра, ФайлОбработки.ПолноеИмя);
Результат = ДеревоТестовФайла;
Если ДеревоТестовФайла.Строки.Количество() > 0 Тогда
Результат = ДеревоТестовФайла.Строки[0];
КонецЕсли;

Возврат Результат;
КонецФункции
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,33 +140,54 @@
ПолноеИмяБраузераТестов = КонтекстЯдра.Объект.ПолноеИмяБраузераТестов;

ПостроительДереваТестов = КонтекстЯдра.Плагин("ПостроительДереваТестов");
ДеревоТестов = Неопределено;
Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл
ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Сч));
ПроверитьКорректностьФайла(ФайлОбработки);
ИмяКонтейнера = СтрПолучитьСтроку(Путь, 1);
ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ИмяКонтейнера);
Попытка
Для Сч = 1 По СтрЧислоСтрок(Путь) Цикл
ФайлОбработки = Новый Файл(СтрПолучитьСтроку(Путь, Сч));
ПроверитьКорректностьФайла(ФайлОбработки);

ПодключитьВнешнююОбработку(КонтекстЯдра, ФайлОбработки);

ИмяОбработки = "";
МассивСообщений = Неопределено;

КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя, ИмяОбработки,
КонтекстЯдра.Объект, МассивСообщений);
КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки,
КонтекстЯдра, ИмяОбработки);
Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда
КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки);
КонецЕсли;
Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда
ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки);
КонецЕсли;

КонтекстЯдра.ВывестиНакопленныеСообщенияОтСервераВРежимеОтладки(МассивСообщений);
КонецЦикла;

Если ДеревоТестов = Неопределено Тогда
ДеревоТестов = ПостроительДереваТестов.СоздатьКонтейнер(ФайлОбработки.Путь);
КонецЕсли;
Исключение

ПодключитьВнешнююОбработку(КонтекстЯдра, ФайлОбработки);
ШаблонСообщения = НСтр("ru = 'Не удалось загрузить файл %1
|%2'");

ИмяОбработки = "";
МассивСообщений = Неопределено;

КонтейнерССервернымиТестамиОбработки = ЗагрузитьФайлНаСервере(ФайлОбработки.ПолноеИмя, ИмяОбработки,
КонтекстЯдра.Объект, МассивСообщений);
КонтейнерСКлиентскимиТестамиОбработки = ЗагрузитьФайлНаКлиенте(ПостроительДереваТестов, ФайлОбработки,
КонтекстЯдра, ИмяОбработки);
Если КонтейнерСКлиентскимиТестамиОбработки.Строки.Количество() > 0 Тогда
КонтейнерССервернымиТестамиОбработки.Строки.Добавить(КонтейнерСКлиентскимиТестамиОбработки);
КонецЕсли;
Если КонтейнерССервернымиТестамиОбработки.Строки.Количество() > 0 Тогда
ДеревоТестов.Строки.Добавить(КонтейнерССервернымиТестамиОбработки);
КонецЕсли;
ИнформацияОбОшибке = ИнформацияОбОшибке();
ПолныйТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
КраткийТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);

КонтекстЯдра.ВывестиНакопленныеСообщенияОтСервераВРежимеОтладки(МассивСообщений);
КонецЦикла;
ПолныйТекстОшибки = СтрШаблон(ШаблонСообщения, Путь, ПолныйТекстОшибки);
КраткийТекстОшибки = СтрШаблон(ШаблонСообщения, Путь, КраткийТекстОшибки);

КонтекстЯдра.Отладка(ПолныйТекстОшибки);
КонтекстЯдра.ЗафиксироватьОшибкуВЖурналеРегистрации("ЗагрузкаТестов", ПолныйТекстОшибки);
КонтекстЯдра.ВывестиСообщение(КраткийТекстОшибки, СтатусСообщения.Внимание);

// Тут достаточно взвести флаг ошибки для всех тестов целиком и продолжить, но непонятно как взвести флаг ошибки отсюда.
// Поэтому пока вызываем исключение.
// Лучше ведь починить и перезапустить, чем пропустить ошибку из-за незагруженного файла с тестами.
ВызватьИсключение;

КонецПопытки;

Возврат ДеревоТестов;
КонецФункции
Expand Down