mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-01-03 22:52:10 +02:00
#ONECICD-312
Тесты и исправленные ошибки по работе с проектами
This commit is contained in:
parent
6b2e4451ce
commit
300424bee0
@ -67,6 +67,8 @@
|
||||
|
||||
НастройкиИнициализированы = Истина;
|
||||
|
||||
ПроверитьНастройкуПроектов();
|
||||
|
||||
Возврат ВозвращаемаяНастройка;
|
||||
|
||||
КонецФункции
|
||||
@ -199,21 +201,19 @@
|
||||
|
||||
Функция ИмяПроектаДляФайла(Знач ОтносительноеИмяФайла) Экспорт
|
||||
|
||||
Если СтрНачинаетсяС(ОтносительноеИмяФайла, "/") ИЛИ СтрНачинаетсяС(ОтносительноеИмяФайла, "\") Тогда
|
||||
|
||||
Если СтрНачинаетсяС(ОтносительноеИмяФайла, "\") ИЛИ СтрНачинаетсяС(ОтносительноеИмяФайла, "/") Тогда
|
||||
|
||||
ОтносительноеИмяФайла = Сред(ОтносительноеИмяФайла, 2);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ОтносительноеИмяФайла = СтрЗаменить(НРег(ОтносительноеИмяФайла), "\", "/");
|
||||
ОтносительноеИмяФайла = НРег(ФайловыеОперации.ПолучитьНормализованныйОтносительныйПуть(КаталогЛокальныхНастроек, ОтносительноеИмяФайла));
|
||||
|
||||
Для Каждого ИмяПроекта Из ПроектыКонфигурации() Цикл
|
||||
|
||||
НормализованноеИмяФайла = Лев(ОтносительноеИмяФайла, СтрДлина(ИмяПроекта));
|
||||
|
||||
НормализованноеИмяПроекта = СтрЗаменить(НРег(ИмяПроекта), "\", "/");
|
||||
НормализованноеИмяПроекта = НРег(ИмяПроекта);
|
||||
|
||||
Если НормализованноеИмяПроекта = НормализованноеИмяФайла Тогда
|
||||
Если СтрНачинаетсяС(ОтносительноеИмяФайла, НормализованноеИмяПроекта) Тогда
|
||||
|
||||
Возврат ИмяПроекта;
|
||||
|
||||
@ -244,6 +244,40 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НормализованноеИмяПроекта(ИмяПроекта) Экспорт
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ИмяПроекта) Тогда
|
||||
|
||||
Возврат ИмяПроекта;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
НормализованноеИмяПроекта = ФайловыеОперации.ПолучитьНормализованныйОтносительныйПуть(КаталогЛокальныхНастроек, ИмяПроекта);
|
||||
|
||||
Возврат НормализованноеИмяПроекта;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьНастройкуПроектов() Экспорт
|
||||
|
||||
Успешно = Истина;
|
||||
|
||||
Лог = МенеджерПриложения.ПолучитьЛог();
|
||||
Для Каждого ИмяПроекта Из ПроектыКонфигурации() Цикл
|
||||
|
||||
Если НормализованноеИмяПроекта(ИмяПроекта) <> ИмяПроекта Тогда
|
||||
|
||||
Лог.Предупреждение("Имя проекта '%1' указано не корректно (должно быть %2), возможно приложение будет работать не корректно", ИмяПроекта, НормализованноеИмяПроекта(ИмяПроекта));
|
||||
Успешно = Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Успешно;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция ЭтоНовый() Экспорт
|
||||
@ -306,10 +340,12 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КлючНастройки(Проект = Неопределено, КлючНастройки = Неопределено)
|
||||
Функция КлючНастройки(Знач Проект = Неопределено, КлючНастройки = Неопределено)
|
||||
|
||||
Ключ = Новый Массив();
|
||||
|
||||
Проект = НормализованноеИмяПроекта(Проект);
|
||||
|
||||
Если ЗначениеЗаполнено(Проект) И ЕстьПроект(Проект) Тогда
|
||||
|
||||
Ключ.Добавить(КлючПроекты());
|
||||
|
@ -190,6 +190,15 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КаталогСуществует(Знач Путь1, Знач Путь2 = Неопределено, Знач Путь3 = Неопределено, Знач Путь4 = Неопределено) Экспорт
|
||||
|
||||
ПолныйПуть = ОбъединитьПути(Путь1, Путь2, Путь3, Путь4);
|
||||
|
||||
Файл = Новый Файл(ПолныйПуть);
|
||||
Возврат Файл.Существует() И Файл.ЭтоКаталог();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПроверитьКорневойКаталог(ПутьКорневогоКаталога)
|
||||
|
||||
Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда
|
||||
|
@ -24,11 +24,11 @@
|
||||
|
||||
},
|
||||
"Проекты":{
|
||||
"configuration": {
|
||||
"configuration\\": {
|
||||
"ИспользоватьСценарииРепозитория": false,
|
||||
"ГлобальныеСценарии": []
|
||||
},
|
||||
"ext/extension1": {
|
||||
"ext\\extension1\\": {
|
||||
"ИспользоватьСценарииРепозитория": true,
|
||||
"ОтключенныеСценарии": [],
|
||||
"КаталогЛокальныхСценариев": "localscenario",
|
||||
|
@ -134,33 +134,36 @@
|
||||
|
||||
ВсеСценарии = МенеджерНастроек.ПолучитьИменаСценариевКаталога(МенеджерПриложения.КаталогСценариев());
|
||||
|
||||
НастройкиПрекоммит = ЗагрузитьНастройкиИзФикстуры("v8configПроекты.json");
|
||||
Каталог = СоздатьТестовыйКаталог("v8configПроекты.json");
|
||||
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект настроек").Содержит("configuration");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект настроек").Содержит("ext/extension1");
|
||||
|
||||
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "configuration", Ложь);
|
||||
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "ext/extension1", Истина);
|
||||
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "ext/extension2", Истина, "Несуществующий проект");
|
||||
Настройки = МенеджерНастроек.НастройкиРепозитория(Каталог);
|
||||
НастройкиПрекоммит = Настройки.НастройкиПриложения(МенеджерНастроек.КлючНастройкиPrecommit());
|
||||
|
||||
ПроверитьЗначение("КаталогЛокальныхСценариев", "ext/extension1", "localscenario");
|
||||
ПроверитьЗначение("КаталогЛокальныхСценариев", "ext/extension2", "", "Несуществующий проект");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект настроек").Содержит("configuration\");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект настроек").Содержит("ext\extension1\");
|
||||
|
||||
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "configuration\", Ложь);
|
||||
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "ext\extension1\", Истина);
|
||||
ПроверитьЗначение("ИспользоватьСценарииРепозитория", "ext\extension2\", Истина, "Несуществующий проект");
|
||||
|
||||
ПроверитьЗначение("КаталогЛокальныхСценариев", "ext\extension1\", "localscenario");
|
||||
ПроверитьЗначение("КаталогЛокальныхСценариев", "ext\extension2\", "", "Несуществующий проект");
|
||||
|
||||
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("configuration");
|
||||
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("configuration\");
|
||||
Ожидаем.Что(Сценарии.Количество(), "Сценарии проекта 'configuration'").Равно(0);
|
||||
|
||||
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("ext/extension1");
|
||||
Ожидаем.Что(Сценарии.Количество(), "Сценарии проекта 'ext/extension1'").Равно(ВсеСценарии.Количество());
|
||||
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("ext\extension1\");
|
||||
Ожидаем.Что(Сценарии.Количество(), "Сценарии проекта 'ext\extension1'").Равно(ВсеСценарии.Количество());
|
||||
|
||||
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("ext/extension2");
|
||||
Ожидаем.Что(Сценарии.Количество(), "Сценарии проекта 'ext/extension2' несуществующий проект").Равно(ВсеСценарии.Количество() - 1);
|
||||
Сценарии = МенеджерНастроек.ИменаЗагружаемыхСценариев("ext\extension2\");
|
||||
Ожидаем.Что(Сценарии.Количество(), "Сценарии проекта 'ext\extension2' несуществующий проект").Равно(ВсеСценарии.Количество() - 1);
|
||||
|
||||
НастройкаConfiguration = МенеджерНастроек.НастройкиПроекта("configuration");
|
||||
НастройкаConfiguration = МенеджерНастроек.НастройкиПроекта("configuration\");
|
||||
Ожидаем.Что(НастройкаConfiguration,
|
||||
"Не корректные настройки проекта")
|
||||
.Не_().Равно(НастройкиПрекоммит);
|
||||
|
||||
НастройкаExtension1 = МенеджерНастроек.НастройкиПроекта("ext/extension1");
|
||||
НастройкаExtension1 = МенеджерНастроек.НастройкиПроекта("ext\extension1\");
|
||||
Ожидаем.Что(НастройкаExtension1,
|
||||
"Не корректные настройки проекта")
|
||||
.Не_().Равно(НастройкиПрекоммит);
|
||||
@ -226,21 +229,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ДобавитьВариантНастройки(Варианты, Значение1 = Неопределено, Значение2 = Неопределено, Значение3 = Неопределено, Значение4 = Неопределено)
|
||||
|
||||
Строка = Варианты.Добавить();
|
||||
|
||||
Для Инд = 1 По 4 Цикл
|
||||
|
||||
Значение = Вычислить(СтрШаблон("Значение%1", Инд));
|
||||
|
||||
Если Значение <> Неопределено Тогда
|
||||
Строка[Инд - 1] = Значение;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПроверитьЗначение(Ключ, Проект, ОжидаемоеЗначение, Дополнение = "")
|
||||
|
||||
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки(Ключ, Проект),
|
||||
@ -292,8 +280,28 @@
|
||||
|
||||
КопироватьФайл(Фикстура, ОбъединитьПути(Каталог, "v8config.json"));
|
||||
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "configuration"));
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "ext"));
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "ext", "extension1"));
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "ext", "extension2"));
|
||||
|
||||
Возврат Каталог;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьВариантНастройки(Варианты, Значение1 = Неопределено, Значение2 = Неопределено, Значение3 = Неопределено, Значение4 = Неопределено)
|
||||
|
||||
Строка = Варианты.Добавить();
|
||||
|
||||
Для Инд = 1 По 4 Цикл
|
||||
|
||||
Значение = Вычислить(СтрШаблон("Значение%1", Инд));
|
||||
|
||||
Если Значение <> Неопределено Тогда
|
||||
Строка[Инд - 1] = Значение;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
@ -19,6 +19,7 @@
|
||||
ВсеТесты.Добавить("Тест_СброситьНастройкиРепозитория");
|
||||
ВсеТесты.Добавить("Тест_СброситьГлобальныеНастройки");
|
||||
ВсеТесты.Добавить("Тест_ПолучитьСтандартнуюСтруктуруНастроек");
|
||||
ВсеТесты.Добавить("Тест_ОбновитьНастройки");
|
||||
|
||||
Возврат ВсеТесты;
|
||||
|
||||
@ -66,22 +67,22 @@
|
||||
// Сброс по проектно
|
||||
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
|
||||
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("configuration");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("ext/extension1");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("configuration\");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("ext\extension1\");
|
||||
|
||||
РедакторНастроек.СброситьНастройкиРепозитория(Истина, "ext\extension1");
|
||||
РедакторНастроек.СброситьНастройкиРепозитория(Истина, "ext\extension1\");
|
||||
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Проект не удален").НЕ_().Содержит("ext/extension1");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("configuration");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Проект не удален").НЕ_().Содержит("ext\extension1\");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Не найден проект").Содержит("configuration\");
|
||||
|
||||
РедакторНастроек.СброситьНастройкиРепозитория(Истина, "configuration\extension1");
|
||||
РедакторНастроек.СброситьНастройкиРепозитория(Истина, "configuration\extension1\");
|
||||
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Удален лишний репозиторий").Содержит("configuration");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Удален лишний репозиторий").Содержит("configuration\");
|
||||
|
||||
// Перезагрузим настройки
|
||||
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Настройки не сохранены").НЕ_().Содержит("ext/extension1");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Настройки сохранены не корректно").Содержит("configuration");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Настройки не сохранены").НЕ_().Содержит("ext\extension1\");
|
||||
Ожидаем.Что(МенеджерНастроек.ПроектыКонфигурации(), "Настройки сохранены не корректно").Содержит("configuration\");
|
||||
|
||||
// Сброс всех подпроектов
|
||||
|
||||
@ -159,8 +160,80 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
Процедура Тест_ОбновитьНастройки() Экспорт
|
||||
|
||||
Варианты = Новый ТаблицаЗначений();
|
||||
|
||||
Варианты.Колонки.Добавить("Описание");
|
||||
Варианты.Колонки.Добавить("ИмяФикстуры");
|
||||
Варианты.Колонки.Добавить("НовыеНастройки");
|
||||
Варианты.Колонки.Добавить("НовыеПроекты");
|
||||
Варианты.Колонки.Добавить("ОжидаемыеПроекты");
|
||||
|
||||
БазовыеНастройки = РедакторНастроек.ПолучитьСтандартнуюСтруктуруНастроек();
|
||||
НастройкиПроектов = Новый Соответствие();
|
||||
НастройкиПроектов.Вставить("configuration\", РедакторНастроек.ПолучитьСтандартнуюСтруктуруНастроек());
|
||||
|
||||
ДобавитьВариантНастройки(Варианты, "Только базовые настройки", "v8config.json", БазовыеНастройки, , "");
|
||||
ДобавитьВариантНастройки(Варианты, "К базовым настройкам добавляем проекты", "v8config.json", БазовыеНастройки, НастройкиПроектов, "configuration\");
|
||||
|
||||
ДобавитьВариантНастройки(Варианты, "Настройки с проектами, обновляем только базовые настройки", "v8configПроекты.json", БазовыеНастройки, , "configuration\,ext\extension1");
|
||||
ДобавитьВариантНастройки(Варианты, "Обновление настройки подпроекта", "v8configПроекты.json", БазовыеНастройки, НастройкиПроектов, "configuration\,ext\extension1\");
|
||||
НастройкиПроектов = Новый Соответствие();
|
||||
НастройкиПроектов.Вставить("configuration2\", РедакторНастроек.ПолучитьСтандартнуюСтруктуруНастроек());
|
||||
ДобавитьВариантНастройки(Варианты, "Добавление настройки подпроекта", "v8configПроекты.json", БазовыеНастройки, НастройкиПроектов, "configuration\,configuration2\,ext\extension1\");
|
||||
|
||||
Для Каждого Вариант Из Варианты Цикл
|
||||
|
||||
Лог.Отладка("Обработка файла %1", Вариант.ИмяФикстуры);
|
||||
МенеджерНастроек.СбросСостоянияМенеджера();
|
||||
Каталог = СоздатьТестовыйКаталог(Вариант.ИмяФикстуры);
|
||||
|
||||
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
|
||||
|
||||
РедакторНастроек.ОбновитьНастройки(Вариант.НовыеНастройки, Вариант.НовыеПроекты);
|
||||
|
||||
МенеджерНастроек.СбросСостоянияМенеджера();
|
||||
МенеджерНастроек.НастройкиРепозитория(Каталог, Ложь);
|
||||
|
||||
Префикс = СтрШаблон("Вариант ""%1""", Вариант.Описание);
|
||||
|
||||
Для Каждого Элемент Из Вариант.НовыеНастройки Цикл
|
||||
|
||||
Сообщение = СтрШаблон("%1. Не верное значение поля '%2'", Префикс, Элемент.Ключ);
|
||||
|
||||
ОжидаемоеЗначение = Элемент.Значение;
|
||||
|
||||
Если ТипЗнч(ОжидаемоеЗначение) = Тип("Массив") Тогда
|
||||
|
||||
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки(Элемент.Ключ), Сообщение).ИмеетТип("Массив").ИмеетДлину(ОжидаемоеЗначение.Количество());
|
||||
|
||||
ИначеЕсли ТипЗнч(ОжидаемоеЗначение) = Тип("Соответствие") Тогда
|
||||
|
||||
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки(Элемент.Ключ), Сообщение).ИмеетТип("Соответствие").ИмеетДлину(ОжидаемоеЗначение.Количество());
|
||||
|
||||
Иначе
|
||||
|
||||
Ожидаем.Что(МенеджерНастроек.ЗначениеНастройки(Элемент.Ключ), Сообщение).Равно(ОжидаемоеЗначение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ИменаПроектов = СтрРазделить(Вариант.ОжидаемыеПроекты, ",");
|
||||
|
||||
Для Каждого ИмяПроекта Из ИменаПроектов Цикл
|
||||
|
||||
Сообщение = СтрШаблон("%1. Нет настроек для проекта '%2'", Префикс, ИмяПроекта);
|
||||
Ожидаем.Что(МенеджерНастроек.НастройкиПроекта(ИмяПроекта), Сообщение).Заполнено();
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Служебные
|
||||
|
||||
@ -181,8 +254,36 @@
|
||||
|
||||
КопироватьФайл(Фикстура, ОбъединитьПути(Каталог, "v8config.json"));
|
||||
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "configuration"));
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "configuration2"));
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "ext"));
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "ext", "extension1"));
|
||||
СоздатьКаталог(ОбъединитьПути(Каталог, "ext", "extension2"));
|
||||
|
||||
Возврат Каталог;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьВариантНастройки(Варианты, Значение1 = Неопределено, Значение2 = Неопределено, Значение3 = Неопределено, Значение4 = Неопределено, Значение5 = Неопределено)
|
||||
|
||||
Строка = Варианты.Добавить();
|
||||
|
||||
Для Инд = 1 По 5 Цикл
|
||||
|
||||
Значение = Вычислить(СтрШаблон("Значение%1", Инд));
|
||||
|
||||
Если Значение <> Неопределено Тогда
|
||||
Строка[Инд - 1] = Значение;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
// ПередЗапускомТестов();
|
||||
// ПередЗапускомТеста();
|
||||
// Тест_ОбновитьНастройки();
|
||||
// ПослеЗапускаТеста();
|
||||
|
||||
// Сообщить("Успех");
|
Loading…
Reference in New Issue
Block a user