diff --git a/config-example.json b/config-example.json new file mode 100644 index 00000000..efead47f --- /dev/null +++ b/config-example.json @@ -0,0 +1,42 @@ +{ + "gitsync-options": + { + "global": + { + "email-domain": "server.com", + "v8-version": "8.3.10", + "git-executable": "git" + } + }, + "repositories" : [ + { + "name" : "test", + "git-local-path": "Путь", + "git-remote": "адрес2", + "v8-storage-dir": "каталог2", + "process-fatform-modules": "on", + "push-every-n-commits": 5, + "auto-set-tags": "on", + "stop-if-empty-comment": "on", + "check-authors": "on" + //"email-domain", + //"v8-version", + //"git-executable", + }, + { + "name" : "test2", + "git-local-path": "Путь2", + "git-remote": "адрес2", + "v8-storage-dir": "каталог2", + "process-fatform-modules": "on", + "push-every-n-commits": 5, + "auto-set-tags": "on", + "stop-if-empty-comment": "on", + "check-authors": "on" + //"email-domain", + //"v8-version", + //"git-executable", + + } + ] + } diff --git a/packagedef b/packagedef index b7cfd7a8..03e820f2 100644 --- a/packagedef +++ b/packagedef @@ -3,7 +3,7 @@ Описание.Имя("gitsync") .Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта()) - .ВерсияСреды("1.0.16") + .ВерсияСреды("1.0.17") .ЗависитОт("logos") .ЗависитОт("cmdline", "0.6.1") .ЗависитОт("tempfiles") @@ -13,11 +13,13 @@ .ЗависитОт("strings") .ЗависитОт("1commands", "1.2.1") .ЗависитОт("v8unpack") + .ЗависитОт("json", "1.0.0") .ЗависитОт("fs") .ВключитьФайл("src") .ВключитьФайл("tests") .ВключитьФайл("features") .ВключитьФайл("bin") .ВключитьФайл("config-example.xml") + .ВключитьФайл("config-example.json") .ВключитьФайл("readme.md") .ИсполняемыйФайл("src/gitsync.os"); diff --git a/readme.md b/readme.md index 6c4151be..45bcba56 100644 --- a/readme.md +++ b/readme.md @@ -172,11 +172,11 @@ # Синхронизация по нескольким хранилищам -Зачастую удобно настроить регламентную (по расписанию) синхронизацию сразу по нескольким хранилищам 1С. Для этого необходимо подготовить конфигурационный файл с параметрами синхронизации ([пример файла](config-example.xml)) +Зачастую удобно настроить регламентную (по расписанию) синхронизацию сразу по нескольким хранилищам 1С. Для этого необходимо подготовить конфигурационный файл с параметрами синхронизации ([пример файла xml](config-example.xml) [пример файла json](config-example.json)) Далее необходимо запустить gitsync с командой all - gitsync all <путь к xml-файлу конфигурации> + gitsync all <путь к файлу конфигурации (xml или json)> Подробнее о параметрах команды `all` можно прочитать, запустив `gitsync help all` diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260All.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260All.os" index cf9f680c..79cb74ae 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260All.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260All.os" @@ -60,7 +60,7 @@ КонецЕсли; - Контроллер = ЗагрузитьСценарий(ОбъединитьПути(КаталогRoot, "multi-controller.os")); + Контроллер = Новый КонтроллерПакетнойСинхронизации; Пока Истина Цикл diff --git a/src/multi-controller.os "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\320\273\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" similarity index 63% rename from src/multi-controller.os rename to "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\320\273\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 642585a4..5cf47f83 100644 --- a/src/multi-controller.os +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\275\321\202\321\200\320\276\320\273\320\273\320\265\321\200\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -6,13 +6,13 @@ //////////////////////////////////////////////////////////////////////////// #Использовать cmdline -#Использовать "core" Перем мПараметрыКоманды; Перем мДополнительныеПараметры; Перем мНастройки; Перем мФлагПринудительнойСинхронизации; + //////////////////////////////////////////////////////////////////////// // Программный интерфейс @@ -32,9 +32,33 @@ Процедура ПрочитатьНастройкиИзФайла(Знач ФайлНастроек) - Конфиг = ЗагрузитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "xml-config.os")); - мНастройки = Конфиг.ПрочитатьНастройкиИзФайла(ФайлНастроек); + ФайлКонфига = Новый Файл(ФайлНастроек); + Расширение = ФайлКонфига.Расширение; + + Если Расширение = ".xml" Тогда + + ПрочитатьНастройкиИзФайлаXML(ФайлНастроек); + + ИначеЕсли Расширение = ".json" Тогда + + ПрочитатьНастройкиИзФайлаJSON(ФайлНастроек); + + КонецЕсли; + +КонецПроцедуры +Процедура ПрочитатьНастройкиИзФайлаXML(Знач ФайлНастроек) + + Конфиг = Новый ЧтениеКонфигаXMLПакетнойСинхронизации(СоответствиеКлючамИПараметра()); + мНастройки = Конфиг.ПрочитатьНастройкиИзФайла(ФайлНастроек); + +КонецПроцедуры + +Процедура ПрочитатьНастройкиИзФайлаJSON(Знач ФайлНастроек) + + Конфиг = Новый ЧтениеКонфигаJSONПакетнойСинхронизации(СоответствиеКлючамИПараметра()); + мНастройки = Конфиг.ПрочитатьНастройкиИзФайла(ФайлНастроек); + КонецПроцедуры //////////////////////////////////////////////////////////////////////// @@ -54,6 +78,10 @@ КонецПроцедуры Функция ПреобразоватьЗначениеКБулево(ЗначениеПараметра) + Если ТипЗнч(ЗначениеПараметра) = Тип("Булево") Тогда + Возврат ЗначениеПараметра; + КонецЕсли; + Если ЗначениеПараметра = "on" Тогда Возврат Истина; ИначеЕсли ЗначениеПараметра = "off" Тогда @@ -103,3 +131,24 @@ Функция ИмяФайлаБазыХранилища(Знач Каталог) Возврат ОбъединитьПути(Каталог, "1cv8ddb.1CD"); КонецФункции + +Функция СоответствиеКлючамИПараметра() Экспорт + + СоответствиеКлючамИПараметра = Новый Соответствие(); + СоответствиеКлючамИПараметра.Вставить("git-local-path", "КаталогВыгрузки"); + СоответствиеКлючамИПараметра.Вставить("git-remote", "GitURL"); + СоответствиеКлючамИПараметра.Вставить("name", "Имя"); + СоответствиеКлючамИПараметра.Вставить("v8-storage-dir", "КаталогХранилища1С"); + СоответствиеКлючамИПараметра.Вставить("email-domain", "ДоменПочтыДляGit"); + СоответствиеКлючамИПараметра.Вставить("v8-version", "ПутьКПлатформе83"); + СоответствиеКлючамИПараметра.Вставить("git-executable", "ПутьGit"); + СоответствиеКлючамИПараметра.Вставить("push-every-n-commits", "КоличествоКоммитовДоPush"); + СоответствиеКлючамИПараметра.Вставить("check-authors", "ПроверитьАвторовХранилища"); + СоответствиеКлючамИПараметра.Вставить("stop-if-empty-comment", "ПрерватьВыполнениеБезКомментарияКВерсии"); + СоответствиеКлючамИПараметра.Вставить("auto-set-tags", "АвтоматическаяУстановкаТэговПоВерсиям"); + СоответствиеКлючамИПараметра.Вставить("process-fatform-modules", "ПереименовыватьФайлМодуляОбычнойФормы"); + + Возврат Новый ФиксированноеСоответствие(СоответствиеКлючамИПараметра); + +КонецФункции + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\320\260JSON\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\320\260JSON\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" new file mode 100644 index 00000000..85a892f8 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\320\260JSON\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -0,0 +1,98 @@ + +#Использовать json + +Перем мНастройки; +Перем СоответствиеКлючамИПараметра; + +Процедура ПриСозданииОбъекта(ВходящиеСоответствиеКлючамИПараметра) + + СоответствиеКлючамИПараметра = ВходящиеСоответствиеКлючамИПараметра; + +КонецПроцедуры + +Функция ПрочитатьФайл(Знач ИмяФайла) + ФайлСуществующий = Новый Файл(ИмяФайла); + Если Не ФайлСуществующий.Существует() Тогда + ВызватьИсключение "Неверная структура файла настроек / файл пустой";; + КонецЕсли; + + Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8); + Рез = Чтение.Прочитать(); + Чтение.Закрыть(); + Возврат Рез; +КонецФункции // ПрочитатьФайл() + +Функция ПрочитатьНастройкиИзФайла(Знач ФайлНастроек) Экспорт + + мНастройки = Новый Структура; + + JsonСтрока = ПрочитатьФайл(ФайлНастроек); + + ПарсерJSON = Новый ПарсерJSON(); + ПараметрыJSON = ПарсерJSON.ПрочитатьJSON(JsonСтрока); + + ВсеНастройки = ПараметрыJSON["gitsync-options"]; + ГлобальныеНастройки = ВсеНастройки["global"]; + + Для Каждого КлючИЗначение Из ГлобальныеНастройки Цикл + Ключ = СоответствиеКлючамИПараметра[КлючИЗначение.Ключ]; + + Если НЕ Ключ = Неопределено Тогда + мНастройки.Вставить(Ключ, КлючИЗначение.Значение); + КонецЕсли; + + КонецЦикла; + + мНастройки.Вставить("Репозитарии", Новый Массив); + + МассивРепозиториев = ВсеНастройки["repositories"]; + + Для Каждого Репозиторий Из МассивРепозиториев Цикл + + ПрочитатьНастройкиРепозитория(Репозиторий); + + КонецЦикла; + + Возврат мНастройки; + +КонецФункции + +Процедура ПрочитатьНастройкиРепозитория(Знач СтруктураНастроекРепозитория ) + + Репо = Новый Структура; + + мНастройки.Репозитарии.Добавить(Репо); + + Для Каждого КлючИЗначение Из СтруктураНастроекРепозитория Цикл + + Ключ = СоответствиеКлючамИПараметра[КлючИЗначение.Ключ]; + + Если НЕ Ключ = Неопределено Тогда + Репо.Вставить(Ключ, КлючИЗначение.Значение); + КонецЕсли; + + КонецЦикла; + + Для Каждого ГлобальнаяНастройка Из мНастройки Цикл + + Ключ = ГлобальнаяНастройка.Ключ; + + Если ГлобальнаяНастройка.Ключ = "Репозитарии" Тогда + Продолжить + КонецЕсли; + + ЕстьСвояНастройка = Репо.Свойство(Ключ); + + Если НЕ ЕстьСвояНастройка + ИЛИ ЕстьСвояНастройка и ПустаяСтрока(Репо[Ключ]) Тогда + + Репо.Вставить(Ключ, ГлобальнаяНастройка.Значение); + КонецЕсли; + + КонецЦикла + +КонецПроцедуры + +Функция СтрокаНекорректнаяСтруктураНастроек() + Возврат "Некорректная структура файла настроек"; +КонецФункции diff --git a/src/xml-config.os "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\320\260XML\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" similarity index 59% rename from src/xml-config.os rename to "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\320\260XML\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 71764cab..6552ae8c 100644 --- a/src/xml-config.os +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\247\321\202\320\265\320\275\320\270\320\265\320\232\320\276\320\275\321\204\320\270\320\263\320\260XML\320\237\320\260\320\272\320\265\321\202\320\275\320\276\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -1,5 +1,12 @@  Перем мНастройки; +перем СоответствиеКлючамИПараметра; + +Процедура ПриСозданииОбъекта(ВходящиеСоответствиеКлючамИПараметра) + + СоответствиеКлючамИПараметра = ВходящиеСоответствиеКлючамИПараметра; + +КонецПроцедуры Функция ПрочитатьНастройкиИзФайла(Знач ФайлНастроек) Экспорт @@ -10,7 +17,7 @@ Попытка Чтение.ПерейтиКСодержимому(); Если Чтение.ЛокальноеИмя <> "gitsync-options" Тогда - ВызватьИсключение "Неверная структура файла настроек"; + ВызватьИсключение СтрокаНекорректнаяСтруктураНастроек(); КонецЕсли; Чтение.Прочитать(); @@ -34,17 +41,14 @@ Пока Не (Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента и Чтение.ЛокальноеИмя = "global") Цикл КлючИЗначение = ПрочитатьОпцию(Чтение); - Если КлючИЗначение.Ключ = "email-domain" Тогда - Ключ = "ДоменПочтыДляGit"; - ИначеЕсли КлючИЗначение.Ключ = "v8-version" Тогда - Ключ = "ПутьКПлатформе83"; - ИначеЕсли КлючИЗначение.Ключ = "git-executable" Тогда - Ключ = "ПутьGit"; + Ключ = СоответствиеКлючамИПараметра[КлючИЗначение.Ключ]; + + Если НЕ Ключ = Неопределено Тогда + мНастройки.Вставить(Ключ, КлючИЗначение.Значение); Иначе - ВызватьИсключение НекорректнаяСтруктураНастроек(); + ВызватьИсключение СтрокаНекорректнаяСтруктураНастроек(); КонецЕсли; - мНастройки.Вставить(Ключ, КлючИЗначение.Значение); КонецЦикла; @@ -56,7 +60,7 @@ мНастройки.Вставить("Репозитарии", Новый Массив); Если Чтение.ЛокальноеИмя <> "repositories" Тогда - ВызватьИсключение НекорректнаяСтруктураНастроек(); + ВызватьИсключение СтрокаНекорректнаяСтруктураНастроек(); КонецЕсли; Чтение.Прочитать(); @@ -82,30 +86,12 @@ КлючИЗначение = ПрочитатьОпцию(Чтение); - Если КлючИЗначение.Ключ = "git-local-path" Тогда - Ключ = "КаталогВыгрузки"; - ИначеЕсли КлючИЗначение.Ключ = "git-remote" Тогда - Ключ = "GitURL"; - ИначеЕсли КлючИЗначение.Ключ = "v8-storage-dir" Тогда - Ключ = "КаталогХранилища1С"; - ИначеЕсли КлючИЗначение.Ключ = "email-domain" Тогда - Ключ = "ДоменПочтыДляGit"; - ИначеЕсли КлючИЗначение.Ключ = "v8-version" Тогда - Ключ = "ПутьКПлатформе83"; - ИначеЕсли КлючИЗначение.Ключ = "git-executable" Тогда - Ключ = "ПутьGit"; - ИначеЕсли КлючИЗначение.Ключ = "push-every-n-commits" Тогда - Ключ = "КоличествоКоммитовДоPush"; - ИначеЕсли КлючИЗначение.Ключ = "check-authors" Тогда - Ключ = "ПроверитьАвторовХранилища"; - ИначеЕсли КлючИЗначение.Ключ = "stop-if-empty-comment" Тогда - Ключ = "ПрерватьВыполнениеБезКомментарияКВерсии"; - ИначеЕсли КлючИЗначение.Ключ = "auto-set-tags" Тогда - Ключ = "АвтоматическаяУстановкаТэговПоВерсиям"; - ИначеЕсли КлючИЗначение.Ключ = "process-fatform-modules" Тогда - Ключ = "ПереименовыватьФайлМодуляОбычнойФормы"; + Ключ = СоответствиеКлючамИПараметра[КлючИЗначение.Ключ]; + + Если НЕ Ключ = Неопределено Тогда + Репо.Вставить(Ключ, КлючИЗначение.Значение); Иначе - ВызватьИсключение НекорректнаяСтруктураНастроек(); + ВызватьИсключение СтрокаНекорректнаяСтруктураНастроек(); КонецЕсли; Если ПустаяСтрока(КлючИЗначение.Значение) и мНастройки.Свойство(Ключ) Тогда @@ -133,7 +119,7 @@ ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда Значение = ""; Иначе - ВызватьИсключение НекорректнаяСтруктураНастроек(); + ВызватьИсключение СтрокаНекорректнаяСтруктураНастроек(); КонецЕсли; Чтение.Прочитать(); @@ -142,6 +128,6 @@ КонецФункции -Функция НекорректнаяСтруктураНастроек() +Функция СтрокаНекорректнаяСтруктураНастроек() Возврат "Некорректная структура файла настроек"; КонецФункции diff --git a/tests/fixtures/config.json b/tests/fixtures/config.json new file mode 100644 index 00000000..d4148652 --- /dev/null +++ b/tests/fixtures/config.json @@ -0,0 +1,42 @@ +{ + "gitsync-options": + { + "global": + { + "email-domain": "server.com", + "v8-version": "1cv8.exe", + "git-executable": "git" + }, + "repositories" : [ + { + "name" : "test", + "git-local-path": "путь1", + "git-remote": "адрес1", + "v8-storage-dir": "каталог1", + "process-fatform-modules": "on", + "push-every-n-commits": 5, + "auto-set-tags": "on", + "stop-if-empty-comment": "on", + "check-authors": "on" + //"email-domain", + //"v8-version", + //"git-executable", + }, + { + "name" : "test2", + "git-local-path": "путь2", + "git-remote": "адрес2", + "v8-storage-dir": "каталог2", + "process-fatform-modules": "on", + "push-every-n-commits": 5, + "auto-set-tags": "on", + "stop-if-empty-comment": "on", + "check-authors": "on" + //"email-domain", + //"v8-version", + //"git-executable", + + } + ] + } +} diff --git a/tests/multi-controller-xml.os b/tests/multi-controller-xml.os index bfc88d85..fc7ffddd 100644 --- a/tests/multi-controller-xml.os +++ b/tests/multi-controller-xml.os @@ -8,13 +8,16 @@ Перем мНастройки; Перем мПараметрыВызоваПакетногоСинхронизатора; +Перем Контроллер; Функция ПолучитьСписокТестов(Тесты) Экспорт юТест = Тесты; Список = Новый Массив; - Список.Добавить("Тест_ДолженПрочитатьФайлНастроек"); - Список.Добавить("Тест_ДолженПроверитьЧтоВызванОбработчикСинхронизации"); + Список.Добавить("Тест_ДолженПрочитатьФайлНастроекXML"); + Список.Добавить("Тест_ДолженПроверитьЧтоВызванОбработчикСинхронизацииXML"); + Список.Добавить("Тест_ДолженПрочитатьФайлНастроекJSON"); + Список.Добавить("Тест_ДолженПроверитьЧтоВызванОбработчикСинхронизацииJSON"); Инициализация(); @@ -24,10 +27,9 @@ Процедура Инициализация() - ПодключитьСценарий(ОбъединитьПути(ТекущийСценарий().Каталог, "../src/xml-config.os"), "ЧтениеКонфига"); - Лог = Логирование.ПолучитьЛог("oscript.app.gitsync"); Лог.УстановитьУровень(УровниЛога.Отладка); + Контроллер = Новый КонтроллерПакетнойСинхронизации КонецПроцедуры @@ -36,7 +38,15 @@ Функция ПрочитатьТестовыеНастройки() ФайлНастроек = КаталогFixtures() + "/config.xml"; - ЧтениеКонфига = Новый ЧтениеКонфига(); + ЧтениеКонфига = Новый ЧтениеКонфигаXMLПакетнойСинхронизации(Контроллер.СоответствиеКлючамИПараметра()); + мНастройки = ЧтениеКонфига.ПрочитатьНастройкиИзФайла(ФайлНастроек); + Возврат мНастройки; +КонецФункции + +Функция ПрочитатьТестовыеНастройкиJSON() + ФайлНастроек = КаталогFixtures() + "/config.json"; + ЧтениеКонфига = Новый ЧтениеКонфигаJSONПакетнойСинхронизации(Контроллер.СоответствиеКлючамИПараметра()); + мНастройки = ЧтениеКонфига.ПрочитатьНастройкиИзФайла(ФайлНастроек); Возврат мНастройки; КонецФункции @@ -45,7 +55,7 @@ Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures"); КонецФункции -Процедура Тест_ДолженПрочитатьФайлНастроек() Экспорт +Процедура Тест_ДолженПрочитатьФайлНастроекXML() Экспорт ПрочитатьТестовыеНастройки(); @@ -75,7 +85,37 @@ КонецПроцедуры -Процедура Тест_ДолженПроверитьЧтоВызванОбработчикСинхронизации() Экспорт +Процедура Тест_ДолженПрочитатьФайлНастроекJSON() Экспорт + + ПрочитатьТестовыеНастройкиJSON(); + + // глобальные настройки + Утверждения.ПроверитьРавенство("server.com", мНастройки.ДоменПочтыДляGit); + Утверждения.ПроверитьРавенство("1cv8.exe" , мНастройки.ПутьКПлатформе83); + Утверждения.ПроверитьРавенство("git" , мНастройки.ПутьGit); + + // репозитарии + Утверждения.ПроверитьРавенство(2, мНастройки.Репозитарии.Количество()); + + Утверждения.ПроверитьРавенство("test", мНастройки.Репозитарии[0].Имя); + Утверждения.ПроверитьРавенство("путь1", мНастройки.Репозитарии[0].КаталогВыгрузки); + Утверждения.ПроверитьРавенство("адрес1", мНастройки.Репозитарии[0].GitURL); + Утверждения.ПроверитьРавенство("каталог1", мНастройки.Репозитарии[0].КаталогХранилища1С); + Утверждения.ПроверитьРавенство(мНастройки.ПутьGit, мНастройки.Репозитарии[0].ПутьGit); + Утверждения.ПроверитьРавенство(мНастройки.ПутьКПлатформе83, мНастройки.Репозитарии[0].ПутьКПлатформе83); + Утверждения.ПроверитьРавенство(мНастройки.ДоменПочтыДляGit, мНастройки.Репозитарии[0].ДоменПочтыДляGit); + + Утверждения.ПроверитьРавенство("test2", мНастройки.Репозитарии[1].Имя); + Утверждения.ПроверитьРавенство("путь2", мНастройки.Репозитарии[1].КаталогВыгрузки); + Утверждения.ПроверитьРавенство("адрес2", мНастройки.Репозитарии[1].GitURL); + Утверждения.ПроверитьРавенство("каталог2", мНастройки.Репозитарии[1].КаталогХранилища1С); + Утверждения.ПроверитьРавенство(мНастройки.ПутьGit, мНастройки.Репозитарии[1].ПутьGit); + Утверждения.ПроверитьРавенство(мНастройки.ПутьКПлатформе83, мНастройки.Репозитарии[1].ПутьКПлатформе83); + Утверждения.ПроверитьРавенство("server.com", мНастройки.Репозитарии[1].ДоменПочтыДляGit); + +КонецПроцедуры + +Процедура Тест_ДолженПроверитьЧтоВызванОбработчикСинхронизацииXML() Экспорт ФайлХранилища = ОбъединитьПути(КаталогFixtures(), "ТестовыйФайлХранилища1С.1CD"); КаталогРепо = ВременныеФайлы.СоздатьКаталог(); КопироватьФайл(ФайлХранилища, ОбъединитьПути(КаталогРепо, "1cv8ddb.1CD")); @@ -107,6 +147,39 @@ КонецПроцедуры + +Процедура Тест_ДолженПроверитьЧтоВызванОбработчикСинхронизацииJSON() Экспорт + ФайлХранилища = ОбъединитьПути(КаталогFixtures(), "ТестовыйФайлХранилища1С.1CD"); + КаталогРепо = ВременныеФайлы.СоздатьКаталог(); + КопироватьФайл(ФайлХранилища, ОбъединитьПути(КаталогРепо, "1cv8ddb.1CD")); + КаталогИсходников = ОбъединитьПути(КаталогРепо, "src"); + СоздатьКаталог(КаталогИсходников); + + РезультатИнициализацииГитЧисло = ИнициализироватьТестовоеХранилищеГит(КаталогРепо); + Утверждения.ПроверитьРавенство(0, РезультатИнициализацииГитЧисло, "Инициализация git-хранилища в каталоге: "+КаталогРепо); + + Распаковщик = Новый МенеджерСинхронизации; + + СоздатьФайлАвторовГит_ДляТестов(КаталогИсходников); + Утверждения.ПроверитьИстину(Новый Файл(ОбъединитьПути(КаталогИсходников, Распаковщик.ИмяФайлаАвторов())).Существует()); + Распаковщик.ЗаписатьФайлВерсийГит(КаталогИсходников,0); + Утверждения.ПроверитьИстину(Новый Файл(ОбъединитьПути(КаталогИсходников, Распаковщик.ИмяФайлаВерсииХранилища())).Существует()); + + Настройки = ПрочитатьТестовыеНастройкиJSON(); + Настройки.Репозитарии.Удалить(1); + Настройки.Репозитарии[0].КаталогВыгрузки = КаталогИсходников; + Настройки.Репозитарии[0].КаталогХранилища1С = КаталогРепо; + Настройки.Репозитарии[0].ПутьGit = "git"; + + мПараметрыВызоваПакетногоСинхронизатора = Неопределено; + ПакетныйСинхронизатор = Новый ПакетнаяСинхронизация; + ПакетныйСинхронизатор.СинхронизироватьХранилища(Настройки, ЭтотОбъект); + + Утверждения.ПроверитьНеравенство(Неопределено, мПараметрыВызоваПакетногоСинхронизатора); + Утверждения.ПроверитьРавенство("test", мПараметрыВызоваПакетногоСинхронизатора.Имя); + +КонецПроцедуры + Функция ТребуетсяСинхронизироватьХранилище(Знач Репо) Экспорт Возврат Истина; КонецФункции