mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-01-03 22:52:10 +02:00
#ONECICD-20
Доработал сценарий и добавил тесты
This commit is contained in:
parent
557690e52a
commit
9e1f616819
55
features/step_definitions/ПроверкаСцераниевОбработки.os
Normal file
55
features/step_definitions/ПроверкаСцераниевОбработки.os
Normal file
@ -0,0 +1,55 @@
|
||||
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
|
||||
|
||||
#Использовать asserts
|
||||
#Использовать logos
|
||||
|
||||
Перем БДД;
|
||||
|
||||
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
|
||||
|
||||
БДД = КонтекстФреймворкаBDD;
|
||||
|
||||
ВсеШаги = Новый Массив;
|
||||
ВсеШаги.Добавить("ЯПолучаюФайлДляПроверкиДублейПроцедурИФункций");
|
||||
ВсеШаги.Добавить("ВыполнениеСценарияВызываетИсключениеСТекстом");
|
||||
ВсеШаги.Добавить("ВыполнениеСценарияПроходитШтатно");
|
||||
|
||||
Возврат ВсеШаги;
|
||||
КонецФункции
|
||||
|
||||
// Я получаю файл для проверки дублей процедур и функций "ИмяФайла"
|
||||
Процедура ЯПолучаюФайлДляПроверкиДублейПроцедурИФункций(ИмяФайла) Экспорт
|
||||
|
||||
НовыйФайл = Новый Файл(ИмяФайла);
|
||||
БДД.СохранитьВКонтекст("ИмяФайла", НовыйФайл);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Выполнение сценария "Сценарий" вызывает исключение с текстом "ТекстИсключения"
|
||||
Процедура ВыполнениеСценарияВызываетИсключениеСТекстом(Сценарий, ТекстИсключения) Экспорт
|
||||
|
||||
ОбъектСценария = ЗагрузитьСценарий(Сценарий);
|
||||
Файл = БДД.ПолучитьИзКонтекста("ИмяФайла");
|
||||
Лог = Логирование.ПолучитьЛог("oscript.app.precommit4onec");
|
||||
ПараметрыМетода = Новый Массив;
|
||||
|
||||
ПараметрыМетода.Добавить(Файл);
|
||||
ПараметрыМетода.Добавить(Файл.Путь);
|
||||
ПараметрыМетода.Добавить(Новый Структура("Лог", Лог));
|
||||
|
||||
Ожидаем.Что(ОбъектСценария).Метод("ОбработатьФайл", ПараметрыМетода).ВыбрасываетИсключение(ТекстИсключения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Выполнение сценария "Сценарий" проходит штатно
|
||||
Процедура ВыполнениеСценарияПроходитШтатно(Сценарий) Экспорт
|
||||
|
||||
ОбъектСценария = ЗагрузитьСценарий(Сценарий);
|
||||
Файл = БДД.ПолучитьИзКонтекста("ИмяФайла");
|
||||
Лог = Логирование.ПолучитьЛог("oscript.app.precommit4onec");
|
||||
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, Новый Структура("Лог", Лог));
|
||||
|
||||
Ожидаем.Что(Результат, Истина).ЭтоИстина();
|
||||
|
||||
КонецПроцедуры
|
@ -5,3 +5,15 @@
|
||||
Как разработчик
|
||||
Я хочу иметь возможность выполнять сценарии обработки прекоммита
|
||||
Чтобы сценарии анализировали файлы коммита
|
||||
|
||||
Контекст:
|
||||
Допустим Я очищаю параметры команды "oscript" в контексте
|
||||
И я включаю отладку лога с именем "oscript.app.precommit4onec"
|
||||
|
||||
Сценарий: Проверка сценария ПроверкаДублейПроцедурИФункций вызовет исключение
|
||||
Когда Я получаю файл для проверки дублей процедур и функций "tests\fixtures\ПроверкаДублейПроцедурНегативныйТест.bsl"
|
||||
Тогда Выполнение сценария "src\СценарииОбработки\ПроверкаДублейПроцедурИФункций.os" вызывает исключение с текстом "обнаружены неуникальные имена методов"
|
||||
|
||||
Сценарий: Проверка сценария ПроверкаДублейПроцедурИФункций пройдет штатно и вернет истину
|
||||
Когда Я получаю файл для проверки дублей процедур и функций "tests\fixtures\ПроверкаДублейПроцедурПоложительныйТест.bsl"
|
||||
Тогда Выполнение сценария "src\СценарииОбработки\ПроверкаДублейПроцедурИФункций.os" проходит штатно
|
@ -14,7 +14,7 @@
|
||||
Функция ИмяСценария() Экспорт
|
||||
|
||||
Возврат "ПроверкаДублейПроцедурИФункций";
|
||||
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ОбработатьФайл
|
||||
@ -33,24 +33,32 @@
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
//Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
//
|
||||
// Лог = ДополнительныеПараметры.Лог;
|
||||
// НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||
// Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||
|
||||
// Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
// ПроверитьНаДублированиеМетодов(АнализируемыйФайл.ПолноеИмя);
|
||||
// Возврат Истина;
|
||||
|
||||
// КонецЕсли;
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
// Возврат Ложь;
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
УправлениеНастройками = Неопределено;
|
||||
ДополнительныеПараметры.Свойство("УправлениеНастройками", УправлениеНастройками);
|
||||
|
||||
Если УправлениеНастройками <> Неопределено Тогда
|
||||
|
||||
НастройкиСценария = УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
ПроверитьНаДублированиеМетодов(АнализируемыйФайл.ПолноеИмя);
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
//КонецФункции // ОбработатьФайл()
|
||||
|
||||
// ОбработатьФайл
|
||||
// ПроверитьНаДублированиеМетодов
|
||||
// Выполняет поиск дублей имен процедур и функций файла
|
||||
//
|
||||
// Параметры:
|
||||
@ -89,7 +97,6 @@
|
||||
КонецЦикла;
|
||||
|
||||
КоличествоПроцедур = ТЗПроцедуры.Количество();
|
||||
|
||||
ТЗПроцедуры.Свернуть("Процедура", "Количество");
|
||||
КоличествоУникальных = ТЗПроцедуры.Количество();
|
||||
|
||||
@ -98,16 +105,18 @@
|
||||
ТекстОшибки = СтрШаблон("В файле '%1' обнаружены неуникальные имена методов " + Символы.ПС, ПутьКФайлуМодуля);
|
||||
|
||||
Для Каждого СтрокаТЗ Из ТЗПроцедуры Цикл
|
||||
|
||||
ТекстОшибки = ТекстОшибки + ?(СтрокаТЗ.Количество > 1, СтрокаТЗ.Процедура + Символы.ПС, "");
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
//Лог.Ошибка(ТекстОшибки);
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
Лог.Ошибка(ТекстОшибки);
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
КонецПроцедуры // ПроверитьНаДублированиеМетодов()
|
||||
|
Loading…
Reference in New Issue
Block a user