Skip to content

Commit

Permalink
Путь к файлам отчетов (vanessa-opensource#456)
Browse files Browse the repository at this point in the history
* #ONECICD-63_1

Добавил задание пути к отчету через путь к папке с отчетами.

Указывая путь вместе с файлом в настроке отчета, я ожидаю увидеть этот файл. генератор Allure же создает множество файлов в директории.

* #ONECICD-63

Поправил ошибку пути
Добавил тесты для отчетов Генератор Allure и Allurev2

* #ONECICD-63

Асинхронное получение имени файла отчета
  • Loading branch information
theshadowco authored and artbear committed May 15, 2019
1 parent 66bde71 commit 2f99a8c
Show file tree
Hide file tree
Showing 8 changed files with 544 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,11 @@
КонецПроцедуры
#КонецЕсли

Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
Процедура Экспортировать(Отчет, ПутьКОтчету) Экспорт

СтрокаXML = Отчет.ПолучитьТекст();

ИмяФайла = ПолныйПутьФайла;
ИмяФайла = ПутьКОтчету;

ИмяФайла = ПолучитьУникальноеИмяФайла(ИмяФайла);

Expand Down Expand Up @@ -211,12 +211,27 @@


// задаю уникальное имя для возможности получения одного отчета allure по разным тестовым наборам
Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла)
Файл = Новый Файл(ИмяФайла);
Функция ПолучитьУникальноеИмяФайла(Знач ПутьКОтчету)

Файл = Новый Файл(ПутьКОтчету);
ГУИД = Новый УникальныйИдентификатор;
ИмяФайла = СтрШаблон_("%1-%2-testsuite.xml", ГУИД, Файл.ИмяБезРасширения);
ИмяФайла = СтрШаблон_("%1/%2", Файл.Путь, ИмяФайла);
Возврат ИмяФайла;

Если Файл.Существует() И Файл.ЭтоКаталог() Тогда

ПутьКаталога = Файл.ПолноеИмя;
МаскаИмени = "";

Иначе

ПутьКаталога = Файл.Путь;
МаскаИмени = Файл.ИмяБезРасширения;

КонецЕсли;

ИмяФайла = СтрШаблон_("%1-%2-testsuite.xml", ГУИД, МаскаИмени);
КонечноеИмя = СтрШаблон_("%1/%2", ПутьКаталога, ИмяФайла);

Возврат КонечноеИмя;
КонецФункции

Процедура ПроверитьИмяФайлаРезультатаAllure(ИмяФайла) Экспорт
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,25 @@
КонецПроцедуры

&НаКлиенте
Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
Процедура Экспортировать(Отчет, ПутьКОтчету, ОписаниеЗавершения = Неопределено) Экспорт

Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда

НачатьПолучениеИмениФайла(Отчет, ПутьКОтчету, ОписаниеЗавершения);

Иначе

ИмяФайла = ПолучитьУникальноеИмяФайла(ПутьКОтчету);
НачатьСохранениеОтчета(Отчет, ИмяФайла, ОписаниеЗавершения);
КонецЕсли;

СтрокаXML = Отчет.ПолучитьТекст();

ИмяФайла = ПолныйПутьФайла;
КонецПроцедуры
// } Report generator interface

&НаКлиенте
Процедура НачатьСохранениеОтчета(Отчет, ИмяФайла, ОписаниеОповещения)

ИмяФайла = ПолучитьУникальноеИмяФайла(ИмяФайла);
СтрокаXML = Отчет.ПолучитьТекст();

ПроверитьИмяФайлаРезультатаAllureСервер(ИмяФайла);

Expand All @@ -58,32 +70,109 @@
Для НомерСтроки = 1 По КоличествоСтрок Цикл
Стр = СтрПолучитьСтроку(СтрокаXML, НомерСтроки);
ЗаписьТекста.ЗаписатьСтроку(Стр);
КонецЦикла;
КонецЦикла;
ЗаписьТекста.Закрыть();


Если ОписаниеОповещения <> Неопределено Тогда

ВыполнитьОбработкуОповещения(ОписаниеОповещения);

КонецЕсли;

КонецПроцедуры
// } Report generator interface

&НаКлиенте
Процедура НачатьЭкспорт(ОбработкаОповещения, Отчет, ПолныйПутьФайла) Экспорт

Экспортировать(Отчет, ПолныйПутьФайла);
ВыполнитьОбработкуОповещения(ОбработкаОповещения);
Экспортировать(Отчет, ПолныйПутьФайла, ОбработкаОповещения);

КонецПроцедуры


// { Helpers
&НаКлиенте
Процедура НачатьПолучениеИмениФайла(Отчет, ПутьКОтчету, ОписаниеЗавершения)
Файл = Новый Файл(ПутьКОтчету);
Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("НачатьПроверкуСуществованияЗавершение", ЭтаФорма, Новый Структура("Файл,Отчет,ОписаниеЗавершения", Файл, Отчет, ОписаниеЗавершения)));
КонецПроцедуры

&НаКлиенте
Процедура НачатьПроверкуСуществованияЗавершение(Существует, ДополнительныеПараметры) Экспорт

Файл = ДополнительныеПараметры.Файл;
ОписаниеЗавершения = ДополнительныеПараметры.ОписаниеЗавершения;
Отчет = ДополнительныеПараметры.Отчет;
Если Существует Тогда

Файл.НачатьПроверкуЭтоКаталог(Новый ОписаниеОповещения("НачатьПроверкуЭтоКаталогЗавершение", ЭтаФорма, Новый Структура("Файл,Отчет,ОписаниеЗавершения", Файл, Отчет, ОписаниеЗавершения)));

Иначе

ИмяФайла = СформироватьИмя(Файл.Путь, Файл.ИмяБезРасширения);

НачатьСохранениеОтчета(Отчет, ИмяФайла, ОписаниеЗавершения);

КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура НачатьПроверкуЭтоКаталогЗавершение(ЭтоКаталог, ДополнительныеПараметры) Экспорт

Файл = ДополнительныеПараметры.Файл;
ОписаниеЗавершения = ДополнительныеПараметры.ОписаниеЗавершения;
Отчет = ДополнительныеПараметры.Отчет;

Если ЭтоКаталог Тогда

ПутьОтчета = Файл.ПолноеИмя;
МаскаИмени = "";

Иначе

ПутьОтчета = Файл.Путь;
МаскаИмени = Файл.ИмяБезРасширения;

КонецЕсли;

ИмяФайла = СформироватьИмя(ПутьОтчета, МаскаИмени);
НачатьСохранениеОтчета(Отчет, ИмяФайла, ОписаниеЗавершения);

КонецПроцедуры

&НаКлиенте
// задаю уникальное имя для возможности получения одного отчета allure по разным тестовым наборам
Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла)
Файл = Новый Файл(ИмяФайла);
Функция ПолучитьУникальноеИмяФайла(Знач ПутьКОтчету)

Файл = Новый Файл(ПутьКОтчету);

Если Файл.Существует() И Файл.ЭтоКаталог() Тогда

ПутьКаталога = Файл.ПолноеИмя;
МаскаИмени = "";

Иначе

ПутьКаталога = Файл.Путь;
МаскаИмени = Файл.ИмяБезРасширения;

КонецЕсли;

Возврат СформироватьИмя(ПутьКаталога, МаскаИмени);

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

&НаКлиенте
Функция СформироватьИмя(Путь, МаскаИмени = "")

ГУИД = Новый УникальныйИдентификатор;

ИмяФайла = СтрЗаменить("%1-%2-testsuite.xml", "%1", ГУИД);
ИмяФайла = СтрЗаменить(ИмяФайла, "%2", Файл.ИмяБезРасширения);
ИмяФайла = Файл.Путь + "/"+ ИмяФайла;
ИмяФайла = СтрЗаменить(ИмяФайла, "%2", МаскаИмени);

ИмяФайла = Путь + "/" + ИмяФайла;

Возврат ИмяФайла;

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

&НаСервере
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
КонецПроцедуры
#КонецЕсли

Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт
Процедура Экспортировать(Отчет, ПутьКОтчету) Экспорт

Перем СтрокаJSON;

Expand All @@ -70,7 +70,7 @@
СтрокаJSON = Отчет.ПолучитьТекст();
КонецЕсли;

ИмяФайла = ПолныйПутьФайла;
ИмяФайла = ПутьКОтчету;

ИмяФайла = ПолучитьУникальноеИмяФайла(ИмяФайла);

Expand Down Expand Up @@ -249,11 +249,16 @@
КонецФункции

// задаю уникальное имя для возможности получения одного отчета allure по разным тестовым наборам
Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла)
Файл = Новый Файл(ИмяФайла);
Функция ПолучитьУникальноеИмяФайла(Знач ПутьКОтчету)

Файл = Новый Файл(ПутьКОтчету);
ГУИД = Новый УникальныйИдентификатор;

ПутьКаталога = ?(Файл.Существует() И Файл.ЭтоКаталог(), Файл.ПолноеИмя, Файл.Путь);
ИмяФайла = СтрШаблон_("%1-result.json", ГУИД);
ИмяФайла = СтрШаблон_("%1/%2", Файл.Путь, ИмяФайла);

ИмяФайла = СтрШаблон_("%1/%2", ПутьКаталога, ИмяФайла);

Возврат ИмяФайла;
КонецФункции

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,33 +40,104 @@
КонецПроцедуры

&НаКлиенте
Процедура Экспортировать(Отчет, ПолныйПутьФайла) Экспорт

СтрокаJSON = Отчет.ПолучитьТекст();

ИмяФайла = ПолныйПутьФайла;
Процедура Экспортировать(Отчет, ПутьКОтчету, ОписаниеЗавершения = Неопределено) Экспорт

ИмяФайла = ПолучитьУникальноеИмяФайла(ИмяФайла);
Если КонтекстЯдра.ЕстьПоддержкаАсинхронныхВызовов Тогда

НачатьПолучениеИмениФайла(Отчет, ПутьКОтчету, ОписаниеЗавершения);

Иначе

ИмяФайла = ПолучитьУникальноеИмяФайла(ПутьКОтчету);
НачатьСохранениеОтчета(Отчет, ИмяФайла, ОписаниеЗавершения);
КонецЕсли;

КонецПроцедуры
// } Report generator interface

&НаКлиенте
Процедура НачатьСохранениеОтчета(Отчет, ИмяФайла, ОписаниеОповещения = Неопределено)

ПроверитьИмяФайлаРезультатаAllureСервер(ИмяФайла);

СтрокаJSON = Отчет.ПолучитьТекст();

// Запись файла с кодировкой "UTF-8", а не "UTF-8 with BOM"
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
ЗаписьТекста.Закрыть();

ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла,,, Истина);
ЗаписьТекста.Записать(СтрокаJSON);
ЗаписьТекста.Закрыть();

Если ОписаниеОповещения <> Неопределено Тогда

ВыполнитьОбработкуОповещения(ОписаниеОповещения);

КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура НачатьПолучениеИмениФайла(Отчет, ПутьКОтчету, ОписаниеЗавершения)
Файл = Новый Файл(ПутьКОтчету);
Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("НачатьПроверкуСуществованияЗавершение", ЭтаФорма, Новый Структура("Файл,Отчет,ОписаниеЗавершения", Файл, Отчет, ОписаниеЗавершения)));
КонецПроцедуры
// } Report generator interface

&НаКлиенте
Процедура НачатьЭкспорт(ОбработкаОповещения, Отчет, ПолныйПутьФайла) Экспорт
Процедура НачатьПроверкуСуществованияЗавершение(Существует, ДополнительныеПараметры) Экспорт

Файл = ДополнительныеПараметры.Файл;
ОписаниеЗавершения = ДополнительныеПараметры.ОписаниеЗавершения;
Отчет = ДополнительныеПараметры.Отчет;
Если Существует Тогда

Файл.НачатьПроверкуЭтоКаталог(Новый ОписаниеОповещения("НачатьПроверкуЭтоКаталогЗавершение", ЭтаФорма, Новый Структура("Файл,Отчет,ОписаниеЗавершения", Файл, Отчет, ОписаниеЗавершения)));

Иначе

ИмяФайла = СформироватьИмя(Файл.Путь);
НачатьСохранениеОтчета(Отчет, ИмяФайла, ОписаниеЗавершения);
КонецЕсли;

КонецПроцедуры

Экспортировать(Отчет, ПолныйПутьФайла);
ВыполнитьОбработкуОповещения(ОбработкаОповещения);
&НаКлиенте
Процедура НачатьПроверкуЭтоКаталогЗавершение(ЭтоКаталог, ДополнительныеПараметры) Экспорт

Файл = ДополнительныеПараметры.Файл;
ОписаниеЗавершения = ДополнительныеПараметры.ОписаниеЗавершения;
Отчет = ДополнительныеПараметры.Отчет;

Если ЭтоКаталог Тогда

ПутьОтчета = Файл.ПолноеИмя;

Иначе

ПутьОтчета = Файл.Путь;

КонецЕсли;
ПутьОтчета = СформироватьИмя(ПутьОтчета);
НачатьСохранениеОтчета(Отчет, ПутьОтчета, ОписаниеЗавершения);
КонецПроцедуры

&НаКлиенте
Функция СформироватьИмя(Путь)

ГУИД = Новый УникальныйИдентификатор;

ИмяФайла = СтрЗаменить("%1-result.json", "%1", ГУИД);

ИмяФайла = Путь + "/" + ИмяФайла;

Возврат ИмяФайла;
КонецФункции
&НаКлиенте
Процедура НачатьЭкспорт(ОбработкаОповещения, Отчет, ПолныйПутьФайла) Экспорт

Экспортировать(Отчет, ПолныйПутьФайла, ОбработкаОповещения);

КонецПроцедуры

&НаКлиенте
Expand All @@ -77,20 +148,23 @@

&НаСервере
Процедура ЗаписатьРезультатТестаНаСервере(Знач РезультатТеста, Знач ПолныйПутьФайла) Экспорт
ЭтотОбъектНаСервере().ЗаписатьРезультатТестаНаСервере(РезультатТеста, ПолныйПутьФайла);
ЭтотОбъектНаСервере().ЗаписатьРезультатТестаНаСервере(РезультатТеста, ПолныйПутьФайла);
КонецПроцедуры

// { Helpers

&НаКлиенте
// задаю уникальное имя для возможности получения одного отчета allure по разным тестовым наборам
Функция ПолучитьУникальноеИмяФайла(Знач ИмяФайла)
Файл = Новый Файл(ИмяФайла);
ГУИД = Новый УникальныйИдентификатор;
ИмяФайла = СтрЗаменить("%1-result.json", "%1", ГУИД);
//ИмяФайла = СтрЗаменить(ИмяФайла, "%2", Файл.ИмяБезРасширения);
ИмяФайла = Файл.Путь + "/"+ ИмяФайла;
Функция ПолучитьУникальноеИмяФайла(Знач ПутьКОтчету)

Файл = Новый Файл(ПутьКОтчету);

ПутьКаталога = ?(Файл.Существует() И Файл.ЭтоКаталог(), Файл.ПолноеИмя, Файл.Путь);

ИмяФайла = СформироватьИмя(ПутьКаталога);

Возврат ИмяФайла;

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

&НаСервере
Expand Down
Loading

0 comments on commit 2f99a8c

Please sign in to comment.