mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-01-20 02:59:51 +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' обнаружены неуникальные имена методов " + Символы.ПС, ПутьКФайлуМодуля);
|
||||||
|
|
||||||
Для Каждого СтрокаТЗ Из ТЗПроцедуры Цикл
|
Для Каждого СтрокаТЗ Из ТЗПроцедуры Цикл
|
||||||
|
|
||||||
ТекстОшибки = ТекстОшибки + ?(СтрокаТЗ.Количество > 1, СтрокаТЗ.Процедура + Символы.ПС, "");
|
ТекстОшибки = ТекстОшибки + ?(СтрокаТЗ.Количество > 1, СтрокаТЗ.Процедура + Символы.ПС, "");
|
||||||
|
|
||||||
КонецЦикла;
|
КонецЦикла;
|
||||||
|
|
||||||
//Лог.Ошибка(ТекстОшибки);
|
Лог.Ошибка(ТекстОшибки);
|
||||||
ВызватьИсключение ТекстОшибки;
|
ВызватьИсключение ТекстОшибки;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
КонецПроцедуры
|
КонецПроцедуры // ПроверитьНаДублированиеМетодов()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user