diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index 9c02c32..620c7a4 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -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 }} diff --git a/sonar-project.properties b/sonar-project.properties index 523def8..97c70c7 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -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. diff --git a/tasks/coverage.os b/tasks/coverage.os index 2dd8ed7..128cbd6 100644 --- a/tasks/coverage.os +++ b/tasks/coverage.os @@ -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 КодВозврата diff --git a/tasks/test.os b/tasks/test.os index 3c3725e..cef9cbd 100644 --- a/tasks/test.os +++ b/tasks/test.os @@ -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> - |", ФичиПрошли)); КонецЕсли;