Skip to content

Замеры покрытия при выполнении фич #96

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

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ jobs:

# https://docs.sonarqube.org/latest/analysis/pull-request/
- name: Анализ в SonarQube (pull-request)
if: github.event_name == 'pull_request'
if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'
run: sonar-scanner
-Dsonar.login=${{ secrets.SONARQUBE_TOKEN }}
-Dsonar.host.url=${{ secrets.SONARQUBE_HOST }}
Expand Down
2 changes: 1 addition & 1 deletion sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
sonar.projectKey=gitsync-plugins

# this is the name displayed in the SonarQube UI
sonar.projectName=Embedded plugins for Gitsync
sonar.projectName=gitsync-plugins

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set.
Expand Down
55 changes: 48 additions & 7 deletions tasks/coverage.os
Original file line number Diff line number Diff line change
@@ -1,29 +1,70 @@
#Использовать 1commands
#Использовать fs
#Использовать coverage
#Использовать 1commands

ФС.ОбеспечитьПустойКаталог("coverage");
ПутьКСтат = ОбъединитьПути("coverage", "stat.json");
ИмяПакета = "gitsync-plugins";

ИмяКаталогаФайловПокрытия = "coverage";
ИмяОбщегоФайлаПокрытия = "stat.json";
ШаблонИменФайловПокрытия = "*.json";

ФС.ОбеспечитьПустойКаталог(ИмяКаталогаФайловПокрытия);
ПутьКСтат = ОбъединитьПути(ИмяКаталогаФайловПокрытия, ИмяОбщегоФайлаПокрытия);

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

Команда = Новый Команда;
Команда.УстановитьКоманду("oscript");
Если НЕ ЭтоWindows Тогда
Команда.ДобавитьПараметр("-encoding=utf-8");
КонецЕсли;
Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
Команда.ДобавитьПараметр("tasks/test.os");
Команда.ДобавитьПараметр("tasks/test.os coverage");
Команда.ПоказыватьВыводНемедленно(Истина);

КодВозврата = Команда.Исполнить();

Файл_Стат = Новый Файл(ПутьКСтат);

ИмяПакета = "gitsync-plugins";
// Заменяем пути в файлах на ./src
ПутьКИсходникам = ОбъединитьПути(ТекущийСценарий(), "..", "src");
КаталогИсходников = Новый Файл(ПутьКИсходникам).ПолноеИмя;
КаталогИсходников = СтрЗаменить(КаталогИсходников, "\", "\\");

// взято из gitsync
СистемнаяИнформация = Новый СистемнаяИнформация;
ОбщийКаталогДанныхПриложений = СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений);
ПутьУстановкиПлагинов = ОбъединитьПути(ОбщийКаталогДанныхПриложений, "gitsync", "plugins");
ПутьИсходниковУстановленныхПлагинов = ОбъединитьПути(ПутьУстановкиПлагинов, "gitsync-plugins", "src");
ПолноеИмяКаталогаИсходниковУстановленныхПлагинов = Новый Файл(ПутьИсходниковУстановленныхПлагинов).ПолноеИмя;

ПолноеИмяКаталогаИсходниковУстановленныхПлагинов = СтрЗаменить(ПолноеИмяКаталогаИсходниковУстановленныхПлагинов, "\", "\\");

ФайлыСтатистики = НайтиФайлы(ИмяКаталогаФайловПокрытия, ШаблонИменФайловПокрытия);
Для Каждого ФайлСтатистики Из ФайлыСтатистики Цикл

ЧтениеТекста = Новый ЧтениеТекста(ФайлСтатистики.ПолноеИмя, КодировкаТекста.UTF8NoBOM);
Содержимое = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

Содержимое = СтрЗаменить(Содержимое, ПолноеИмяКаталогаИсходниковУстановленныхПлагинов, КаталогИсходников);

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

КонецЦикла;

ПроцессорГенерации = Новый ГенераторОтчетаПокрытия();

ПроцессорГенерации.ОтносительныеПути()
.ИмяФайлаСтатистики("stat.json")
.РабочийКаталог(ИмяКаталогаФайловПокрытия)
.ИмяФайлаСтатистики(ШаблонИменФайловПокрытия)
.ФайлСтатистики(Файл_Стат.ПолноеИмя)
.GenericCoverage()
.Cobertura()
.Clover(ИмяПакета)
.Сформировать();

ЗавершитьРаботу(КодВозврата);
ЗавершитьРаботу(0); // TODO КодВозврата
93 changes: 41 additions & 52 deletions tasks/test.os
Original file line number Diff line number Diff line change
@@ -1,85 +1,74 @@
// #Использовать "../src"
#Использовать 1bdd
#Использовать 1testrunner
#Использовать fs

Функция ПрогнатьТесты()

Тестер = Новый Тестер;
Функция ПрогнатьФичи(Знач КаталогФайловПокрытия, Знач ПутьФич = "features", Знач ПутьОтчетаJUnit = "./bdd-log.xml")

ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests");
ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, "..");
КаталогФич = ОбъединитьПути(".", ПутьФич);

КаталогТестов = Новый Файл(ПутьКТестам);
Если Не КаталогТестов.Существует() Тогда
Сообщить(СтрШаблон("Не найден каталог тестов %1", ПутьКТестам));
Возврат Истина;
КонецЕсли;

РезультатТестирования = Тестер.ТестироватьКаталог(
КаталогТестов,
Новый Файл(ПутьКОтчетуJUnit)
);

Успешно = РезультатТестирования = 0;

Возврат Успешно;
КонецФункции // ПрогнатьТесты()

Функция ПрогнатьФичи()

ПутьКОтчетам = ОбъединитьПути("build", "reports");
СоздатьКаталог(ПутьКОтчетам);

ПутьОтчетаJUnit = ОбъединитьПути(ПутьКОтчетам, "bdd-log.xml");
Файл_КаталогФич = Новый Файл(КаталогФич);

КаталогФич = ОбъединитьПути(".", "features");
ИсполнительБДД = Новый ИсполнительБДД;

Файл_КаталогФич = Новый Файл(КаталогФич);
Если Не Файл_КаталогФич.Существует() Тогда
Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич));
Возврат Истина;
Если ЗначениеЗаполнено(КаталогФайловПокрытия) Тогда
ИсполнительБДД.СохранитьВКонтекст("ПризнакСтатистикиСкриптовOnescript", Новый Файл(КаталогФайловПокрытия));
КонецЕсли;

ИсполнительБДД = Новый ИсполнительБДД;
РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич);
ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);

СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся;
СтатусыВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения();

СтатусВыполнения = СтатусыВыполнения.НеВыполнялся;
Если РезультатыВыполнения.Строки.Количество() > 0 Тогда

СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);

ИсполнительБДД.ПоказатьПроблемныеСценарии(РезультатыВыполнения);

ИсполнительБДД.ВывестиИтоговыеРезультатыВыполнения(РезультатыВыполнения, Файл_КаталогФич.ЭтоКаталог());
КонецЕсли;

ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit);

Сообщить(СтрШаблон("Результат прогона фич <%1>
|", ИтоговыйРезультатВыполнения));
Сообщить(СтрШаблон("Результат прогона фич <%1>. Путь %2
|", ИтоговыйРезультатВыполнения, ПутьФич));

Возврат ИтоговыйРезультатВыполнения <> СтатусыВыполнения.Сломался;
КонецФункции

ИмяКаталогаФайловПокрытия = "coverage";

// основной код

ТекКаталог = ТекущийКаталог();

Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался;
КонецФункции // ПрогнатьФичи()
КаталогФайловПокрытия = "";

// Попытка
// ТестыПрошли = ПрогнатьТесты();
ИспользуетсяПокрытиеКода = Ложь;
Для каждого Элемент Из АргументыКоманднойСтроки Цикл
Если Элемент = "coverage" Тогда

// Исключение
// ТестыПрошли = Ложь;
// Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
// |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
// КонецПопытки;
КаталогФайловПокрытия = ОбъединитьПути(ТекущийКаталог(), ".", ИмяКаталогаФайловПокрытия);
ФС.ОбеспечитьПустойКаталог(КаталогФайловПокрытия);

Прервать;
КонецЕсли;
КонецЦикла;

УстановитьТекущийКаталог(ТекКаталог);

Попытка
ФичиПрошли = ПрогнатьФичи();
ФичиПрошли = ПрогнатьФичи(КаталогФайловПокрытия, "features");
Исключение
ФичиПрошли = Ложь;
Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно
|%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
КонецПопытки;

Сообщить(СтрШаблон("Результат прогона основных фич <%1>
|", ФичиПрошли));

Если Не ФичиПрошли Тогда
ВызватьИсключение "Тестирование завершилось неудачно!";
Иначе
Сообщить(СтрШаблон("Результат прогона тестов <%1>
|", ФичиПрошли));
КонецЕсли;
Loading