1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2024-11-28 08:48:45 +02:00

#ONECICD-195

Добавлена настройка отключенных сценариев
This commit is contained in:
aleksey.koryakin 2019-12-11 10:07:17 +03:00
parent 2c67f37e5f
commit 646b1d317e
9 changed files with 488 additions and 29 deletions

View File

@ -44,15 +44,15 @@
Если ПараметрыКоманды["-global"] Тогда
КаталогРепозитория = Приложение.ПутьКРодительскомуКаталогу();
УправлениеНастройками = МенеджерНастроек.ГлобальныеНастройки();
Иначе
КаталогРепозитория = ПараметрыКоманды["-rep-path"];
УправлениеНастройками = МенеджерНастроек.ПолучитьНастройки(КаталогРепозитория, Ложь);
КонецЕсли;
УправлениеНастройками = Новый НастройкиРепозитория(КаталогРепозитория);
Если ПараметрыКоманды["-reset"] Тогда
Если ПараметрыКоманды["-global"] Тогда
@ -283,8 +283,17 @@
ПолныеНастройки = Новый Соответствие;
Сообщить(СтрШаблон("Настройка конфигурации precommit %1%2", Символы.ПС, КаталогРепозитория));
ГлобальныеСценарии = ПолучитьНастройкуМассив("Выберите подключаемые глобальные сценарии: ",
ПолучитьИменаСценариев(КаталогГлобальныхСценариев), УправлениеНастройками.Настройка(ИмяПриложения + "\ГлобальныеСценарии"));
Если ПолучитьНастройкуБулево("Выполнить настройку подключенных глобальных сценариев?", Истина) Тогда
ГлобальныеСценарии = ПолучитьНастройкуМассив("Выберите подключаемые глобальные сценарии: ",
ПолучитьИменаСценариев(КаталогГлобальныхСценариев), УправлениеНастройками.Настройка(ИмяПриложения + "\ГлобальныеСценарии"));
ИначеЕсли ПолучитьНастройкуБулево("Выполнить настройку отключенных глобальных сценариев?", Истина) Тогда
ОтключенныеСценарии = ПолучитьНастройкуМассив("Выберите отключаемые глобальные сценарии: ",
ПолучитьИменаСценариев(КаталогГлобальныхСценариев), УправлениеНастройками.Настройка(ИмяПриложения + "\ОтключенныеСценарии"));
КонецЕсли;
Если ГлобальныеНастройки Тогда
@ -296,8 +305,7 @@
КонецЕсли;
ИспользоватьСценарииРепозитория = ПолучитьНастройкуБулево(Подсказка,
УправлениеНастройками.Настройка(ИмяПриложения + "\ИспользоватьСценарииРепозитория"));
ИспользоватьСценарииРепозитория = ПолучитьНастройкуБулево(Подсказка, МенеджерНастроек.ЗначениеНастройки("ИспользоватьСценарииРепозитория"));
КаталогЛокальныхСценариев = "";
Если ИспользоватьСценарииРепозитория Тогда
@ -307,13 +315,16 @@
КонецЕсли;
НастройкиПриложения = УправлениеНастройками.ПолучитьСтандартнуюСтруктуруНастроек();
ИсполняемыеСценарии = МенеджерНастроек.ПолучитьСписокИсполяемыхСценариев(ГлобальныеНастройки, ОтключенныеСценарии);
НастройкиСценариев = СформироватьНастройкиСценариев(ГлобальныеСценарии, КаталогГлобальныхСценариев);
НастройкиПриложения.Вставить("ИспользоватьСценарииРепозитория", ИспользоватьСценарииРепозитория);
НастройкиПриложения.Вставить("КаталогЛокальныхСценариев", КаталогЛокальныхСценариев);
НастройкиПриложения.Вставить("ГлобальныеСценарии", ГлобальныеСценарии);
НастройкиПриложения.Вставить("ОтключенныеСценарии", ОтключенныеСценарии);
НастройкиПриложения.Вставить("НастройкиСценариев", НастройкиСценариев);
ИмяПриложения = ?(ЭтоДопПроект,КаталогРепозитория, УправлениеНастройками.ИмяПоУмолчанию());

View File

@ -41,19 +41,14 @@
КонецЕсли;
УправлениеНастройками = Новый НастройкиРепозитория(КаталогРепозитория);
Если УправлениеНастройками.ЭтоНовый()
ИЛИ УправлениеНастройками.НастройкиПриложения("Precommt4onecСценарии").Количество() = 0 Тогда
Лог.Информация("Используем глобальные настройки");
УправлениеНастройками = Новый НастройкиРепозитория(Приложение.ПутьКРодительскомуКаталогу());
Иначе
Лог.Информация("Используем локальные настройки");
КонецЕсли;
УправлениеНастройками = МенеджерНастроек.ПолучитьНастройки(КаталогРепозитория);
Если МенеджерНастроек.ИспользуютсяЛокальныеНастройки() Тогда
Лог.Информация("Используем локальные настройки");
Иначе
Лог.Информация("Используем глобальные настройки");
КонецЕсли;
КаталогИсходныхФайлов = ПараметрыКоманды["-source-dir"];
Если Не ЗначениеЗаполнено(КаталогИсходныхФайлов) Тогда
@ -87,6 +82,7 @@
Для Каждого ЭлементНастройки из НастройкиПроектов Цикл
Настройка = Новый Структура("СценарииОбработки, НастройкиСценариев");
Настройка.СценарииОбработки = ЗагрузитьСценарииОбработки(Приложение.КаталогСценариев(),
УправлениеНастройками,
КаталогРепозитория,
@ -209,20 +205,23 @@
КонецФункции
Функция ЗагрузитьСценарииОбработки(ТекущийКаталогСценариев, УправлениеНастройками, КаталогРепозитория, КлючНастройки)
Функция ЗагрузитьСценарииОбработки(ТекущийКаталогСценариев, УправлениеНастройками, КаталогРепозитория, Проект)
СценарииОбработки = Новый Массив;
ФайлыГлобальныхСценариев = НайтиФайлы(ТекущийКаталогСценариев, "*.os");
ФайлыЛокальныхСценариев = Новый Массив;
ИменаЗагружаемыхСценариев = Новый Массив;
ИменаЗагружаемыхСценариев = МенеджерНастроек.ИменаЗагружаемыхСценариев(Проект);
Если НЕ УправлениеНастройками.ЭтоНовый() Тогда
Лог.Информация("Читаем настройки " + КлючНастройки);
ИменаЗагружаемыхСценариев = УправлениеНастройками.Настройка(КлючНастройки + "\ГлобальныеСценарии");
Если УправлениеНастройками.Настройка(КлючНастройки + "\ИспользоватьСценарииРепозитория") Тогда
Лог.Информация("Читаем настройки " + Проект);
ИспользоватьСценарииРепозитория = МенеджерНастроек.ЗначениеНастройки(Проект, "ИспользоватьСценарииРепозитория", Ложь);
Если ИспользоватьСценарииРепозитория Тогда
ЛокальныйКаталог = УправлениеНастройками.Настройка(КлючНастройки + "\КаталогЛокальныхСценариев");
ЛокальныйКаталог = МенеджерНастроек.ЗначениеНастройки(Проект, "КаталогЛокальныхСценариев");
ПутьКЛокальнымСценариям = ОбъединитьПути(КаталогРепозитория, ЛокальныйКаталог);
ФайлПутьКЛокальнымСценариям = Новый Файл(ПутьКЛокальнымСценариям);
@ -248,7 +247,9 @@
ВызватьИсключение "Нет доступных сценариев обработки файлов";
КонецЕсли;
Возврат СценарииОбработки;
КонецФункции
Процедура ЗагрузитьСценарииИзКаталога(СценарииОбработки, ФайлыСценариев,

View File

@ -87,7 +87,7 @@
Для Каждого Элемент из Конфигурация Цикл
Если ТолькоДополнительные И Элемент.Ключ = ИмяПоУмолчанию() Тогда
Если ТолькоДополнительные И Элемент.Ключ = ИмяПоУмолчанию() Тогда
Продолжить;
КонецЕсли;

View File

@ -0,0 +1,158 @@
Перем ЛокальныеНастройки;
Перем ГлобальныеНастройки;
Перем ИспользуютсяЛокальныеНастройки;
Функция ПолучитьНастройки(КаталогРепозитория, ВернутьГлобальныеЕслиНетЛокальных = Истина) Экспорт
ГлобальныеНастройки();
Лог = МенеджерПриложения.ПолучитьЛог();
ЛокальныеНастройки = Новый НастройкиРепозитория(КаталогРепозитория);
ИспользуютсяЛокальныеНастройки = ЕстьНастройкиPrecommt4onec(ЛокальныеНастройки) ИЛИ НЕ ВернутьГлобальныеЕслиНетЛокальных;
Если ИспользуютсяЛокальныеНастройки Тогда
ВозвращаемаяНастройка = ЛокальныеНастройки;
Иначе
ВозвращаемаяНастройка = ГлобальныеНастройки;
КонецЕсли;
Возврат ВозвращаемаяНастройка;
КонецФункции
Функция ГлобальныеНастройки() Экспорт
Если ГлобальныеНастройки = Неопределено Тогда
ГлобальныеНастройки = Новый НастройкиРепозитория(МенеджерПриложения.ПутьКРодительскомуКаталогу());
КонецЕсли;
Возврат ГлобальныеНастройки;
КонецФункции
Функция ЗначениеНастройки(Подпроект, КлючНастройки, ЗначениеПоУмолчанию = Неопределено) Экспорт
Если ИспользуютсяЛокальныеНастройки Тогда
Значение = ПолучитьЗначениеНастройки(ЛокальныеНастройки, Подпроект, КлючНастройки);
Иначе
Значение = ПолучитьЗначениеНастройки(ГлобальныеНастройки, Подпроект, КлючНастройки);
КонецЕсли;
Возврат ?(Значение = Неопределено, ЗначениеПоУмолчанию, Значение);
КонецФункции
Функция ИменаЗагружаемыхСценариев(Подпроект = "") Экспорт
ИменаИсключаемыхСценариев = ЗначениеНастройки(Подпроект, "ОтключенныеСценарии");
ГлобальныеСценарии = ЗначениеНастройки(Подпроект, "ГлобальныеСценарии");
Если ГлобальныеСценарии = Неопределено Тогда
ГлобальныеСценарии = ПолучитьЗначениеНастройки(ГлобальныеНастройки, Неопределено, "ГлобальныеСценарии");
КонецЕсли;
ИменаЗагружаемыхСценариев = Новый Массив;
Если ИменаИсключаемыхСценариев = Неопределено Тогда
ИменаИсключаемыхСценариев = Новый Массив();
КонецЕсли;
Для Каждого ИмяСценария Из ГлобальныеСценарии Цикл
Если ИменаИсключаемыхСценариев.Найти(ИмяСценария) = Неопределено Тогда
ИменаЗагружаемыхСценариев.Добавить(ИмяСценария);
КонецЕсли;
КонецЦикла;
Возврат ИменаЗагружаемыхСценариев;
КонецФункции
Функция ПолучитьСписокИсполяемыхСценариев(Знач ГлобальныеСценарии, Знач ОтключенныеСценарии) Экспорт
ИменаЗагружаемыхСценариев = Новый Массив;
Если ОтключенныеСценарии = Неопределено Тогда
ОтключенныеСценарии = Новый Массив();
КонецЕсли;
Для Каждого ИмяСценария Из ГлобальныеСценарии Цикл
Если ОтключенныеСценарии.Найти(ИмяСценария) = Неопределено Тогда
ИменаЗагружаемыхСценариев.Добавить(ИмяСценария);
КонецЕсли;
КонецЦикла;
Возврат ИменаЗагружаемыхСценариев;
КонецФункции
Функция КлючНастройкиPrecommt() Экспорт
Возврат "Precommt4onecСценарии";
КонецФункции
Функция ИспользуютсяЛокальныеНастройки() Экспорт
Возврат ИспользуютсяЛокальныеНастройки;
КонецФункции
Функция ЕстьНастройкиPrecommt4onec(Настройка)
Возврат НЕ Настройка.ЭтоНовый() И Настройка.НастройкиПриложения(КлючНастройкиPrecommt()).Количество();
КонецФункции
Функция НастройкиПроекта(Настройки, Подпроект)
Если ЗначениеЗаполнено(Подпроект) Тогда
НастройкаПодпроекта = Настройки.Настройка(СтрШаблон("%1\%2", КлючНастройкиPrecommt(), Подпроект));
Если НастройкаПодпроекта <> Неопределено Тогда
Возврат НастройкаПодпроекта;
КонецЕсли;
КонецЕсли;
Возврат Настройки.НастройкиПриложения(КлючНастройкиPrecommt());
КонецФункции
Функция ПолучитьЗначениеНастройки(Настройка, Подпроект, КлючНастройки)
Значение = НастройкиПроекта(Настройка, Подпроект)[КлючНастройки];
Возврат Значение;
КонецФункции

View File

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

View File

@ -0,0 +1,14 @@
{
"GLOBAL": {
"ВерсияПлатформы": "8.3.10.2309",
"version": "2.0",
"ФорматEDT": true
},
"АвтоТестирование": {
"Выполнять": true,
"ВыполнятьБазовые": true,
"ВыполнятьxUnit": true,
"РасширениеДляxUnit": true,
"ВыполнятьVanessa": true
}
}

View File

@ -0,0 +1,31 @@
{
"GLOBAL": {
"ВерсияПлатформы": "8.3.10.2309",
"version": "2.0",
"ФорматEDT": true
},
"Precommt4onecСценарии": {
"ИспользоватьСценарииРепозитория": false,
"КаталогЛокальныхСценариев": "",
"ОтключенныеСценарии": [
"УдалениеДублейМетаданных.os",
"УдалениеЛишнихКонцевыхПробелов.os",
"УдалениеЛишнихПустыхСтрок.os"
],
"НастройкиСценариев": {
"ОтключениеПолнотекстовогоПоиска": {
"МетаданныеДляИсключения": {
"src\\_example.xml": [
"Номер",
"ТабличнаяЧасть1.Реквизит"
],
"src\\_example2.xml": []
}
},
"РазборОтчетовОбработокРасширений": {
"ИспользоватьНастройкиПоУмолчанию": true,
"ВерсияПлатформы": ""
}
}
}
}

View File

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

View File

@ -0,0 +1,173 @@
#Использовать asserts
#Использовать logos
#Использовать tempfiles
#Использовать "../src"
Перем юТест;
Перем Лог;
Перем МенеджерВременныхФайлов;
// Основная точка входа
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("Тест_ИспользованиеГлобальныхНастроек");
ВсеТесты.Добавить("Тест_ИспользованиеЛокальныхНастроек");
ВсеТесты.Добавить("Тест_ОтключенныеНастройки");
ВсеТесты.Добавить("Тест_ОтключенныеНастройкиИПереопределенныеГлобальныеСценарии");
КонецФункции
Процедура ПередЗапускомТеста() Экспорт
// TODO
// ВремТестер = Новый Тестер;
// Лог = Логирование.ПолучитьЛог(ВремТестер.ИмяЛога());
МенеджерПриложения.Инициализировать(ПараметрыПриложения);
Лог = Логирование.ПолучитьЛог("debug");
ВключитьПоказОтладки();
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
КонецПроцедуры
Процедура ПослеЗапускаТеста() Экспорт
МенеджерВременныхФайлов.Удалить();
МенеджерВременныхФайлов = Неопределено;
КонецПроцедуры
Процедура Тест_ИспользованиеГлобальныхНастроек()
НастройкиПрекоммит = ЗагрузитьНастройкиИзФикстуры("v8configБезНастроекПрекоммит.json");
Ожидаем.Что(НастройкиПрекоммит, "Не удалось загрузить настройки").Заполнено();
КонецПроцедуры
Процедура Тест_ИспользованиеЛокальныхНастроек()
НастройкиПрекоммит = ЗагрузитьНастройкиИзФикстуры("v8config.json");
Ожидаем.Что(НастройкиПрекоммит, "Не удалось загрузить настройки").Заполнено();
ОжидаемыеСценарии = Новый Массив();
ОжидаемыеСценарии.Добавить("УдалениеДублейМетаданных.os");
ОжидаемыеСценарии.Добавить("УдалениеЛишнихКонцевыхПробелов.os");
ОжидаемыеСценарии.Добавить("УдалениеЛишнихПустыхСтрок.os");
ПроверитьОжидаемыеСценарии(НастройкиПрекоммит["ГлобальныеСценарии"], ОжидаемыеСценарии);
КонецПроцедуры
Процедура Тест_ОтключенныеНастройки()
НастройкиПрекоммит = ЗагрузитьНастройкиИзФикстуры("v8configОтключенныеСценарии.json");
Ожидаем.Что(НастройкиПрекоммит, "Не удалось загрузить настройки").Заполнено();
ОжидаемыеСценарии = Новый Массив();
ОжидаемыеСценарии.Добавить("ВставкаКопирайтовBIA.os");
ОжидаемыеСценарии.Добавить("ДобавлениеПробеловПередКлючевымиСловами.os");
ОжидаемыеСценарии.Добавить("ЗапретИспользованияПерейти.os");
ОжидаемыеСценарии.Добавить("ИсправлениеНеКаноническогоНаписания.os");
ОжидаемыеСценарии.Добавить("КорректировкаXMLФорм.os");
ОжидаемыеСценарии.Добавить("ОтключениеПолнотекстовогоПоиска.os");
ОжидаемыеСценарии.Добавить("ПроверкаДублейПроцедурИФункций.os");
ОжидаемыеСценарии.Добавить("ПроверкаКорректностиОбластей.os");
ОжидаемыеСценарии.Добавить("РазборОбычныхФормНаИсходники.os");
ОжидаемыеСценарии.Добавить("РазборОтчетовОбработокРасширений.os");
ОжидаемыеСценарии.Добавить("СинхронизацияОбъектовМетаданныхИФайлов.os");
ОжидаемыеСценарии.Добавить("СортировкаДереваМетаданных.os");
ИменаЗагружаемыхСценариев = МенеджерНастроек.ИменаЗагружаемыхСценариев();
ПроверитьОжидаемыеСценарии(ИменаЗагружаемыхСценариев, ОжидаемыеСценарии);
ИменаЗагружаемыхСценариев = МенеджерНастроек.ИменаЗагружаемыхСценариев("Несуществующий проект");
ПроверитьОжидаемыеСценарии(ИменаЗагружаемыхСценариев, ОжидаемыеСценарии);
КонецПроцедуры
Процедура Тест_ОтключенныеНастройкиИПереопределенныеГлобальныеСценарии()
НастройкиПрекоммит = ЗагрузитьНастройкиИзФикстуры("v8configОтключенныеСценарииПереопреденыГлобальные.json");
Ожидаем.Что(НастройкиПрекоммит, "Не удалось загрузить настройки").Заполнено();
ОжидаемыеСценарии = Новый Массив();
ОжидаемыеСценарии.Добавить("РазборОбычныхФормНаИсходники.os");
ОжидаемыеСценарии.Добавить("РазборОтчетовОбработокРасширений.os");
ОжидаемыеСценарии.Добавить("СинхронизацияОбъектовМетаданныхИФайлов.os");
ОжидаемыеСценарии.Добавить("СортировкаДереваМетаданных.os");
ИменаЗагружаемыхСценариев = МенеджерНастроек.ИменаЗагружаемыхСценариев();
ПроверитьОжидаемыеСценарии(ИменаЗагружаемыхСценариев, ОжидаемыеСценарии);
ИменаЗагружаемыхСценариев = МенеджерНастроек.ИменаЗагружаемыхСценариев("Несуществующий проект");
ПроверитьОжидаемыеСценарии(ИменаЗагружаемыхСценариев, ОжидаемыеСценарии);
КонецПроцедуры
#Область Служебные
Процедура ПроверитьОжидаемыеСценарии(ГлобальныеСценарии, ОжидаемыеСценарии)
Ожидаем.Что(ГлобальныеСценарии, "Нет глобальных сценариев").Заполнено();
Ожидаем.Что(ГлобальныеСценарии.Количество(), "Не корректный список сценариев").Равно(ОжидаемыеСценарии.Количество());
Для каждого ИмяСценария Из ОжидаемыеСценарии Цикл
Ожидаем.Что(ГлобальныеСценарии, "Не содержит нужные сценарии").Содержит(ИмяСценария)
КонецЦикла;
КонецПроцедуры
Процедура ВключитьПоказОтладки()
Лог.УстановитьУровень(УровниЛога.Отладка);
КонецПроцедуры
Процедура ВыключитьПоказОтладки()
Лог.УстановитьУровень(УровниЛога.Информация);
КонецПроцедуры
Функция ЗагрузитьНастройкиИзФикстуры(ИмяФикстуры)
КаталогРепозитория = СоздатьТестовыйКаталог(ИмяФикстуры);
Настройки = МенеджерНастроек.ПолучитьНастройки(КаталогРепозитория);
Возврат Настройки.НастройкиПриложения(МенеджерНастроек.КлючНастройкиPrecommt());
КонецФункции
Функция СоздатьТестовыйКаталог(ИмяФикстуры)
Каталог = МенеджерВременныхФайлов.СоздатьКаталог();
КаталогФикстур = ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "Настройки");
Фикстура = ОбъединитьПути(КаталогФикстур, ИмяФикстуры);
КопироватьФайл(Фикстура, ОбъединитьПути(Каталог, "v8config.json"));
Возврат Каталог;
КонецФункции
#КонецОбласти
ПередЗапускомТеста();
Тест_ОтключенныеНастройкиИПереопределенныеГлобальныеСценарии();
ПослеЗапускаТеста();