1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2025-01-18 02:58:35 +02:00

#ONECICD-147

Тесты и найденные проблемы
This commit is contained in:
aleksey.koryakin 2020-02-07 13:14:07 +03:00
parent 1796c42d1a
commit 5e6f6c758a
5 changed files with 177 additions and 20 deletions

View File

@ -65,21 +65,17 @@
КонецЕсли;
НастройкиПроектов = УправлениеНастройками.ПолучитьПроектыКонфигурации();
НастройкиПроектов = МенеджерНастроек.ПроектыКонфигурации();
НаборНастроек = Новый Соответствие;
Для Каждого ЭлементНастройки Из НастройкиПроектов Цикл
Настройка = Новый Структура("СценарииОбработки, НастройкиСценариев");
Настройка.СценарииОбработки = ЗагрузитьСценарииОбработки(Приложение.КаталогСценариев(),
УправлениеНастройками,
КаталогРепозитория,
ЭлементНастройки);
Настройка.НастройкиСценариев = УправлениеНастройками.НастройкиПриложения(ЭлементНастройки);
НаборНастроек.Вставить(ЭлементНастройки, Настройка);
Для Каждого ИмяПроекта Из НастройкиПроектов Цикл
НаборНастроек.Вставить(ИмяПроекта, НастройкаОбработкиПроекта(ИмяПроекта, КаталогРепозитория));
КонецЦикла;
НаборНастроек.Вставить("", НастройкаОбработкиПроекта("", КаталогРепозитория));
ЖурналИзменений = ПолучитьЖурналИзменений();
ПараметрыОбработки = Новый Структура("ФайлыДляПостОбработки, ИзмененныеКаталоги, КаталогРепозитория, ТекущийКаталогИсходныхФайлов, Настройки",
@ -109,6 +105,20 @@
КонецФункции // ВыполнитьКоманду
Функция НастройкаОбработкиПроекта(ИмяПроекта, КаталогРепозитория)
Настройка = Новый Структура("СценарииОбработки, НастройкиСценариев");
Настройка.СценарииОбработки = ЗагрузитьСценарииОбработки(МенеджерПриложения.КаталогСценариев(),
КаталогРепозитория,
ИмяПроекта);
Настройка.НастройкиСценариев = МенеджерНастроек.НастройкиПроекта(ИмяПроекта);
Возврат Настройка;
КонецФункции
Процедура ВыполнитьОбработкуФайлов(Файлы, НаборНастроек, ПараметрыОбработки)
КаталогРепозитория = ПараметрыОбработки.КаталогРепозитория;
@ -120,8 +130,16 @@
ИмяФайла = ФайловыеОперации.ПолучитьНормализованныйОтносительныйПуть(КаталогРепозитория,
СтрЗаменить(АнализируемыйФайл.ПолноеИмя, КаталогРепозитория, ""));
НастройкаОбработки = МенеджерНастроек.НастройкаДляФайла(ИмяФайла);
ИмяПроекта = МенеджерНастроек.ИмяПроектаДляФайла(ИмяФайла);
НастройкаОбработки = НаборНастроек[ИмяПроекта];
Если НЕ ЗначениеЗаполнено(НастройкаОбработки) Тогда
ВызватьИсключение СтрШаблон("Не удалось получить настройки для %1", ИмяФайла);
КонецЕсли;
СценарииОбработки = НастройкаОбработки.СценарииОбработки;
НастройкиСценариев = НастройкаОбработки.НастройкиСценариев;
@ -211,7 +229,7 @@
КонецФункции
Функция ЗагрузитьСценарииОбработки(ТекущийКаталогСценариев, УправлениеНастройками, КаталогРепозитория, Проект)
Функция ЗагрузитьСценарииОбработки(ТекущийКаталогСценариев, КаталогРепозитория, Проект)
СценарииОбработки = Новый Массив;
ФайлыГлобальныхСценариев = НайтиФайлы(ТекущийКаталогСценариев, "*.os");
@ -219,7 +237,7 @@
ИменаЗагружаемыхСценариев = МенеджерНастроек.ИменаЗагружаемыхСценариев(Проект);
Если НЕ УправлениеНастройками.ЭтоНовый() Тогда
Если НЕ МенеджерНастроек.ЭтоНовый() Тогда
Лог.Информация("Читаем настройки " + Проект);

View File

@ -164,7 +164,7 @@
КонецФункции
Функция НастройкиПроекта(Подпроект) Экспорт
Функция НастройкиПроекта(Подпроект = "") Экспорт
Если ИспользуютсяЛокальныеНастройки Тогда
@ -182,6 +182,12 @@
Функция НастройкаДляФайла(Знач ОтносительноеИмяФайла) Экспорт
Возврат НастройкиПроекта(ИмяПроектаДляФайла(ОтносительноеИмяФайла));
КонецФункции
Функция ИмяПроектаДляФайла(Знач ОтносительноеИмяФайла) Экспорт
Если СтрНачинаетсяС(ОтносительноеИмяФайла, "/") ИЛИ СтрНачинаетсяС(ОтносительноеИмяФайла, "\") Тогда
ОтносительноеИмяФайла = Сред(ОтносительноеИмяФайла, 2);
@ -198,16 +204,29 @@
Если НормализованноеИмяПроекта = НормализованноеИмяФайла Тогда
Возврат НастройкиПроекта(ИмяПроекта);
Возврат ИмяПроекта;
КонецЕсли;
КонецЦикла;
Возврат НастройкиПроекта("");
Возврат "";
КонецФункции
Функция ЭтоНовый() Экспорт
Если ИспользуютсяЛокальныеНастройки() Тогда
Возврат ЛокальныеНастройки.ЭтоНовый();
Иначе
Возврат ГлобальныеНастройки.ЭтоНовый();
КонецЕсли;
КонецФункции
///////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЙ ФУНКЦИОНАЛ
///////////////////////////////////////////////////////////////////

View File

@ -1,5 +1,5 @@
{
"Precommit4onecСценарии": {
"Precommt4onecСценарии": {
"ИспользоватьСценарииРепозитория": true,
"КаталогЛокальныхСценариев": "localscenario",
"ГлобальныеСценарии": [],

View File

@ -10,6 +10,8 @@
// Основная точка входа
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
ПередЗапускомТестов();
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
@ -18,19 +20,24 @@
ВсеТесты.Добавить("Тест_ИспользованиеЛокальныхНастроек");
ВсеТесты.Добавить("Тест_ОтключенныеНастройки");
ВсеТесты.Добавить("Тест_ОтключенныеНастройкиИПереопределенныеГлобальныеСценарии");
ВсеТесты.Добавить("Тест_НастройкиПроектов");
Возврат ВсеТесты;
КонецФункции
Процедура ПередЗапускомТестов()
Процедура ПередЗапускомТеста() Экспорт
МенеджерПриложения.Инициализировать(ПараметрыПриложения);
ВремТестер = Новый Тестер;
Лог = Логирование.ПолучитьЛог(ВремТестер.ИмяЛога());
КонецПроцедуры
Процедура ПередЗапускомТеста() Экспорт
ВключитьПоказОтладки();
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
@ -118,6 +125,81 @@
КонецПроцедуры
Процедура Тест_НастройкиПроектов() Экспорт
ВсеСценарии = МенеджерНастроек.ПолучитьИменаСценариевКаталога(МенеджерПриложения.КаталогСценариев());
НастройкиПрекоммит = ЗагрузитьНастройкиИзФикстуры("v8configПроекты.json");
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект настроек").Содержит("configuration");
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект настроек").Содержит("ext/extension1");
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "configuration", Ложь);
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "ext/extension1", Истина);
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "ext/extension2", Истина, "Несуществующий проект");
ПроверитьЗначение("КаталогЛокальныхСценариев", "ext/extension1", "localscenario");
ПроверитьЗначение("КаталогЛокальныхСценариев", "ext/extension2", "", "Несуществующий проект");
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("configuration");
Ожидаем.Что(Сценарии.Количество(), "Сценарии проекта 'configuration'").Равно(0);
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("ext/extension1");
Ожидаем.Что(Сценарии.Количество(), "Сценарии проекта 'ext/extension1'").Равно(ВсеСценарии.Количество());
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("ext/extension2");
Ожидаем.Что(Сценарии.Количество(), "Сценарии проекта 'ext/extension2' несуществующий проект").Равно(ВсеСценарии.Количество() - 1);
НастройкаConfiguration = МенеджерНастроек.НастройкиПроекта("configuration");
Ожидаем.Что(НастройкаConfiguration,
"Не корректные настройки проекта")
.Не_().Равно(НастройкиПрекоммит);
НастройкаExtension1 = МенеджерНастроек.НастройкиПроекта("ext/extension1");
Ожидаем.Что(НастройкаExtension1,
"Не корректные настройки проекта")
.Не_().Равно(НастройкиПрекоммит);
Ожидаем.Что(МенеджерНастроек.НастройкиПроекта("configuration2"),
"Не корректные настройки проекта. Для отсутствующего проекта должны возвращаться общие настройки")
.Равно(НастройкиПрекоммит);
ВариантыПроверки = Новый ТаблицаЗначений();
ВариантыПроверки.Колонки.Добавить("ИмяФайла");
ВариантыПроверки.Колонки.Добавить("Настройка");
ДобавитьВариантНастройки(ВариантыПроверки, "configuration\module.bsl", НастройкаConfiguration);
ДобавитьВариантНастройки(ВариантыПроверки, "ext\extension1\module.bsl", НастройкаExtension1);
ДобавитьВариантНастройки(ВариантыПроверки, "\confiGuration\module.bsl", НастройкаConfiguration);
ДобавитьВариантНастройки(ВариантыПроверки, "test\module.bsl", НастройкиПрекоммит);
ДобавитьВариантНастройки(ВариантыПроверки, "module.bsl", НастройкиПрекоммит);
ДобавитьВариантНастройки(ВариантыПроверки, "", НастройкиПрекоммит);
Для каждого Вариант Из ВариантыПроверки Цикл
Ожидаем.Что(МенеджерНастроек.НастройкаДляФайла(Вариант.ИмяФайла),
СтрШаблон("Не верно определена настройка для файла '%1'", Вариант.ИмяФайла))
.Равно(Вариант.Настройка);
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьВариантНастройки(Варианты, Значение1, Значение2)
Строка = Варианты.Добавить();
Строка[0] = Значение1;
Строка[1] = Значение2;
КонецПроцедуры
Процедура ПроверитьЗначение(Ключ, Проект, ОжидаемоеЗначение, Дополнение = "")
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки(Ключ, Проект),
СтрШаблон("Не верное значение настройки '%1.%2' %3", Проект, Ключ, Дополнение))
.Равно(ОжидаемоеЗначение);
КонецПроцедуры
#Область Служебные
Процедура ПроверитьОжидаемыеСценарии(ГлобальныеСценарии, ОжидаемыеСценарии)

View File

@ -34,5 +34,43 @@
"ВерсияПлатформы": ""
}
}
},
"Precommit4onecСценарии": {
"General": {
"ИспользоватьСценарииРепозитория": false,
"КаталогЛокальныхСценариев": "",
"ГлобальныеСценарии": [
"ДобавлениеПробеловПередКлючевымиСловами.os",
"ЗапретИспользованияПерейти.os",
"ИсправлениеНеКаноническогоНаписания.os",
"КорректировкаXMLФорм.os",
"ОтключениеПолнотекстовогоПоиска.os",
"ПроверкаДублейПроцедурИФункций.os",
"ПроверкаКорректностиОбластей.os",
"РазборОбычныхФормНаИсходники.os",
"РазборОтчетовОбработокРасширений.os",
"СинхронизацияОбъектовМетаданныхИФайлов.os",
"СортировкаДереваМетаданных.os",
"УдалениеДублейМетаданных.os",
"УдалениеЛишнихКонцевыхПробелов.os",
"УдалениеЛишнихПустыхСтрок.os"
],
"ОтключенныеСценарии": [],
"НастройкиСценариев": {
"ОтключениеПолнотекстовогоПоиска": {
"МетаданныеДляИсключения": {
"src\\_example.xml": [
"Номер",
"ТабличнаяЧасть1.Реквизит"
],
"src\\_example2.xml": []
}
},
"РазборОтчетовОбработокРасширений": {
"ИспользоватьНастройкиПоУмолчанию": true,
"ВерсияПлатформы": ""
}
}
}
}
}