diff --git a/.gitignore b/.gitignore index d27da8ef..82c6bd33 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ bdd-*.xml .enabled-plugins coverage/* +bin/* *.ospx oscript_modules/ diff --git a/build_packagedef b/build_packagedef index 052bd4a5..1e92459a 100644 --- a/build_packagedef +++ b/build_packagedef @@ -11,6 +11,7 @@ КомандаOpm.УстановитьКоманду("opm"); КомандаOpm.ДобавитьПараметр("install -l"); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); КодВозврата = КомандаOpm.Исполнить(); @@ -40,8 +41,7 @@ КомандаOpm.УстановитьКоманду("opm"); КомандаOpm.ДобавитьПараметр("run get-plugins"); - КомандаOpm.ДобавитьЛогВыводаКоманды(ПараметрыСистемыOpm.ИмяЛогаСистемы()); - + КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); КодВозврата = КомандаOpm.Исполнить(); @@ -49,8 +49,6 @@ ВызватьИсключение КомандаOpm.ПолучитьВывод(); КонецЕсли; - Лог.Информация("Настройка локальных библиотек"); - КонецПроцедуры Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт @@ -69,7 +67,9 @@ КонецПроцедуры -Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); +Лог = Логирование.ПолучитьЛог("task.build"); + +//Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src/cmd", "Модули", "ПараметрыПриложения.os"); ПараметрыСистемы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюПараметров); diff --git a/features/clone.feature b/features/cmd/clone.feature similarity index 100% rename from features/clone.feature rename to features/cmd/clone.feature diff --git a/features/init.feature b/features/cmd/init.feature similarity index 100% rename from features/init.feature rename to features/cmd/init.feature diff --git a/features/plugins.feature b/features/cmd/plugins.feature similarity index 100% rename from features/plugins.feature rename to features/cmd/plugins.feature diff --git a/features/setversion.feature b/features/cmd/setversion.feature similarity index 100% rename from features/setversion.feature rename to features/cmd/setversion.feature diff --git a/features/step_definitions/check.core.os b/features/cmd/step_definitions/check.core.os similarity index 98% rename from features/step_definitions/check.core.os rename to features/cmd/step_definitions/check.core.os index 20ec76e5..9017b62c 100644 --- a/features/step_definitions/check.core.os +++ b/features/cmd/step_definitions/check.core.os @@ -1,4 +1,4 @@ -#Использовать "../../src/core/" +#Использовать "../../../src/core/" // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd diff --git a/features/step_definitions/clone.os b/features/cmd/step_definitions/clone.os similarity index 100% rename from features/step_definitions/clone.os rename to features/cmd/step_definitions/clone.os diff --git a/features/step_definitions/init.os b/features/cmd/step_definitions/init.os similarity index 100% rename from features/step_definitions/init.os rename to features/cmd/step_definitions/init.os diff --git a/features/cmd/step_definitions/shared.os b/features/cmd/step_definitions/shared.os new file mode 100644 index 00000000..42af4ccd --- /dev/null +++ b/features/cmd/step_definitions/shared.os @@ -0,0 +1,404 @@ +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd +#Использовать gitrunner +#Использовать asserts +#Использовать tempfiles + +#Использовать "../../../src/core" + +Перем БДД; //контекст фреймворка 1bdd +Перем ЛокальныеВременныеФайлы; +Перем Лог; +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке"); + ВсеШаги.Добавить("ЯСкопировалКаталогТестовогоХранилищаКонфигурацииВоВременныйКаталог"); + ВсеШаги.Добавить("ЯСохраняюЗначениеВременногоКаталогаВПеременной"); + ВсеШаги.Добавить("ЯСоздаюТестовойФайлAuthors"); + ВсеШаги.Добавить("ЯЗаписываюВФайлVersion"); + ВсеШаги.Добавить("ЯИнициализируюСвязьСВнешнимРепозиторием"); + ВсеШаги.Добавить("ЯДобавляюПозиционныйПараметрДляКомандыИзПеременной"); + ВсеШаги.Добавить("ЯДобавляюПараметрДляКомандыИзПеременной"); + ВсеШаги.Добавить("ЯДобавляюПараметрыДляКоманды"); + ВсеШаги.Добавить("ЯСоздаюНеполныйТестовойФайлAuthors"); + ВсеШаги.Добавить("ЯСоздаюНовыйОбъектГитрепозиторий"); + ВсеШаги.Добавить("ЯУстанавливаюРабочейКаталогВоВременныйКаталог"); + ВсеШаги.Добавить("ЯУстанавливаюВКонтекстеПризнакСтатистикиСкриптовOnescript"); + ВсеШаги.Добавить("ЯИнициализируюРепозиторийВКаталогеИзПеременной"); + ВсеШаги.Добавить("ВКаталогеИзПеременнойСоздаетсяФайлИлиКаталог"); + ВсеШаги.Добавить("ВКаталогеИзПеременнойНеСоздаетсяФайлИлиКаталог"); + ВсеШаги.Добавить("ЯОчищаюЗначениеПеременныхОкружения"); + ВсеШаги.Добавить("ЯСкопировалКаталогТестовогоХранилищаКонфигурацииВКаталогИзПеременной"); + ВсеШаги.Добавить("ЯИнициализируюBareРепозиторийВКаталогеИзПеременной"); + ВсеШаги.Добавить("ЯУстанавливаюПеременнуюОкруженияИзПеременной"); + ВсеШаги.Добавить("ЯУстанавливаюРабочейКаталогИзПеременной"); + ВсеШаги.Добавить("ЯСоздаюНовыйОбъектМенеджерсинхронизации"); + ВсеШаги.Добавить("ЯУстанавливаюАвторизациюВХранилищеПользователяСПаролем"); + ВсеШаги.Добавить("ЯУстанавливаюВерсиюПлатформы"); + ВсеШаги.Добавить("ЯВыполняюВыполняютСинхронизацию"); + ВсеШаги.Добавить("ВыводЛогаСодержит"); + + Возврат ВсеШаги; +КонецФункции + +Функция ИмяЛога() Экспорт + Возврат "bdd.gitsync.feature"; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + + ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + ЛокальныеВременныеФайлы.Удалить(); +КонецПроцедуры + +//я устанавливаю в контексте признак статистики скриптов OneScript +Процедура ЯУстанавливаюВКонтекстеПризнакСтатистикиСкриптовOnescript() Экспорт + + // ПутьКаталога = "coverage"; + + // ОбъектКаталога = Новый Файл(ОбъединитьПути(КаталогГитсинк(), ПутьКаталога)); + + // БДД.СохранитьВКонтекст("ПризнакСтатистикиСкриптовOnescript", ОбъектКаталога); + +КонецПроцедуры + +//Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" +Процедура ЯИнициализируюРепозиторийВКаталогеИзПеременной(Знач ПутьКаталогаИсходников) Экспорт + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ВременныйКаталог = БДД.ПолучитьИзКонтекста(ПутьКаталогаИсходников); + ГитРепозиторий.УстановитьРабочийКаталог(ВременныйКаталог); + + ГитРепозиторий.Инициализировать(); + +КонецПроцедуры +//Вывод лога содержит "Завершена синхронизации с git" +Процедура ВыводЛогаСодержит(Знач ПарамСтрока1) Экспорт + //ВызватьИсключение Новый ИнформацияОбОшибке("Шаг <ВыводЛогаСодержит> не реализован", "Не реализовано."); +КонецПроцедуры + +//Я устанавливаю переменную окружения "GITSYNC_STORAGE_PATH" из переменной "КаталогХранилища1С" +Процедура ЯУстанавливаюПеременнуюОкруженияИзПеременной(Знач ИмяПеременной, Знач КаталогХранилища1С) Экспорт + + ЗначениеПеременной = БДД.ПолучитьИзКонтекста(КаталогХранилища1С); + УстановитьПеременнуюСреды(ИмяПеременной, ЗначениеПеременной); + +КонецПроцедуры + +//Я устанавливаю рабочей каталог из переменной "ПутьКаталогаИсходников" +Процедура ЯУстанавливаюРабочейКаталогИзПеременной(Знач ПутьКаталогаИсходников) Экспорт + ВременныйКаталог = БДД.ПолучитьИзКонтекста(ПутьКаталогаИсходников); + УстановитьТекущийКаталог(ВременныйКаталог); + +КонецПроцедуры + +//Я устанавливаю рабочей каталог во временный каталог +Процедура ЯУстанавливаюРабочейКаталогВоВременныйКаталог() Экспорт + УстановитьТекущийКаталог(ЛокальныеВременныеФайлы.СоздатьКаталог()); +КонецПроцедуры + +//Я создаю новый объект ГитРепозиторий +Процедура ЯСоздаюНовыйОбъектГитрепозиторий() Экспорт + ГитРепозиторий = Новый ГитРепозиторий; + БДД.СохранитьВКонтекст("ГитРепозиторий", ГитРепозиторий); +КонецПроцедуры + +//Я сохраняю значение временного каталога в переменной "URLРепозитория" +Процедура ЯСохраняюЗначениеВременногоКаталогаВПеременной(Знач ИмяПеременной) Экспорт + ВременныйКаталог = БДД.ПолучитьИзКонтекста("ВременныйКаталог"); + БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйКаталог); +КонецПроцедуры + +//Я создаю тестовой файл AUTHORS +Процедура ЯСоздаюТестовойФайлAuthors() Экспорт + + ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); + ФайлАвторов = Новый ЗаписьТекста; + ФайлАвторов.Открыть(ОбъединитьПути(ПутьКаталогаИсходников, "AUTHORS"), "utf-8"); + ФайлАвторов.ЗаписатьСтроку("Администратор=Администратор "); + ФайлАвторов.ЗаписатьСтроку("Отладка=Отладка "); + ФайлАвторов.Закрыть(); + +КонецПроцедуры + +//Я записываю "0" в файл VERSION +Процедура ЯЗаписываюВФайлVersion(Знач НомерВерсии) Экспорт + + ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); + + ПутьКФайлуВерсий = ОбъединитьПути(ПутьКаталогаИсходников,"VERSION"); + Попытка + Запись = Новый ЗаписьТекста(ПутьКФайлуВерсий, "utf-8"); + Запись.ЗаписатьСтроку(""); + Запись.ЗаписатьСтроку("" + НомерВерсии + ""); + Запись.Закрыть(); + Исключение + Если Запись <> Неопределено Тогда + ОсвободитьОбъект(Запись); + КонецЕсли; + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +//я инициализирую связь "ПутьКаталогаИсходников" с внешним репозиторием "URLРепозитория" +Процедура ЯИнициализируюСвязьСВнешнимРепозиторием(Знач ПеременнаяПутьКаталогаИсходников, Знач ПеременнаяURLРепозитория) Экспорт + + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + URLРепозитория = БДД.ПолучитьИзКонтекста(ПеременнаяURLРепозитория); + ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста(ПеременнаяПутьКаталогаИсходников); + + ГитРепозиторий.УстановитьРабочийКаталог(ПутьКаталогаИсходников); + ГитРепозиторий.Инициализировать(); + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("add"); + ПараметрыКоманды.Добавить("--all"); + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + ГитРепозиторий.Закоммитить("тест"); + + НастройкаОтправить = Новый НастройкаКомандыОтправить; + НастройкаОтправить.УстановитьURLРепозиторияОтправки(URLРепозитория); + НастройкаОтправить.ОтображатьПрогресс(); + НастройкаОтправить.ПерезаписатьИсторию(); + НастройкаОтправить.Отслеживать(); + НастройкаОтправить.ПолнаяОтправка(); + + ГитРепозиторий.УстановитьНастройкуКомандыОтправить(НастройкаОтправить); + + ГитРепозиторий.Отправить(); + +КонецПроцедуры + +//Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" +Процедура ЯДобавляюПозиционныйПараметрДляКомандыИзПеременной(Знач ИмяКоманды, Знач ИмяПеременной) Экспорт + + Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); + ЗначениеПеременной = БДД.ПолучитьИзКонтекста(ИмяПеременной); + + Команда.ДобавитьПараметр(ЗначениеПеременной); + +КонецПроцедуры + +//Я добавляю параметр "-tmpdir" для команды "gitsync" из переменной "ВременнаяДиректория" +Процедура ЯДобавляюПараметрДляКомандыИзПеременной(Знач Параметр, Знач ИмяКоманды, Знач ИмяПеременной) Экспорт + Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); + ЗначениеПеременной = БДД.ПолучитьИзКонтекста(ИмяПеременной); + Команда.ДобавитьПараметр(СтрШаблон("%1 %2", Параметр, ЗначениеПеременной)); +КонецПроцедуры + +//Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке +Процедура ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке(Знач ИмяКоманды) Экспорт + + ПутьГитсинк = ПолучитьПеременнуюСреды("GITSYNC_TESTING_PATH"); + + Если НЕ ЗначениеЗаполнено(ПутьГитсинк) Тогда + ПутьГитсинк = ОбъединитьПути(КаталогГитсинк(), "src", "cmd", "gitsync.os"); + КонецЕсли; + + ФайлГитсинк = Новый Файл(ПутьГитсинк); + + ПутьГитсинк = ФайлГитсинк.ПолноеИмя; + + ЭтоExe = ВРег(ФайлГитсинк.Расширение) = ".EXE"; + + Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); + + Если НЕ ЭтоExe Тогда + ПодготовитьПриложениеКТестированию(КаталогГитсинк()); + + Команда.УстановитьКоманду("oscript"); + Команда.ДобавитьПараметр("-encoding=utf-8"); + + Команда.ДобавитьПараметр(ОбернутьВКавычки(ПутьГитсинк)); + Иначе + + СистемнаяИнформация = Новый СистемнаяИнформация; + ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + + Если ЭтоWindows Тогда + Команда.УстановитьКоманду(ПутьГитсинк); // Нельзя оборачивать в кавычки + Иначе + Команда.УстановитьКоманду("mono"); + Команда.ДобавитьПараметр(ПутьГитсинк); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +//я скопировал каталог тестового хранилища конфигурации во временный каталог +Процедура ЯСкопировалКаталогТестовогоХранилищаКонфигурацииВоВременныйКаталог() Экспорт + + ВременныйКаталог = БДД.ПолучитьИзКонтекста("ВременныйКаталог"); + КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(ВременныйКаталог, "1cv8ddb.1CD")) + +КонецПроцедуры + +//Я создаю неполный тестовой файл AUTHORS +Процедура ЯСоздаюНеполныйТестовойФайлAuthors() Экспорт + + ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); + ФайлАвторов = Новый ЗаписьТекста; + ФайлАвторов.Открыть(ОбъединитьПути(ПутьКаталогаИсходников, "AUTHORS"), "utf-8"); + ФайлАвторов.ЗаписатьСтроку("Отладка=Отладка "); + ФайлАвторов.Закрыть(); + +КонецПроцедуры + +//Я создаю новый объект МенеджерСинхронизации +Процедура ЯСоздаюНовыйОбъектМенеджерсинхронизации() Экспорт + МенеджерСинхронизации = Новый МенеджерСинхронизации; + БДД.СохранитьВКонтекст("МенеджерСинхронизации", МенеджерСинхронизации); +КонецПроцедуры + +//Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем "" +Процедура ЯУстанавливаюАвторизациюВХранилищеПользователяСПаролем(Знач Пользователь, Знач Пароль) Экспорт + + МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации"); + МенеджерСинхронизации.АвторизацияВХранилищеКонфигурации(Пользователь, Пароль); + +КонецПроцедуры + +//Я устанавливаю версию платформы "8.3" +Процедура ЯУстанавливаюВерсиюПлатформы(Знач ВерсияПлатформы) Экспорт + + МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации"); + МенеджерСинхронизации.ВерсияПлатформы(ВерсияПлатформы); + +КонецПроцедуры + +//Я выполняю выполняют синхронизацию +Процедура ЯВыполняюВыполняютСинхронизацию() Экспорт + + МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации"); + ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); + КаталогХранилища1С = БДД.ПолучитьИзКонтекста("КаталогХранилища1С"); + МенеджерСинхронизации.Синхронизировать(ПутьКаталогаИсходников, КаталогХранилища1С); + +КонецПроцедуры + +//Я добавляю параметры для команды "gitsync" +//|--storage-user Администратор| +//|-useVendorUnload| +Процедура ЯДобавляюПараметрыДляКоманды(Знач ИмяКоманды, Знач ТаблицаПараметров) Экспорт + + Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); + Для Каждого Параметр из ТаблицаПараметров Цикл + Команда.ДобавитьПараметр(Параметр[0]) + КонецЦикла + +КонецПроцедуры + +//я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" +Процедура ЯСкопировалКаталогТестовогоХранилищаКонфигурацииВКаталогИзПеременной(Знач ИмяПеременной) Экспорт + КаталогХранилища1С = БДД.ПолучитьИзКонтекста(ИмяПеременной); + КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(КаталогХранилища1С, "1cv8ddb.1CD")); +КонецПроцедуры + +//Я инициализирую bare репозиторий в каталоге из переменной "URLРепозитория" +Процедура ЯИнициализируюBareРепозиторийВКаталогеИзПеременной(Знач ИмяПеременной) Экспорт + + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + URLРепозитория = БДД.ПолучитьИзКонтекста(ИмяПеременной); + ГитРепозиторий.УстановитьРабочийКаталог(URLРепозитория); + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("init"); + ПараметрыКоманды.Добавить("--bare"); + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + +КонецПроцедуры + +//В каталоге из переменной "ПутьКаталогаИсходников" создается файл или каталог "AUTHORS" +Процедура ВКаталогеИзПеременнойСоздаетсяФайлИлиКаталог(Знач ПутьКаталогаИсходников, Знач ИмяФайла) Экспорт + + ВременныйКаталог = БДД.ПолучитьИзКонтекста(ПутьКаталогаИсходников); + ИскомыйФайл = Новый Файл(ОбъединитьПути(ВременныйКаталог, ИмяФайла)); + Ожидаем.Что(ИскомыйФайл.Существует(), "Файл должен был существовать").ЭтоИстина(); + +КонецПроцедуры + +//В каталоге из переменной "ПутьКаталогаИсходников" не создается файл или каталог ".git" +Процедура ВКаталогеИзПеременнойНеСоздаетсяФайлИлиКаталог(Знач ПутьКаталогаИсходников, Знач ИмяФайла) Экспорт + ВременныйКаталог = БДД.ПолучитьИзКонтекста(ПутьКаталогаИсходников); + ИскомыйФайл = Новый Файл(ОбъединитьПути(ВременныйКаталог, ИмяФайла)); + Ожидаем.Что(ИскомыйФайл.Существует(), "Файл не должен был существовать").ЭтоЛожь(); +КонецПроцедуры + +//Я очищаю значение переменных окружения +//|GITSYNC_STORAGE_PATH| +//|GITSYNC_WORKDIR| +Процедура ЯОчищаюЗначениеПеременныхОкружения(Знач ПарамТаблица1) Экспорт + Для каждого Переменная Из ПарамТаблица1 Цикл + УстановитьПеременнуюСреды(Переменная[0], ""); + КонецЦикла; +КонецПроцедуры + +Функция ПутьКВременномуФайлуХранилища1С() + + Возврат ОбъединитьПути(КаталогFixtures(), "ТестовыйФайлХранилища1С.1CD"); + +КонецФункции + +Функция КаталогFixtures() + Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures"); +КонецФункции + +Функция КаталогГитсинк() + Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..", ".."); +КонецФункции + +Функция ОбернутьВКавычки(Знач Строка); + Возврат """" + Строка + """"; +КонецФункции + +Функция КлючКоманды(Знач ИмяКоманды) + Возврат "Команда-" + ИмяКоманды; +КонецФункции + +Процедура ПодготовитьПриложениеКТестированию(Знач РабочийКаталог) Экспорт + + Лог.Отладка("Установка локальных зависимостей библиотек"); + КомандаOpm = Новый Команда; + КомандаOpm.УстановитьРабочийКаталог(РабочийКаталог); + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("install -l"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение КомандаOpm.ПолучитьВывод(); + КонецЕсли; + + Лог.Отладка("Настройка локальных библиотек"); + + ПутьКФайлуЗагрузчику = ОбъединитьПути(РабочийКаталог, "oscript_modules", "package-loader.os"); + ШаблонныйФайлЗагрузчик = ОбъединитьПути(РабочийКаталог, "templates", "package-loader.os"); + ФайлЗагрузчик = Новый Файл(ПутьКФайлуЗагрузчику); + Если Не ФайлЗагрузчик.Существует() Тогда + КопироватьФайл(ШаблонныйФайлЗагрузчик, ПутьКФайлуЗагрузчику); + Лог.Информация("Добавлен файл загрузки локальных библиотек"); + КонецЕсли; + + ПутьКФайлуНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "src", "cmd", "oscript.cfg"); + ШаблонныйФайлНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "templates", "oscript.cfg"); + ФайлНастройкиСкрипта= Новый Файл(ПутьКФайлуНастройкиСкрипта); + Если Не ФайлНастройкиСкрипта.Существует() Тогда + КопироватьФайл(ШаблонныйФайлНастройкиСкрипта, ПутьКФайлуНастройкиСкрипта); + Лог.Информация("Добавлен файл настройки запуска"); + КонецЕсли; + +КонецПроцедуры + +ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + +Лог = Логирование.ПолучитьЛог(ИмяЛога()); \ No newline at end of file diff --git a/features/step_definitions/sync.core.os b/features/cmd/step_definitions/sync.core.os similarity index 99% rename from features/step_definitions/sync.core.os rename to features/cmd/step_definitions/sync.core.os index b1ddc002..e0327d2a 100644 --- a/features/step_definitions/sync.core.os +++ b/features/cmd/step_definitions/sync.core.os @@ -54,8 +54,8 @@ Команда = Новый Команда; Команда.УстановитьКоманду("opm"); Команда.ДобавитьПараметр("build"); + Команда.ДобавитьПараметр("--out"); Команда.ДобавитьПараметр(ВременныйКаталог); - Команда.ДобавитьПараметр("-out"); Команда.ДобавитьПараметр(ВременныйКаталог); КодВозврата = Команда.Исполнить(); diff --git a/features/step_definitions/sync.os b/features/cmd/step_definitions/sync.os similarity index 100% rename from features/step_definitions/sync.os rename to features/cmd/step_definitions/sync.os diff --git a/features/step_definitions/test.plugin.os b/features/cmd/step_definitions/test.plugin.os similarity index 100% rename from features/step_definitions/test.plugin.os rename to features/cmd/step_definitions/test.plugin.os diff --git a/features/step_definitions/testsata/test_plugin/packagedef b/features/cmd/step_definitions/testsata/test_plugin/packagedef similarity index 100% rename from features/step_definitions/testsata/test_plugin/packagedef rename to features/cmd/step_definitions/testsata/test_plugin/packagedef diff --git "a/features/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" "b/features/cmd/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" similarity index 100% rename from "features/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" rename to "features/cmd/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" diff --git a/features/sync.feature b/features/cmd/sync.feature similarity index 100% rename from features/sync.feature rename to features/cmd/sync.feature diff --git a/features/v8path.feature b/features/cmd/v8path.feature similarity index 97% rename from features/v8path.feature rename to features/cmd/v8path.feature index 3ba505ae..14870025 100644 --- a/features/v8path.feature +++ b/features/cmd/v8path.feature @@ -19,13 +19,13 @@ Сценарий: Простая синхронизация хранилища с git-репозиторием Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "--v8-path /opt/1C/v8.3/x86_64/1cv8" для команды "gitsync" + И Я добавляю параметр "--v8-path /opt/1C/v8.3/i386/1cv8" для команды "gitsync" И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ОТЛАДКА - Используется путь к платформе 1С " + Тогда Вывод команды "gitsync" содержит "ОТЛАДКА - Используется путь к платформе 1С " И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 \ No newline at end of file diff --git a/features/version.feature b/features/cmd/version.feature similarity index 100% rename from features/version.feature rename to features/cmd/version.feature diff --git a/features/check.core.feature b/features/core/check.core.feature similarity index 100% rename from features/check.core.feature rename to features/core/check.core.feature diff --git a/features/core/step_definitions/check.core.os b/features/core/step_definitions/check.core.os new file mode 100644 index 00000000..9017b62c --- /dev/null +++ b/features/core/step_definitions/check.core.os @@ -0,0 +1,74 @@ +#Использовать "../../../src/core/" + +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯСоздаюНовыйМенеджерподписок"); + ВсеШаги.Добавить("ЯСоздаюНовыйИнтерфейсплагинов"); + ВсеШаги.Добавить("МенеджераподписокРеализуетИнтерфейсаплагинов"); + ВсеШаги.Добавить("ЯСоздаюНовыйТестовыйплагин"); + ВсеШаги.Добавить("ТестовыйплагинРеализуетИнтерфейсаплагинов"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + +КонецПроцедуры + +//Я создаю новый МенеджерПодписок +Процедура ЯСоздаюНовыйМенеджерподписок() Экспорт + + МенеджерПодписок = Новый МенеджерПодписок(Новый Соответствие); + БДД.СохранитьВКонтекст("МенеджераПодписок", МенеджерПодписок); + +КонецПроцедуры + +//Я создаю новый ИнтерфейсПлагинов +Процедура ЯСоздаюНовыйИнтерфейсплагинов() Экспорт + + ИнтерфейсПлагинов = Новый ИнтерфейсПлагинов; + БДД.СохранитьВКонтекст("ИнтерфейсПлагинов", ИнтерфейсПлагинов); + +КонецПроцедуры + +//МенеджераПодписок реализует ИнтерфейсаПлагинов +Процедура МенеджераподписокРеализуетИнтерфейсаплагинов() Экспорт + + МенеджераПодписок = БДД.ПолучитьИзКонтекста("МенеджераПодписок"); + ИнтерфейсПлагинов = БДД.ПолучитьИзКонтекста("ИнтерфейсПлагинов"); + + ИнтерфейсПлагинов.Реализует(МенеджераПодписок, Истина); + +КонецПроцедуры + +//Я создаю новый ТестовыйПлагин +Процедура ЯСоздаюНовыйТестовыйплагин() Экспорт + ПутьКПлагину = ОбъединитьПути(ТекущийСценарий().Каталог, "testsata/test_plugin/src/Классы", "testPlugin.os"); + ПодключитьСценарий(ПутьКПлагину, "ТестовыйПлагин"); + + БДД.СохранитьВКонтекст("ТестовыйПлагин", Новый ТестовыйПлагин); +КонецПроцедуры + +//ТестовыйПлагин реализует ИнтерфейсаПлагинов +Процедура ТестовыйплагинРеализуетИнтерфейсаплагинов() Экспорт + ИнтерфейсПлагинов = БДД.ПолучитьИзКонтекста("ИнтерфейсПлагинов"); + ТестовыйПлагин = БДД.ПолучитьИзКонтекста("ТестовыйПлагин"); + + ИнтерфейсПлагинов.Реализует(ТестовыйПлагин, Истина); +КонецПроцедуры diff --git a/features/core/step_definitions/clone.os b/features/core/step_definitions/clone.os new file mode 100644 index 00000000..ed02201e --- /dev/null +++ b/features/core/step_definitions/clone.os @@ -0,0 +1,74 @@ +#Использовать tempfiles +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd +Перем ЛокальныеВременныеФайлы; + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯНаполняюBareРепозиторийИзПеременнойТестовымиДанными"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + + ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + ЛокальныеВременныеФайлы.Удалить(); +КонецПроцедуры + + +//Я наполняю bare репозиторий из переменной "URLРепозитория" тестовыми данными +Процедура ЯНаполняюBareРепозиторийИзПеременнойТестовымиДанными(Знач ПеременнаяURLРепозитория) Экспорт + + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + URLРепозитория = БДД.ПолучитьИзКонтекста(ПеременнаяURLРепозитория); + + ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + + ГитРепозиторий.УстановитьРабочийКаталог(ВременныйКаталог); + ГитРепозиторий.Инициализировать(); + readme = ОбъединитьПути(ВременныйКаталог, "README.md"); + ЗаписьТекста = Новый ЗаписьТекста(readme); + ЗаписьТекста.ЗаписатьСтроку("TESTING"); + ЗаписьТекста.Закрыть(); + + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("add"); + ПараметрыКоманды.Добавить("--all"); + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + ГитРепозиторий.Закоммитить("init"); + + НастройкаОтправить = Новый НастройкаКомандыОтправить; + НастройкаОтправить.УстановитьURLРепозиторияОтправки(URLРепозитория); + НастройкаОтправить.ОтображатьПрогресс(); + НастройкаОтправить.ПерезаписатьИсторию(); + НастройкаОтправить.Отслеживать(); + НастройкаОтправить.ПолнаяОтправка(); + + ГитРепозиторий.УстановитьНастройкуКомандыОтправить(НастройкаОтправить); + + ГитРепозиторий.Отправить(); + + ЛокальныеВременныеФайлы.БезопасноУдалитьФайл(ВременныйКаталог); + +КонецПроцедуры + + + + + + + diff --git a/features/core/step_definitions/init.os b/features/core/step_definitions/init.os new file mode 100644 index 00000000..4ae473fb --- /dev/null +++ b/features/core/step_definitions/init.os @@ -0,0 +1,54 @@ +#Использовать asserts +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd +Перем ЛокальныеВременныеФайлы; +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯИнициализируюПустойРепозиторийВКаталогИзПеременной"); + ВсеШаги.Добавить("ЯСоздаюКаталогSrcВременныйВКаталогеИзПеременнойИСохраняюЕгоВКонтекстВПеременной"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + + ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + ЛокальныеВременныеФайлы.Удалить(); +КонецПроцедуры + +//Я инициализирую пустой репозиторий в каталог из переменной "ПутьКаталогаИсходников" +Процедура ЯИнициализируюПустойРепозиторийВКаталогИзПеременной(Знач ПутьКаталогаИсходников) Экспорт + + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ВременныйКаталог = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); + ГитРепозиторий.УстановитьРабочийКаталог(ВременныйКаталог); + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("init"); + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + +КонецПроцедуры + +//Я создаю каталог src временный в каталоге из переменной "ПутьКаталогаИсходников" и сохраняю его в контекст в переменной "КаталогSRC" +Процедура ЯСоздаюКаталогSrcВременныйВКаталогеИзПеременнойИСохраняюЕгоВКонтекстВПеременной(Знач ПутьКаталогаИсходников, Знач КаталогSRC) Экспорт + ВременныйКаталог = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); + КаталогSRC = ОбъединитьПути(ВременныйКаталог, "src"); + СоздатьКаталог(КаталогSRC); + БДД.СохранитьВКонтекст("КаталогSRC", КаталогSRC); + +КонецПроцедуры + + + diff --git a/features/step_definitions/shared.os b/features/core/step_definitions/shared.os similarity index 99% rename from features/step_definitions/shared.os rename to features/core/step_definitions/shared.os index b65baf8c..d5ada6ff 100644 --- a/features/step_definitions/shared.os +++ b/features/core/step_definitions/shared.os @@ -3,7 +3,7 @@ #Использовать asserts #Использовать tempfiles -#Использовать "../../src/core" +#Использовать "../../../src/core" Перем БДД; //контекст фреймворка 1bdd Перем ЛокальныеВременныеФайлы; @@ -333,7 +333,7 @@ КонецФункции Функция КаталогГитсинк() - Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."); + Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..", ".."); КонецФункции Функция ОбернутьВКавычки(Знач Строка); diff --git a/features/step_definitions/sync.batch.os b/features/core/step_definitions/sync.batch.os similarity index 100% rename from features/step_definitions/sync.batch.os rename to features/core/step_definitions/sync.batch.os diff --git a/features/core/step_definitions/sync.core.os b/features/core/step_definitions/sync.core.os new file mode 100644 index 00000000..fd9f3663 --- /dev/null +++ b/features/core/step_definitions/sync.core.os @@ -0,0 +1,130 @@ +#Использовать tempfiles +#Использовать 1commands +#Использовать fs +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd +Перем ЛокальныеВременныеФайлы; +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной"); + ВсеШаги.Добавить("ЯСоздаюНовыйУправлениеплагинами"); + ВсеШаги.Добавить("ЯСобираюТестовыйПлагинИСохраняюВКонтекст"); + ВсеШаги.Добавить("ЯУстанавливаюФайлПлагинаИзПеременной"); + ВсеШаги.Добавить("ЯЗагружаюПлагиныИзКаталогаВПеременной"); + ВсеШаги.Добавить("ЯПодключаюПлагиныВМенеджерсинхронизации"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + + ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + ЛокальныеВременныеФайлы.Удалить(); +КонецПроцедуры + +//Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов" +Процедура ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной(Знач ИмяПеременной) Экспорт + + ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + + БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйКаталог); + +КонецПроцедуры + +//Я собираю тестовый плагин и сохраняю в контекст "ПутьКФайлуПлагина" +Процедура ЯСобираюТестовыйПлагинИСохраняюВКонтекст(Знач ИмяПеременной) Экспорт + + ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + + ФС.КопироватьСодержимоеКаталога(КаталогТестовогоПлагина(), ВременныйКаталог); + + Команда = Новый Команда; + Команда = Новый Команда; + Команда.УстановитьКоманду("opm"); + Команда.ДобавитьПараметр("build"); + Команда.ДобавитьПараметр("--out"); + Команда.ДобавитьПараметр(ВременныйКаталог); + Команда.ДобавитьПараметр(ВременныйКаталог); + КодВозврата = Команда.Исполнить(); + + Если НЕ КодВозврата = 0 Тогда + ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания тестового плагина", Команда.ПолучитьВывод()); + КонецЕсли; + + Сообщить(Команда.ПолучитьВывод()); + + МассивФайлов = НайтиФайлы(ВременныйКаталог, "*.ospx"); + + Если МассивФайлов.Количество() = 0 Тогда + ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания тестового плагина", "Не найден собранный файл плагина"); + КонецЕсли; + + ФайлПлагина = МассивФайлов[0].ПолноеИмя; + + БДД.СохранитьВКонтекст(ИмяПеременной, ФайлПлагина); + +КонецПроцедуры + +//Я создаю новый УправлениеПлагинами +Процедура ЯСоздаюНовыйУправлениеплагинами() Экспорт + УправлениеПлагинами = Новый УправлениеПлагинами; + + БДД.СохранитьВКонтекст("УправлениеПлагинами", УправлениеПлагинами); +КонецПроцедуры + +//Я загружаю плагины из каталога в переменной "КаталогПлагинов" +Процедура ЯЗагружаюПлагиныИзКаталогаВПеременной(Знач ИмяПеременнойКаталога) Экспорт + + УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); + КаталогПлагинов = БДД.ПолучитьИзКонтекста(ИмяПеременнойКаталога); + + УправлениеПлагинами.УстановитьКаталогПлагинов(КаталогПлагинов); + УправлениеПлагинами.ЗагрузитьПлагины(); + + УправлениеПлагинами.ВключитьПлагин("test_plugin"); + +КонецПроцедуры + +//Я подключаю плагины в МенеджерСинхронизации +Процедура ЯПодключаюПлагиныВМенеджерсинхронизации() Экспорт + + УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); + + ИндексПлагинов = УправлениеПлагинами.ПолучитьИндексПлагинов(); + + МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации"); + МенеджерСинхронизации.ПодпискиНаСобытия(ИндексПлагинов); + МенеджерСинхронизации.ПараметрыПодписокНаСобытия(Новый Соответствие); + +КонецПроцедуры + +//Я устанавливаю файл плагина из переменной "ПутьКФайлуПлагина" +Процедура ЯУстанавливаюФайлПлагинаИзПеременной(Знач ПутьКФайлуПлагина) Экспорт + + КаталогПлагинов = БДД.ПолучитьИзКонтекста("КаталогПлагинов"); + ФайлПлагина = БДД.ПолучитьИзКонтекста(ПутьКФайлуПлагина); + УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); + УправлениеПлагинами.УстановитьКаталогПлагинов(КаталогПлагинов); + УправлениеПлагинами.УстановитьФайлПлагин(ФайлПлагина); + + +КонецПроцедуры + +Функция КаталогТестовогоПлагина() + Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "testsata", "test_plugin"); +КонецФункции + +ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; diff --git a/features/core/step_definitions/sync.os b/features/core/step_definitions/sync.os new file mode 100644 index 00000000..3a99892e --- /dev/null +++ b/features/core/step_definitions/sync.os @@ -0,0 +1,28 @@ +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd +Перем ЛокальныеВременныеФайлы; + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + + ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + ЛокальныеВременныеФайлы.Удалить(); +КонецПроцедуры + diff --git a/features/core/step_definitions/test.plugin.os b/features/core/step_definitions/test.plugin.os new file mode 100644 index 00000000..e1e43f2d --- /dev/null +++ b/features/core/step_definitions/test.plugin.os @@ -0,0 +1,48 @@ +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd +#Использовать tempfiles + +Перем БДД; //контекст фреймворка 1bdd + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("КоличествоКоммитовДолжноБыть"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + // ВременныеФайлы.Удалить(); +КонецПроцедуры + +//Количество коммитов должно быть "5" +Процедура КоличествоКоммитовДолжноБыть(Знач ЧислоПроверки) Экспорт + + ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); + ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); + ГитРепозиторий.УстановитьРабочийКаталог(ПутьКаталогаИсходников); + + ПараметрыКоманды = Новый Массив; + ПараметрыКоманды.Добавить("log"); + ПараметрыКоманды.Добавить("--pretty=oneline"); + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + Вывод = ГитРепозиторий.ПолучитьВыводКоманды(); + + МассивСтрок = СтрРазделить(Вывод, Символы.ПС); + + КоличествоКоммитов = МассивСтрок.Количество(); + + Утверждения.ПроверитьРавенство(Число(ЧислоПроверки), КоличествоКоммитов, "Количество коммитов должно быть равно"); + +КонецПроцедуры diff --git a/features/core/step_definitions/testsata/test_plugin/packagedef b/features/core/step_definitions/testsata/test_plugin/packagedef new file mode 100644 index 00000000..64b1578e --- /dev/null +++ b/features/core/step_definitions/testsata/test_plugin/packagedef @@ -0,0 +1,7 @@ + +Описание.Имя("test_plugin") + .Версия("0.0.1") + .ВерсияСреды("1.0.18") + .ЗависитОт("logos", "1.0.1") + .ВключитьФайл("src") + .ОпределяетКласс("Плагин_ТестовыйПлагин","src/Классы/testPlugin.os"); diff --git "a/features/core/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" "b/features/core/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" new file mode 100644 index 00000000..32280b51 --- /dev/null +++ "b/features/core/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" @@ -0,0 +1,568 @@ +#Использовать logos + +Перем Лог; + +#Область Подписки_на_события + +#Область Подписка_на_активизацию_плагинов + +// Вызывается при начале установке новых подписчиков +// +// Параметры: +// МенеджерСинхронизации - Объект.МенеджерСинхронизации - ссылка на класс МенеджерСинхронизации +// +Процедура ПриАктивизации(МенеджерСинхронизации) Экспорт + + Лог.Информация("Вызвано событие <ПриАктивизации> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписка_на_получение_параметров_выполнения + +// Вызывается при передаче параметров в МенеджерСинхронизации +// +// Параметры: +// ПараметрыПодписчиков - Объект.ПараметрыПодписчиков - ссылка на класс ПараметрыПодписчиков +// +// Объект <ПараметрыПодписчиков> реализовывает публичные функции: +// * Функция <Параметр> +// Получает и возвращает значение из индекса параметров +// +// Параметры: +// * СтрокаИмениПараметра - Строка - имя параметра допустимо указание нескольких имен к параметру через пробел +// Например, "config --config -c c" +// * ЗначениеПоУмолчанию - Произвольный - возвращаемое значение в случае отсутствия параметра после получения из индекса +// Возвращаемое значение: +// Строка, Число, Булево, Массив, Соответствие, Неопределено - значение параметра +// * Функция <ПолучитьПараметры> +// Возвращает используемый индекс параметров +// +// Возвращаемое значение: +// Соответствие - соответствие ключей и значение параметров +// +// Примеры: +// ``` +// +// ОтправлятьМетки = ПараметрыПодписчиков.Параметр("push --push P ОтправлятьМетки", Ложь); +// +// ``` +Процедура ПриПолученииПараметров(ПараметрыПодписчиков) Экспорт + + Лог.Информация("Вызвано событие <ПриПолученииПараметров> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_регистрацию_команд_приложения + +// Вызывается при регистрации команды приложения +// +// Параметры: +// ИмяКоманды - Строка - имя регистрируемой команды +// КлассРеализации - Объект.КомандаПриложения - ссылка на класс <КомандаПриложения> +// +Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации) Экспорт + + Лог.Информация("Вызвано событие <ПриРегистрацииКомандыПриложения> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_начало_и_окончания_выполнения + +// Вызывается перед началом работы менеджера синхронизации +// +// Параметры: +// ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации +// КаталогРабочейКопии - Строка - полный путь к рабочему каталогу копии +// +Процедура ПередНачаломВыполнения(ПутьКХранилищу, КаталогРабочейКопии) Экспорт + + Лог.Информация("Вызвано событие <ПередНачаломВыполнения> для плагина <%1>", Имя()); + +КонецПроцедуры + +// Вызывается после завершения работы менеджера синхронизации +// +// Параметры: +// ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации +// КаталогРабочейКопии - Строка - полный путь к рабочему каталогу копии +// +Процедура ПослеОкончанияВыполнения(ПутьКХранилищу, КаталогРабочейКопии) Экспорт + + Лог.Информация("Вызвано событие <ПослеОкончанияВыполнения> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_получение_таблицы_версий + +// Вызывается при получении таблицы версий из хранилища конфигурации +// +// Параметры: +// ТаблицаВерсий - ТаблицаЗначений - инициализированная таблица с колонками: +// * Дата - Дата - дата версии +// * НомерВерсии - Число - номер версии +// * Комментарий - Строка - комментарий автора к версии +// * Автор - Строка - имя автора версии в хранилище +// * Тэг - Строка - метка версии в хранилище +// * ГУИД_Автора - Строка - уникальный идентификатор автора версии +// * ПредставлениеАвтора - Строка - представление автора для коммита в git +// ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации +// СтандартнаяОбработка - Булево - признак отказ от обработки по умолчанию +// +Процедура ПриПолученииТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу, СтандартнаяОбработка) Экспорт + + Лог.Информация("Вызвано событие <ПриПолученииТаблицыВерсий> для плагина <%1>", Имя()); + +КонецПроцедуры + +// Вызывается после получении таблицы версий из хранилища конфигурации +// +// Параметры: +// ТаблицаВерсий - ТаблицаЗначений - заполненная таблица с колонками: +// * Дата - Дата - дата версии +// * НомерВерсии - Число - номер версии +// * Комментарий - Строка - комментарий автора к версии +// * Автор - Строка - имя автора версии в хранилище +// * Тэг - Строка - метка версии в хранилище +// * ГУИД_Автора - Строка - уникальный идентификатор автора версии +// * ПредставлениеАвтора - Строка - представление автора для коммита в git +// ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации +// +Процедура ПослеПолученияТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу) Экспорт + + Лог.Информация("Вызвано событие <ПослеПолученияТаблицыВерсий> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_получение_таблицы_пользователей + +// Вызывается при получении таблицы пользователей из хранилища конфигурации +// +// Параметры: +// ТаблицаПользователей - ТаблицаЗначений - инициализированная таблица с колонками: +// * Автор - Строка - имя автора версии в хранилище +// * ПредставлениеАвтора - Строка - представление автора для коммита в git +// * ГУИД_Автора - Строка - уникальный идентификатор автора версии +// ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации +// СтандартнаяОбработка - Булево - признак отказ от обработки по умолчанию +// +Процедура ПриПолученииТаблицыПользователей(ТаблицаПользователей, ПутьКХранилищу, СтандартнаяОбработка) Экспорт + + Лог.Информация("Вызвано событие <ПриПолученииТаблицыПользователей> для плагина <%1>", Имя()); + +КонецПроцедуры + +// Вызывается после получении таблицы пользователей из хранилища конфигурации +// +// Параметры: +// ТаблицаПользователей - ТаблицаЗначений - заполненная таблица с колонками: +// * Автор - Строка - имя автора версии в хранилище +// * ПредставлениеАвтора - Строка - представление автора для коммита в git +// * ГУИД_Автора - Строка - уникальный идентификатор автора версии +// ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации +// +Процедура ПослеПолученияТаблицыПользователей(ТаблицаПользователей, ПутьКХранилищу) Экспорт + + Лог.Информация("Вызвано событие <ПослеПолученияТаблицыПользователей> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_обработки_строки_версии + +// Вызывается перед началом обработки таблица истории хранилища конфигурации +// +// Параметры: +// ТаблицаИсторииХранилища - ТаблицаЗначений - заполненная таблица с колонками: +// * Дата - Дата - дата версии +// * НомерВерсии - Число - номер версии +// * Комментарий - Строка - комментарий автора к версии +// * Автор - Строка - имя автора версии в хранилище +// * Тэг - Строка - метка версии в хранилище +// * ГУИД_Автора - Строка - уникальный идентификатор автора версии +// * ПредставлениеАвтора - Строка - представление автора для коммита в git +// ТекущаяВерсия - Число - текущая/последняя синхронизированная версия из файла +// СледующаяВерсия - Число - следующая версия для обработки +// МаксимальнаяВерсияДляРазбора - Число - максимальная версия для обработки +// +Процедура ПередНачаломЦиклаОбработкиВерсий(ТаблицаИсторииХранилища, ТекущаяВерсия, СледующаяВерсия, МаксимальнаяВерсияДляРазбора) Экспорт + + Лог.Информация("Вызвано событие <ПередНачаломЦиклаОбработкиВерсий> для плагина <%1>", Имя()); + +КонецПроцедуры + +// Вызывается перед обработкой версии хранилища +// +// Параметры: +// СтрокаВерсии - СтрокаТаблицыЗначений - текущая строка из ТаблицаИсторииХранилища +// ТекущаяВерсия - Число - текущая версия для обработки +// +Процедура ПередОбработкойВерсииХранилища(СтрокаВерсии, ТекущаяВерсия) Экспорт + + Лог.Информация("Вызвано событие <ПередОбработкойВерсииХранилища> для плагина <%1>", Имя()); + +КонецПроцедуры + +// Вызывается при обработкой версии хранилища +// +// Параметры: +// СтрокаВерсии - СтрокаТаблицыЗначений - текущая строка из ТаблицаИсторииХранилища +// ТекущаяВерсия - Число - текущая версия для обработки +// +Процедура ПриОбработкеВерсииХранилища(СтрокаВерсии, ТекущаяВерсия) Экспорт + + Лог.Информация("Вызвано событие <ПриОбработкеВерсииХранилища> для плагина <%1>", Имя()); + +КонецПроцедуры + +// Вызывается после обработкой версии хранилища +// +// Параметры: +// СтрокаВерсии - СтрокаТаблицыЗначений - текущая строка из ТаблицаИсторииХранилища +// ТекущаяВерсия - Число - текущая версия для обработки +// +Процедура ПослеОбработкиВерсииХранилища(СтрокаВерсии, ТекущаяВерсия) Экспорт + + Лог.Информация("Вызвано событие <ПослеОбработкиВерсииХранилища> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_выполнение_коммита + +// Вызывается перед фиксацией изменений в рабочей копии +// +// Параметры: +// КаталогРабочейКопии - Строка - полный путь к рабочему каталогу копии +// Комментарий - Строка - комментарий изменений при фиксации +// Автор - Строка - автор изменений при фиксации +// Дата - Дата - дата изменений фиксации +// +Процедура ПередКоммитом(КаталогРабочейКопии, Комментарий, Автор, Дата) Экспорт + + Лог.Информация("Вызвано событие <ПередКоммитом> для плагина <%1>", Имя()); + +КонецПроцедуры + +// Вызывается при фиксации изменений в рабочей копии +// +// Параметры: +// ГитРепозиторий - Объект.ГитРепозиторий - подготовленный объект класса <ГитРепозиторий> +// Комментарий - Строка - комментарий при фиксации изменений +// ПроиндексироватьОтслеживаемыеФайлы - Булево - признак добавления не отслеживаемых файлов в фиксацию +// ИмяФайлаКомментария - Строка - путь к файлу для записи комментария фиксации +// АвторДляГит - Строка - автор изменений изменений в формате `Иванов_А ` +// ДатаДляГит - Дата - дата изменений +// Коммитер - Строка - автор фиксации изменений в формате `Иванов_А ` +// ДатаКоммитера - Дата - дата фиксации изменений +// +Процедура ПриКоммите(ГитРепозиторий, + Комментарий, + ПроиндексироватьОтслеживаемыеФайлы, + ИмяФайлаКомментария, + АвторДляГит, + ДатаДляГит, + Коммитер, + ДатаКоммитера) Экспорт + + Лог.Информация("Вызвано событие <ПриКоммите> для плагина <%1>", Имя()); + +КонецПроцедуры + +// Вызывается после фиксацией изменений в рабочей копии +// +// Параметры: +// ГитРепозиторий - Объект.ГитРепозиторий - подготовленный объект класса <ГитРепозиторий> +// КаталогРабочейКопии - Строка - полный путь к рабочему каталогу копии +// +Процедура ПослеКоммита(ГитРепозиторий, КаталогРабочейКопии) Экспорт + + Лог.Информация("Вызвано событие <ПослеКоммита> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_начало_и_окончания_выгрузки_версии_конфигурации + + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// ПутьКХранилищу - <Тип.Вид> - <описание параметра> +// НомерВерсии - <Тип.Вид> - <описание параметра> +// +Процедура ПередНачаломВыгрузкиВерсииХранилищаКонфигурации(Конфигуратор, КаталогРабочейКопии, ПутьКХранилищу, НомерВерсии) Экспорт + + Лог.Информация("Вызвано событие <ПередНачаломВыгрузкиВерсииХранилищаКонфигурации> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// ПутьКХранилищу - <Тип.Вид> - <описание параметра> +// НомерВерсии - <Тип.Вид> - <описание параметра> +// +Процедура ПослеОкончанияВыгрузкиВерсииХранилищаКонфигурации(Конфигуратор, КаталогРабочейКопии, ПутьКХранилищу, НомерВерсии) Экспорт + + Лог.Информация("Вызвано событие <ПослеОкончанияВыгрузкиВерсииХранилищаКонфигурации> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_загрузку_версии_конфигурации_из_хранилища + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// ПутьКХранилищу - <Тип.Вид> - <описание параметра> +// НомерВерсии - <Тип.Вид> - <описание параметра> +// +Процедура ПередЗагрузкойВерсииХранилищаКонфигурации(Конфигуратор, КаталогРабочейКопии, ПутьКХранилищу, НомерВерсии) Экспорт + + Лог.Информация("Вызвано событие <ПередЗагрузкойВерсииХранилищаКонфигурации> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// ПутьКХранилищу - <Тип.Вид> - <описание параметра> +// НомерВерсии - <Тип.Вид> - <описание параметра> +// СтандартнаяОбработка - <Тип.Вид> - <описание параметра> +// +Процедура ПриЗагрузкеВерсииХранилищаВКонфигурацию(Конфигуратор, КаталогРабочейКопии, ПутьКХранилищу, НомерВерсии, СтандартнаяОбработка) Экспорт + + Лог.Информация("Вызвано событие <ПриЗагрузкеВерсииХранилищаВКонфигурацию> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// ПутьКХранилищу - <Тип.Вид> - <описание параметра> +// НомерВерсии - <Тип.Вид> - <описание параметра> +// +Процедура ПослеЗагрузкиВерсииХранилищаВКонфигурацию(Конфигуратор, КаталогРабочейКопии, ПутьКХранилищу, НомерВерсии) Экспорт + + Лог.Информация("Вызвано событие <ПослеЗагрузкиВерсииХранилищаВКонфигурацию> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_выгрузку_конфигурации_в_исходники + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// КаталогВыгрузки - <Тип.Вид> - <описание параметра> +// ПутьКХранилищу - <Тип.Вид> - <описание параметра> +// НомерВерсии - <Тип.Вид> - <описание параметра> +// +Процедура ПередВыгрузкойКонфигурациюВИсходники(Конфигуратор, КаталогРабочейКопии, КаталогВыгрузки, ПутьКХранилищу, НомерВерсии) Экспорт + + Лог.Информация("Вызвано событие <ПередВыгрузкойКонфигурациюВИсходники> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогВыгрузки - <Тип.Вид> - <описание параметра> +// СтандартнаяОбработка - <Тип.Вид> - <описание параметра> +// +Процедура ПриВыгрузкеКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки, СтандартнаяОбработка) Экспорт + + Лог.Информация("Вызвано событие <ПриВыгрузкеКонфигурациюВИсходники> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогВыгрузки - <Тип.Вид> - <описание параметра> +// +Процедура ПослеВыгрузкиКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки) Экспорт + + Лог.Информация("Вызвано событие <ПослеВыгрузкиКонфигурациюВИсходники> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_очистку_каталога_рабочей_версии + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// КаталогВыгрузки - <Тип.Вид> - <описание параметра> +// ПутьКХранилищу - <Тип.Вид> - <описание параметра> +// НомерВерсии - <Тип.Вид> - <описание параметра> +// +Процедура ПередОчисткойКаталогаРабочейКопии(Конфигуратор, КаталогРабочейКопии, КаталогВыгрузки, ПутьКХранилищу, НомерВерсии) Экспорт + + Лог.Информация("Вызвано событие <ПередОчисткойКаталогаРабочейКопии> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// СоответствиеИменФайловДляПропуска - <Тип.Вид> - <описание параметра> +// СтандартнаяОбработка - <Тип.Вид> - <описание параметра> +// +Процедура ПриОчисткеКаталогаРабочейКопии(КаталогРабочейКопии, СоответствиеИменФайловДляПропуска, СтандартнаяОбработка) Экспорт + + Лог.Информация("Вызвано событие <ПриОчисткеКаталогаРабочейКопии> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// СоответствиеИменФайловДляПропуска - <Тип.Вид> - <описание параметра> +// +Процедура ПослеОчисткиКаталогаРабочейКопии(КаталогРабочейКопии, СоответствиеИменФайловДляПропуска) Экспорт + + Лог.Информация("Вызвано событие <ПослеОчисткиКаталогаРабочейКопии> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Подписки_на_перемещение_в_каталог_рабочей_копии + +// <Описание процедуры> +// +// Параметры: +// Конфигуратор - <Тип.Вид> - <описание параметра> +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// КаталогВыгрузки - <Тип.Вид> - <описание параметра> +// ПутьКХранилищу - <Тип.Вид> - <описание параметра> +// НомерВерсии - <Тип.Вид> - <описание параметра> +// +Процедура ПередПеремещениемВКаталогРабочейКопии(Конфигуратор, КаталогРабочейКопии, КаталогВыгрузки, ПутьКХранилищу, НомерВерсии) Экспорт + + Лог.Информация("Вызвано событие <ПередПеремещениемВКаталогРабочейКопии> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// КаталогВыгрузки - <Тип.Вид> - <описание параметра> +// СтандартнаяОбработка - <Тип.Вид> - <описание параметра> +// +Процедура ПриПеремещенииВКаталогРабочейКопии(КаталогРабочейКопии, КаталогВыгрузки, СтандартнаяОбработка) Экспорт + + Лог.Информация("Вызвано событие <ПриПеремещенииВКаталогРабочейКопии> для плагина <%1>", Имя()); + +КонецПроцедуры + +// <Описание процедуры> +// +// Параметры: +// КаталогРабочейКопии - <Тип.Вид> - <описание параметра> +// КаталогВыгрузки - <Тип.Вид> - <описание параметра> +// +Процедура ПослеПеремещенияВКаталогРабочейКопии(КаталогРабочейКопии, КаталогВыгрузки) Экспорт + + Лог.Информация("Вызвано событие <ПослеПеремещенияВКаталогРабочейКопии> для плагина <%1>", Имя()); + +КонецПроцедуры + +#КонецОбласти + +#Область Интерфейс_плагина + +// <Описание функции> +// +// Возвращаемое значение: +// <Тип.Вид> - <описание возвращаемого значения> +// +Функция Версия() Экспорт + Возврат "0.0.1"; +КонецФункции + +// <Описание функции> +// +// Возвращаемое значение: +// <Тип.Вид> - <описание возвращаемого значения> +// +Функция Описание() Экспорт + Возврат "Тестовый плагин"; +КонецФункции + +// <Описание функции> +// +// Возвращаемое значение: +// <Тип.Вид> - <описание возвращаемого значения> +// +Функция Справка() Экспорт + Возврат "Справка плагина"; +КонецФункции + +// <Описание функции> +// +// Возвращаемое значение: +// <Тип.Вид> - <описание возвращаемого значения> +// +Функция Имя() Экспорт + Возврат "test_plugin"; +КонецФункции + +// <Описание функции> +// +// Возвращаемое значение: +// <Тип.Вид> - <описание возвращаемого значения> +// +Функция ИмяЛога() Экспорт + Возврат "oscript.lib.gitsync.test_plugin"; +КонецФункции + +// <Описание функции> +// +// Возвращаемое значение: +// <Тип.Вид> - <описание возвращаемого значения> +// +Функция Приоритет() Экспорт + Возврат 1; +КонецФункции + +#КонецОбласти + +Лог = Логирование.ПолучитьЛог(ИмяЛога()); + diff --git a/features/sync.batch.feature b/features/core/sync.batch.feature similarity index 98% rename from features/sync.batch.feature rename to features/core/sync.batch.feature index e4050bd9..7e4bd981 100644 --- a/features/sync.batch.feature +++ b/features/core/sync.batch.feature @@ -46,7 +46,7 @@ globals: push: true pull: true repositories: - - name: <ТестовыйРепозиторий> + - name: ТестовыйРепозиторий # disable: false path: <КаталогХранилища1С_1> dir: <ПутьКаталогаИсходников_1> @@ -57,7 +57,7 @@ repositories: git-url: git-url push: true pull: true - - name: <ТестовыйРепозиторий2> + - name: ТестовыйРепозиторий2 # disable: true path: <КаталогХранилища1С_2> dir: <ПутьКаталогаИсходников_2> diff --git a/features/sync.core.feature b/features/core/sync.core.feature similarity index 100% rename from features/sync.core.feature rename to features/core/sync.core.feature diff --git a/features/opm-build.feature b/features/opm/opm-build.feature similarity index 94% rename from features/opm-build.feature rename to features/opm/opm-build.feature index 104cebd4..f575595a 100644 --- a/features/opm-build.feature +++ b/features/opm/opm-build.feature @@ -18,7 +18,7 @@ Сценарий: Сборка независимого приложения Когда Я добавляю параметр "build" для команды "opm" - И Я добавляю параметр "-mf ./build_packagedef" для команды "opm" + И Я добавляю параметр "--mf ./build_packagedef" для команды "opm" И Я добавляю параметр "." для команды "opm" И Я выполняю команду "opm" Тогда Вывод команды "opm" содержит "Сборка пакета завершена" diff --git a/packagedef b/packagedef index 6feff20d..49aedfb1 100644 --- a/packagedef +++ b/packagedef @@ -5,13 +5,14 @@ Процедура ПередСборкой(Знач РабочийКаталог) Экспорт - ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); + ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); Лог.Информация("Установка локальных зависимостей библиотек"); КомандаOpm = Новый Команда; КомандаOpm.УстановитьКоманду("opm"); КомандаOpm.ДобавитьПараметр("install -l"); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); КодВозврата = КомандаOpm.Исполнить(); @@ -65,7 +66,7 @@ КонецПроцедуры -Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); +Лог = Логирование.ПолучитьЛог("task.build"); ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src/cmd", "Модули", "ПараметрыПриложения.os"); ПараметрыСистемы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюПараметров); @@ -84,11 +85,11 @@ .ЗависитОт("json", "1.0.1") .ЗависитОт("fs", "0.4.1") .ЗависитОт("delegate", "0.2.0") - .ЗависитОт("v8storage", "0.6.5") + .ЗависитОт("v8storage", "0.6.6") .ЗависитОт("reflector", "0.4.0") - .ЗависитОт("opm", "0.14.1") - .ЗависитОт("cli", "0.9.8") - .ЗависитОт("configor", "0.5.2") + .ЗависитОт("opm", "0.15.3") + .ЗависитОт("cli", "0.9.10") + .ЗависитОт("configor", "0.5.3") .ВключитьФайл("src") .ВключитьФайл("docs") .ВключитьФайл("embedded_plugins") diff --git a/sonar-qube.sh b/sonar-qube.sh old mode 100755 new mode 100644 diff --git a/src/cmd/gitsync.os b/src/cmd/gitsync.os index 38a7e2c9..8aec909a 100644 --- a/src/cmd/gitsync.os +++ b/src/cmd/gitsync.os @@ -16,7 +16,8 @@ Процедура ВыполнитьПриложение() Приложение = Новый КонсольноеПриложение(ПараметрыПриложения.ИмяПриложения(), - "Приложение для синхронизации Хранилища 1С с git"); + "Приложение для синхронизации Хранилища 1С с git", + ЭтотОбъект); Приложение.Версия("version", ПараметрыПриложения.Версия()); Приложение.Опция("v8version", "8.3", "маска версии платформы 1С (8.3, 8.3.5, 8.3.6.2299 и т.п.)") .ВОкружении("GITSYNC_V8VERSION"); @@ -25,7 +26,7 @@ Приложение.Опция("v verbose", Ложь, "вывод отладочной информация в процессе выполнении") .Флаговый() - .ВОкружении("GITSYNC_VERSOBE"); + .ВОкружении("GITSYNC_VERBOSE"); // Приложение.Опция("p plugins", "", "плагины к загрузке и исполнению (дополнительное ограничение)") // .ТМассивСтрок() @@ -55,15 +56,19 @@ Приложение.ДобавитьКоманду("plugins p", "Управление плагинами gitsync", Новый КомандаPlugins); - Приложение.УстановитьДействиеПередВыполнением(ЭтотОбъект); + // Приложение.УстановитьДействиеПередВыполнением(ЭтотОбъект, "ПередВыполнениемКоманды"); // TODO: Расскоментировать при исправлении ошибки в cli Приложение.Запустить(АргументыКоманднойСтроки); КонецПроцедуры // ВыполнениеКоманды() -Процедура ПередВыполнениемКоманды(Знач Команда) Экспорт +Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт + + КомандаПриложения.ВывестиСправку(); - Команда.ПередВыполнениемКоманды(Команда); +КонецПроцедуры + +Процедура ПередВыполнениемКоманды(Знач Команда) Экспорт ВерсияПлатформы = Команда.ЗначениеОпции("v8version"); ПутьКПлатформе = Команда.ЗначениеОпции("v8-path"); diff --git "a/src/cmd/\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/cmd/\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 2f880f49..05959f55 100644 --- "a/src/cmd/\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/cmd/\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" @@ -28,7 +28,7 @@ Процедура ВыполнитьКоманду(Знач Команда) Экспорт - Лог.Информация("Начало выполнение команды "); + Лог.Информация("Начало выполнение команды "); ПутьКФайлуНастроек = Команда.ЗначениеАргумента("CONFIG"); @@ -39,7 +39,7 @@ ФайлНастроек = Новый Файл(ПутьКФайлуНастроек); Если Не ФайлНастроек.Существует() Тогда - ВызватьИсключение Новый ИнформацияОбОшибке(СтрШаблон("Файл настроек <%1> не найден"), "Работа приложения остановлена"); + ВызватьИсключение Новый ИнформацияОбОшибке(СтрШаблон("Файл настроек <%1> не найден", ФайлНастроек.ПолноеИмя), "Работа приложения остановлена"); КонецЕсли; ОбщиеПараметры = ПараметрыПриложения.Параметры(); diff --git "a/src/cmd/\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\260Clone.os" "b/src/cmd/\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\260Clone.os" index b12bd3f3..3ebe9b56 100644 --- "a/src/cmd/\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\260Clone.os" +++ "b/src/cmd/\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\260Clone.os" @@ -1,4 +1,4 @@ -перем Лог; +Перем Лог; Процедура ОписаниеКоманды(Команда) Экспорт diff --git "a/src/cmd/\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\260Init.os" "b/src/cmd/\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\260Init.os" index 9ed4df97..73a6c2f1 100644 --- "a/src/cmd/\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\260Init.os" +++ "b/src/cmd/\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\260Init.os" @@ -16,7 +16,7 @@ .ВОкружении("GITSYNC_STORAGE_PATH"); Команда.Аргумент("WORKDIR", "", "Адрес локального репозитория GIT. - | Каталог исходников внутри локальной копии git-репозитария. По умолчанию текущий каталог") + | Каталог исходников внутри локальной копии git-репозитария. По умолчанию текущий каталог") .ВОкружении("GITSYNC_WORKDIR") .Обязательный(Ложь) .ПоУмолчанию(ТекущийКаталог()); diff --git "a/src/cmd/\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\260PluginHelp.os" "b/src/cmd/\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\260PluginHelp.os" index 0658b5b7..2ff2846d 100644 --- "a/src/cmd/\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\260PluginHelp.os" +++ "b/src/cmd/\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\260PluginHelp.os" @@ -8,8 +8,8 @@ Команда.Спек = "(-a | --all) | PLUGIN..."; - Команда.УстановитьДействиеПередВыполнением(ПараметрыПриложения); - Команда.УстановитьДействиеПослеВыполнения(ПараметрыПриложения); + // Команда.УстановитьДействиеПередВыполнением(ПараметрыПриложения); + // Команда.УстановитьДействиеПослеВыполнения(ПараметрыПриложения); КонецПроцедуры diff --git "a/src/cmd/\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\260PluginInstall.os" "b/src/cmd/\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\260PluginInstall.os" index 39a3ddf4..ff4b90c2 100644 --- "a/src/cmd/\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\260PluginInstall.os" +++ "b/src/cmd/\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\260PluginInstall.os" @@ -17,6 +17,15 @@ Процедура ВыполнитьКоманду(Знач Команда) Экспорт + Если ПараметрыПриложения.ЭтоСборкаEXE() Тогда + + Лог.Информация("Установка новых плагинов для собранного приложения в exe не доступна"); + + Возврат; + + КонецЕсли; + + ПакетыКУстановке = Команда.ЗначениеАргумента("NAME"); МассивФайловПлагинов = Команда.ЗначениеОпции("file"); diff --git "a/src/cmd/\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\260PluginsClear.os" "b/src/cmd/\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\260PluginsClear.os" index c8bd0496..f978a094 100644 --- "a/src/cmd/\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\260PluginsClear.os" +++ "b/src/cmd/\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\260PluginsClear.os" @@ -12,6 +12,14 @@ Процедура ВыполнитьКоманду(Знач Команда) Экспорт + Если ПараметрыПриложения.ЭтоСборкаEXE() Тогда + + Лог.Информация("Очистка плагинов для собранного приложения в exe не доступна"); + + Возврат; + + КонецЕсли; + УдалитьПредустановленныеПлагины = Команда.ЗначениеОпции("-a"); КаталогПлагинов = ПараметрыПриложения.КаталогПлагинов(); diff --git "a/src/cmd/\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\260Usage.os" "b/src/cmd/\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\260Usage.os" index 60677633..054bb432 100644 --- "a/src/cmd/\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\260Usage.os" +++ "b/src/cmd/\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\260Usage.os" @@ -2,6 +2,7 @@ Перем ИмяКомандыGitsync; Перем КаталогДокументации; +Перем Лог; Процедура ОписаниеКоманды(Команда) Экспорт @@ -14,6 +15,14 @@ Процедура ВыполнитьКоманду(Знач Команда) Экспорт + Если ПараметрыПриложения.ЭтоСборкаEXE() Тогда + + Лог.Информация("Команда для собранного приложения в exe не доступна"); + + Возврат; + + КонецЕсли; + ИмяКоманды = Команда.ЗначениеАргумента("COMMAND"); Если ПустаяСтрока(ИмяКоманды) Тогда @@ -258,6 +267,8 @@ КаталогДокументации = ОбъединитьПути(ОбъединитьПути(ТекущийСценарий().Каталог, "..","..", ".."),"docs"); + Лог = ПараметрыПриложения.Лог(); + КонецФункции Функция ПрочитатьФайл(Знач ИмяФайла) diff --git "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 7cd6e324..82d0e6eb 100644 --- "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -5,6 +5,7 @@ Перем ОбщиеПараметры; Перем ОбщийКаталогДанныхПриложения; Перем СохрКаталогПриложения; +Перем ЭтоПриложениеEXE; Процедура Инициализация() ОбщиеПараметры = Новый Структура(); @@ -17,6 +18,16 @@ КонецПроцедуры +Функция ЭтоСборкаEXE() Экспорт + + Если ЭтоПриложениеEXE = Неопределено Тогда + ЭтоПриложениеEXE = ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE"; + КонецЕсли; + + Возврат ЭтоПриложениеEXE; + +КонецФункции + Процедура УстановитьВерсиюПлатформы(Знач ВерсияПлатформы) Экспорт ОбщиеПараметры.Вставить("ВерсияПлатформы", ВерсияПлатформы); КонецПроцедуры @@ -137,7 +148,7 @@ Если РежимОтладки Тогда - ЛогПриложения.УстановитьУровень(УровниЛога.Отладка); + Лог().УстановитьУровень(УровниЛога.Отладка); ОбщиеПараметры.УправлениеПлагинами.УстановитьРежимОтладки(); КонецЕсли; @@ -160,7 +171,7 @@ КонецФункции Функция ИмяЛогаПриложения() Экспорт - Возврат "oscript.app."+ИмяПриложения(); + Возврат "oscript.app." + ИмяПриложения(); КонецФункции Функция ИмяПриложения() Экспорт @@ -171,7 +182,7 @@ Функция Версия() Экспорт - Возврат "3.0.0-beta1"; + Возврат "3.0.0-beta2"; КонецФункции diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" new file mode 100644 index 00000000..776223b2 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" @@ -0,0 +1,84 @@ +#Использовать logos + +Перем ИндексУстановленныхПлагинов; // Соответствие +Перем Лог; // Объект - Логирование +Перем ДоступныйИнтерфейсПлагинов; // Объект.ИнтерфейсОбъекта - интерфейс плагинов +Перем КаталогПлагинов; // Строка - каталог пакетов плагинов + +#Область Экспортные_методы + +// Устанавливает каталог плагинов +// +// Параметры: +// ПутьККаталогу - Строка - полный путь к каталогу плагинов +// +Процедура УстановитьКаталогПлагинов(Знач ПутьККаталогу) Экспорт + КаталогПлагинов = ПутьККаталогу; +КонецПроцедуры + +// Выполняет загрузки плагинов в индекс +// +Процедура ЗагрузитьПлагины() Экспорт + + ОбновитьИндексПлагинов(); + +КонецПроцедуры + +// Возвращает загруженный индекс плагинов +// +// Возвращаемое значение: +// Соответствие - набор плагинов +// * ключ - Строка - имя плагина +// * значение - Объект - ссылка на произвольный объект +// +Функция ИндексПлагинов() Экспорт + Возврат ИндексУстановленныхПлагинов; +КонецФункции + +#КонецОбласти + +#Область Вспомогательные_процедуры_и_функции + +Процедура ОбновитьИндексПлагинов() + + Лог.Отладка("Обновление индекса плагина из каталога <%1>", КаталогПлагинов); + ИндексУстановленныхПлагинов = Новый Соответствие; + + ИндексПлагиновEXE = Новый ИндексПлагиновEXE; + ИндексПлагинов = ИндексПлагиновEXE.ПолучитьИндексПлагиновEXE(); + + Для каждого Плагин Из ИндексПлагинов Цикл + + ДобавитьПлагинВИндекс(Плагин); + + КонецЦикла; + + Лог.Отладка("В индекс плагинов добавлено <%1> плагинов", ИндексУстановленныхПлагинов.Количество()); + +КонецПроцедуры + +Процедура ДобавитьПлагинВИндекс(Знач ИмяКлассаПлагина) + + Лог.Отладка("Добавляю плагин <%1> в индекс плагинов", ИмяКлассаПлагина); + + Попытка + НовыйПлагин = Новый ПлагинСинхронизации(Неопределено, ИмяКлассаПлагина, ДоступныйИнтерфейсПлагинов); + ИндексУстановленныхПлагинов.Вставить(НовыйПлагин.Имя(), НовыйПлагин); + + Исключение + Лог.Отладка("Ошибка добавления плагина в индекс плагинов. По причине: <%1>", ОписаниеОшибки()); + + КонецПопытки; + + +КонецПроцедуры + +Процедура ПриСозданииОбъекта(Знач ВходящийКаталогПлагинов = Неопределено) + + КаталогПлагинов = ВходящийКаталогПлагинов; + ДоступныйИнтерфейсПлагинов = Новый ИнтерфейсПлагинов().Интерфейс(); + Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.loader"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\320\264\320\265\320\272\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\320\264\320\265\320\272\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" new file mode 100644 index 00000000..4300f5d9 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\320\264\320\265\320\272\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" @@ -0,0 +1,7 @@ +Функция ПолучитьИндексПлагиновEXE() Экспорт + + ИндексПлагинов = Новый Массив; + + Возврат ИндексПлагинов; + +КонецФункции \ No newline at end of file diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" index ea0d35eb..2806e2d8 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" @@ -39,7 +39,7 @@ МенеджерПодписок = Новый МенеджерПодписок; - ДоступныйИнтерфейсПлагинов.ИзОбъектаИсключая(МенеджерПодписок, "УстановитьПодписчиков"); + ДоступныйИнтерфейсПлагинов.ИзОбъектаИсключая(МенеджерПодписок, "УстановитьПодписчиков, ВыполнитьПодпискуНаСобытие, ПрисвоитьЗначенияПараметраПроцедуры, ПриСозданииОбъекта"); Возврат ДоступныйИнтерфейсПлагинов; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\264\320\277\320\270\321\201\320\276\320\272.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\264\320\277\320\270\321\201\320\276\320\272.os" index 83ccf3de..4d593898 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\264\320\277\320\270\321\201\320\276\320\272.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\264\320\277\320\270\321\201\320\276\320\272.os" @@ -95,8 +95,6 @@ ВыполнитьПодпискуНаСобытие("ПриРегистрацииКомандыПриложения", ПараметрыВыполнения); - ПрисвоитьЗначенияПараметраПроцедуры(ПараметрыВыполнения, ИмяКоманды, КлассРеализации); - КонецПроцедуры #КонецОбласти diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\320\263\320\270\320\275\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/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\320\263\320\270\320\275\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 30abbd82..1a9eeb86 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\320\263\320\270\320\275\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/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\320\263\320\270\320\275\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" @@ -156,10 +156,15 @@ Процедура ПриСозданииОбъекта(Знач ВходящееИмяФайлаКлассаПлагина, Знач ВходящееИмяКлассаПлагина, ИнтерфейсМетодовПлагинов) - ИмяФайлКлассаПлагина = ВходящееИмяФайлаКлассаПлагина; ИмяКлассаПлагина = ВходящееИмяКлассаПлагина; - ПодключитьСценарий(ИмяФайлКлассаПлагина, ИмяКлассаПлагина); + Если НЕ ВходящееИмяФайлаКлассаПлагина = Неопределено Тогда + + ПодключитьСценарий(ВходящееИмяФайлаКлассаПлагина, ИмяКлассаПлагина); + + КонецЕсли; + + КлассПлагина = ПолучитьКлассПлагина(); ИнтерфейсПлагина = Новый ИнтерфейсОбъекта(); ИнтерфейсПлагина.Ф("Версия"); @@ -169,8 +174,6 @@ ИнтерфейсПлагина.Ф("ИмяЛога"); ИнтерфейсПлагина.Ф("Приоритет"); - КлассПлагина = ПолучитьКлассПлагина(); - Рефлектор = Новый РефлекторОбъекта(КлассПлагина); ЭтоПлагин = Рефлектор.РеализуетИнтерфейс(ИнтерфейсПлагина); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" index bbb020fd..d33c975b 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" @@ -17,6 +17,7 @@ КаталогПлагинов = НовыйКаталогПлагинов; ВнутреннийМенеджерУстановкиПакетов = Неопределено; + КонецПроцедуры // Устанавливает каталог, в который будут установлены зависимости пакетов плагинов diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\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\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\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 f0f13d74..e2dafcde 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\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\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\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" @@ -165,7 +165,7 @@ // Устанавливает версию платформы 1С // // Параметры: -// НоваяВерсияПлатформы - Строка - путь к исполняемому файлу платформы 1С.Предприятие +// НовыйПутьКПлатформе - Строка - путь к исполняемому файлу платформы 1С.Предприятие // // Возвращаемое значение: // Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> @@ -410,7 +410,8 @@ // проверим текст ошибки, если текст содержит информацию о необходимости конвертировать // тогда выполним конвертацию и повторно попытаемся загрузить файл ТекстОшибки = ВРег(ХранилищеКонфигурации.ПолучитьВыводКоманды()); - Если Найти(ТекстОшибки, Врег("Не обнаружено свободной лицензии!")) Тогда + Если Найти(ТекстОшибки, Врег("Не обнаружено свободной лицензии!")) + ИЛИ Найти(ТекстОшибки, Врег("Не найдена лицензия.")) Тогда ПериодОжидания = 10000; Лог.Ошибка(ТекстОшибки); @@ -633,7 +634,7 @@ КонецЕсли; МенеджерКонфигуратора.ПутьКПлатформе1С(ТекущийПутьКПлатформе); - Лог.Отладка("Используется путь к платформе 1С <%1>", ТекущийПутьКПлатформе); + Лог.Информация("Используется путь к платформе 1С <%1>", ТекущийПутьКПлатформе); Иначе МенеджерКонфигуратора.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы); Лог.Отладка("Используется платформа 1С версии <%1>", ТекущийПутьКПлатформе); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" index 0e04c33a..af3ef44e 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" @@ -236,15 +236,15 @@ Процедура ОписаниеПараметров(Знач Конструктор) Экспорт - ПараметрыПлагины = Конструктор.НовыеПараметры("Плагины"); + ПараметрыПлагины = Конструктор.НовыеПараметры(); ПараметрыПлагины.ПолеМассив("ВключенныеПлагины enable", Тип("Строка")) .ПолеМассив("ОтключенныеПлагины disable", Тип("Строка")) ; - ПараметрыНастроекПлагинов = Конструктор.НовыеПараметры("НастройкиПлагинов"); + ПараметрыНастроекПлагинов = Конструктор.НовыеПараметры(); ПараметрыНастроекПлагинов.ПроизвольныеПоля(); - ГлобальныеПараметры = Конструктор.НовыеПараметры("ГлобальныеПараметры"); + ГлобальныеПараметры = Конструктор.НовыеПараметры(); ГлобальныеПараметры.ПолеСтрока("ПользовательХранилища storage-user user", АвторизацияВХранилище.ПользовательХранилища) .ПолеСтрока("ПарольПользователяХранилища storage-pwd storage-password password pwd", АвторизацияВХранилище.ПарольХранилища) .ПолеСтрока("ПутьИсполняемомуФайлуГит git-path git", ПутьКИсполняемомуФайлуGit) @@ -256,10 +256,10 @@ .ПолеОбъект("НастройкиПлагинов plugins-config flags", ПараметрыНастроекПлагинов) ; - ПараметрыПлагиныРепозитория = ПараметрыПлагины.Скопировать("ПлагиныРепозитория"); + ПараметрыПлагиныРепозитория = ПараметрыПлагины.Скопировать(); ПараметрыПлагиныРепозитория.ПолеМассив("ДополнительныеПлагины extra additional more", Тип("Строка")); - ПараметрыРепозитория = Конструктор.НовыеПараметры("Репозиторий"); + ПараметрыРепозитория = Конструктор.НовыеПараметры(); ПараметрыРепозитория.ПолеБулево("Отключено disable", Ложь) .ПолеСтрока("Наименование storage-name name") .ПолеСтрока("ПутьКХранилищу storage-path path") @@ -303,6 +303,7 @@ Процедура ПодготовитьИндексРепозиториев() + Лог.Отладка("Готовлю индекс для <%1> репозиториев", Параметры.Репозитории.Количество()); Для каждого ПараметрыРепозитория Из Параметры.Репозитории Цикл РепоСинхронизации = ИндексРепозиториев[ПараметрыРепозитория.Наименование]; diff --git a/tasks/get-plugins.os b/tasks/get-plugins.os index 4d5c5f86..e75a354d 100644 --- a/tasks/get-plugins.os +++ b/tasks/get-plugins.os @@ -1,5 +1,6 @@ #Использовать gitrunner #Использовать tempfiles +#Использовать fs Перем Лог; @@ -25,6 +26,7 @@ КомандаOpm.УстановитьКоманду("opm"); КомандаOpm.ДобавитьПараметр("build"); КомандаOpm.ДобавитьПараметр(Каталог); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); @@ -35,13 +37,15 @@ МассивФайлов = НайтиФайлы(Каталог, "*.ospx"); Если МассивФайлов.Количество() = 0 Тогда - ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета плагинов", "Не найден собранный файл плагина"); + ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета плагинов", "Не найден собранный файл плагина");; КонецЕсли; ФайлПлагина = МассивФайлов[0].ПолноеИмя; КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "embedded_plugins"); + ФС.ОбеспечитьКаталог(КаталогПроекта); + ФайлПриемник = ОбъединитьПути(КаталогПроекта, МассивФайлов[0].Имя); КопироватьФайл(ФайлПлагина, ФайлПриемник); diff --git a/tasks/get-v8storage.os b/tasks/get-v8storage.os new file mode 100644 index 00000000..7f17775c --- /dev/null +++ b/tasks/get-v8storage.os @@ -0,0 +1,92 @@ +#Использовать gitrunner +#Использовать tempfiles +#Использовать fs + +Перем Лог; + +Процедура ПолучитьИсходники(Знач URLРепозитория, Знач Ветка, Знач Каталог) + + ГитРепозиторий = Новый ГитРепозиторий; + + ГитРепозиторий.УстановитьРабочийКаталог(Каталог); + + ГитРепозиторий.КлонироватьРепозиторий(URLРепозитория, Каталог); + ГитРепозиторий.ПерейтиВВетку(Ветка); + +КонецПроцедуры + +Процедура УстановитьПакет(Знач Каталог, ПутьКМанифестуСборки) + + // Лог.Информация("Каталог сборки <%1>", Каталог); + + // Лог.Информация("Сборка пакета библиотеки"); + // КомандаOpm = Новый Команда; + // КомандаOpm.УстановитьРабочийКаталог(Каталог); + // КомандаOpm.УстановитьКоманду("opm"); + // КомандаOpm.ДобавитьПараметр("build"); + // КомандаOpm.ДобавитьПараметр(Каталог); + // КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + + // КодВозврата = КомандаOpm.Исполнить(); + + // Если КодВозврата <> 0 Тогда + // ВызватьИсключение КомандаOpm.ПолучитьВывод(); + // КонецЕсли; + + // МассивФайлов = НайтиФайлы(Каталог, "*.ospx"); + + // Если МассивФайлов.Количество() = 0 Тогда + // ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета opm", "Не найден собранный файл пакета opm"); + // КонецЕсли; + + // ФайлПлагина = МассивФайлов[0].ПолноеИмя; + + КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); + + // ФС.ОбеспечитьКаталог(КаталогПроекта); + + // Лог.Информация("Установка в каталог проекта <%1>", КаталогПроекта); + + ФайлПлагина = ОбъединитьПути(КаталогПроекта, "templates/v8storage-0.6.6.ospx"); + + Лог.Информация("Установка пакета из файла <%1>", ФайлПлагина); + + КомандаOpm = Новый Команда; + // КомандаOpm.УстановитьРабочийКаталог(КаталогПроекта); + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("install"); + КомандаOpm.ДобавитьПараметр("-l"); + КомандаOpm.ДобавитьПараметр("-f"); + КомандаOpm.ДобавитьПараметр(ФайлПлагина); + // КомандаOpm.ДобавитьПараметр("-dest"); + // КомандаOpm.ДобавитьПараметр(КаталогПроекта); + // КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение СтрШаблон("Ошибка установки opm из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); + КонецЕсли; + +КонецПроцедуры + +Процедура ПолезнаяРабота() + + URLРепозитория = "https://github.com/khorevaa/v8storage.git"; + КаталогСборки = ВременныеФайлы.СоздатьКаталог(); + Ветка = "feature/pack-epf"; + + ПутьКМанифестуСборки = ОбъединитьПути(ТекущийСценарий().Каталог, "opm_packagedef_global"); + + // ПолучитьИсходники(URLРепозитория, Ветка, КаталогСборки); + УстановитьПакет(КаталогСборки, ПутьКМанифестуСборки); + + ВременныеФайлы.УдалитьФайл(КаталогСборки); + +КонецПроцедуры + +Лог = Логирование.ПолучитьЛог("task.install-opm"); + +ПолезнаяРабота(); + + diff --git a/tasks/make.os b/tasks/make.os index 95976988..c4c6232d 100644 --- a/tasks/make.os +++ b/tasks/make.os @@ -5,16 +5,16 @@ Перем КаталогПроекта; Процедура СобратьПакет(Знач ВыходнойКаталог, Знач ПутьКМанифестуСборки) - + КомандаOpm = Новый Команда; // КомандаOpm.УстановитьРабочийКаталог(Каталог); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("build"); - КомандаOpm.ДобавитьПараметр(КаталогПроекта); - КомандаOpm.ДобавитьПараметр("-mf"); - КомандаOpm.ДобавитьПараметр(ПутьКМанифестуСборки); - КомандаOpm.ДобавитьПараметр("-out"); + КомандаOpm.ДобавитьПараметр("build"); + КомандаOpm.ДобавитьПараметр("-m"); + КомандаOpm.ДобавитьПараметр(ПутьКМанифестуСборки); + КомандаOpm.ДобавитьПараметр("-o"); КомандаOpm.ДобавитьПараметр(ВыходнойКаталог); + КомандаOpm.ДобавитьПараметр(КаталогПроекта); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); @@ -26,8 +26,8 @@ КонецПроцедуры Процедура УстановитьПакет(Знач КаталогУстановки, КаталогПакета) - - Лог.Информация("Каталог поиска пакет <%1>", КаталогПакета); + + Лог.Информация("Каталог поиска пакета <%1>", КаталогПакета); МассивФайлов = НайтиФайлы(КаталогПакета, "*.ospx"); @@ -41,11 +41,11 @@ КомандаOpm = Новый Команда; КомандаOpm.УстановитьРабочийКаталог(КаталогПакета); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install"); - КомандаOpm.ДобавитьПараметр("-f"); + КомандаOpm.ДобавитьПараметр("install"); + КомандаOpm.ДобавитьПараметр("-f"); КомандаOpm.ДобавитьПараметр(ФайлПлагина); - КомандаOpm.ДобавитьПараметр("-dest"); - КомандаOpm.ДобавитьПараметр(КаталогУстановки); + КомандаOpm.ДобавитьПараметр("--dest"); + КомандаOpm.ДобавитьПараметр(КаталогУстановки); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); @@ -57,7 +57,7 @@ КонецПроцедуры Процедура ВыполнитьСборкуEXE(КаталогУстановки) - + Лог.Информация("Выполнение создания exe в <%1>", КаталогУстановки); ФайлПриложения = ОбъединитьПути(КаталогУстановки, "gitsync", "src/cmd", "gitsync.os"); @@ -66,9 +66,181 @@ КомандаOpm = Новый Команда; КомандаOpm.УстановитьРабочийКаталог(КаталогУстановки); КомандаOpm.УстановитьКоманду("oscript"); - КомандаOpm.ДобавитьПараметр("-make"); + КомандаOpm.ДобавитьПараметр("-make"); КомандаOpm.ДобавитьПараметр(ФайлПриложения); - КомандаOpm.ДобавитьПараметр(ВыходнойФайл); + КомандаOpm.ДобавитьПараметр(ВыходнойФайл); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение КомандаOpm.ПолучитьВывод(); + КонецЕсли; + +КонецПроцедуры + +Процедура ПодготовитьПлагины(Знач КаталогУстановки) + + ИнициализироватьВстроенныеПлагины(КаталогУстановки); + + ПутьКФайлуПараметрыПриложения = ОбъединитьПути(КаталогУстановки, "gitsync", "src/cmd/Модули", "ПараметрыПриложения.os"); + + ПодключитьСценарий(ПутьКФайлуПараметрыПриложения, "ПараметрыПриложения"); + + ПараметрыПриложения = Новый ПараметрыПриложения; + + КаталогПлагинов = ПараметрыПриложения.КаталогПлагинов(); + КаталогВнутреннихКлассов = ОбъединитьПути(КаталогУстановки, "gitsync", "src/core/Классы/internal/Классы"); + + СкопироватьЗагрузчикПлагинов(КаталогВнутреннихКлассов); + СкопироватьСтандартныйЗагрузчик(КаталогПлагинов); + + ПодготовитьФайлИндексПлагиновEXE(КаталогВнутреннихКлассов, КаталогПлагинов); + +КонецПроцедуры + +Процедура ПодготовитьФайлИндексПлагиновEXE(Знач КаталогВнутреннихКлассов, Знач КаталогПлагинов) + + МассивПлагинов = ПолучитьМассивПлагинов(КаталогПлагинов); + + ФайлИндексПлагиновEXE = ОбъединитьПути(КаталогВнутреннихКлассов, "ИндексПлагиновEXE.os"); + + ЗаписьТекста = Новый ЗаписьТекста(ФайлИндексПлагиновEXE); + + КаталогиПлагинов = НайтиФайлы(КаталогПлагинов, ПолучитьМаскуВсеФайлы(), Ложь); + + Для каждого Каталоги Из КаталогиПлагинов Цикл + + Если Не Каталоги.ЭтоКаталог() Тогда + Продолжить; + КонецЕсли; + + ЗаписьТекста.ЗаписатьСтроку(СтрШаблон("#Использовать ""%1""", Каталоги.ПолноеИмя)); + + КонецЦикла; + + ЗаписьТекста.ЗаписатьСтроку("Функция ПолучитьИндексПлагиновEXE() Экспорт"); + ЗаписьТекста.ЗаписатьСтроку(" ИндексПлагинов = Новый Массив;"); + + Для каждого ИмяПлагина Из МассивПлагинов Цикл + ЗаписьТекста.ЗаписатьСтроку(СтрШаблон(" ИндексПлагинов.Добавить(""%1"");", ИмяПлагина)); + КонецЦикла; + + ЗаписьТекста.ЗаписатьСтроку(" Возврат ИндексПлагинов;"); + ЗаписьТекста.ЗаписатьСтроку("КонецФункции"); + + ЗаписьТекста.Закрыть(); + +КонецПроцедуры + +Функция ПолучитьМассивПлагинов(Знач КаталогПлагинов) + + Лог.Отладка("Обновление индекса плагина из каталога <%1>", КаталогПлагинов); + МассивПлагинов = Новый Массив; + + КаталогиПлагинов = НайтиФайлы(КаталогПлагинов, ПолучитьМаскуВсеФайлы(), Ложь); + + Для каждого Каталоги Из КаталогиПлагинов Цикл + + Если Не Каталоги.ЭтоКаталог() Тогда + Продолжить; + КонецЕсли; + + ПрочитатьПлагин(Каталоги.ПолноеИмя, МассивПлагинов); + + КонецЦикла; + + Лог.Отладка("В индекс плагинов добавлено <%1> плагинов", МассивПлагинов.Количество()); + + Возврат МассивПлагинов; + +КонецФункции + +Процедура ПрочитатьПлагин(Знач Путь, МассивПлагинов) + + Лог.Отладка("Загружаю плагины из каталога <%1>", Путь); + + ФайлМанифеста = Новый Файл(ОбъединитьПути(Путь, "lib.config")); + + Если ФайлМанифеста.Существует() Тогда + Лог.Отладка("Обрабатываем по манифесту"); + ДобавитьКлассыПлагинов(ФайлМанифеста.ПолноеИмя, Путь, МассивПлагинов); + Иначе + Лог.Отладка("Плагины из каталога <%1> не могут быть загружены - не найден файл ", Путь); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьКлассыПлагинов(Знач Файл, Знач Путь, МассивПлагинов) + + Чтение = Новый ЧтениеXML; + Чтение.ОткрытьФайл(Файл); + Чтение.ПерейтиКСодержимому(); + + Если Чтение.ЛокальноеИмя <> "package-def" Тогда + Чтение.Закрыть(); + Возврат; + КонецЕсли; + + Пока Чтение.Прочитать() Цикл + + Если Чтение.ТипУзла = ТипУзлаXML.Комментарий Тогда + + Продолжить; + + КонецЕсли; + + Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда + + Если Чтение.ЛокальноеИмя = "class" Тогда + ФайлКласса = Новый Файл(ОбъединитьПути(Путь, Чтение.ЗначениеАтрибута("file"))); + Если ФайлКласса.Существует() + И ФайлКласса.ЭтоФайл() Тогда + Идентификатор = Чтение.ЗначениеАтрибута("name"); + Если Не ПустаяСтрока(Идентификатор) Тогда + МассивПлагинов.Добавить(Идентификатор); + КонецЕсли; + Иначе + ВызватьИсключение "Не найден файл " + ФайлКласса.ПолноеИмя + ", указанный в манифесте"; + КонецЕсли; + + Чтение.Прочитать(); // в конец элемента + + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + Чтение.Закрыть(); + +КонецПроцедуры + +Процедура СкопироватьСтандартныйЗагрузчик(ЗНач КаталогПлагинов) + + СтандартныйЗагрузчикБиблиотеки = ОбъединитьПути(КаталогПроекта, "templates", "package-loader.os"); + ПриемникЗагрузчика = ОбъединитьПути(КаталогПлагинов, "package-loader.os"); + КопироватьФайл(СтандартныйЗагрузчикБиблиотеки, ПриемникЗагрузчика); + +КонецПроцедуры + +Процедура СкопироватьЗагрузчикПлагинов(Знач КаталогВнутреннихКлассов) + + ЗагрузчикПлагиновEXE = ОбъединитьПути(КаталогВнутреннихКлассов, "ЗагрузчикПлагиновEXE.os"); + ПриемникЗагрузчикПлагинов = ОбъединитьПути(КаталогВнутреннихКлассов, "ЗагрузчикПлагинов.os"); + КопироватьФайл(ЗагрузчикПлагиновEXE, ПриемникЗагрузчикПлагинов); + +КонецПроцедуры + +Процедура ИнициализироватьВстроенныеПлагины(Знач КаталогУстановки) + + ФайлПриложения = ОбъединитьПути(КаталогУстановки, "gitsync", "src/cmd", "gitsync.os"); + + КомандаOpm = Новый Команда; + КомандаOpm.УстановитьРабочийКаталог(КаталогУстановки); + КомандаOpm.УстановитьКоманду("oscript"); + КомандаOpm.ДобавитьПараметр(ФайлПриложения); + КомандаOpm.ДобавитьПараметр("p init"); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); @@ -83,17 +255,23 @@ КаталогСборки = ВременныеФайлы.СоздатьКаталог(); КаталогУстановки = ВременныеФайлы.СоздатьКаталог(); - + + ПутьКМанифестуСборки = ОбъединитьПути(КаталогПроекта, "build_packagedef"); СобратьПакет(КаталогСборки, ПутьКМанифестуСборки); - + + Лог.Информация("Устанавливаю в каталог <%1>", КаталогУстановки); + УстановитьПакет(КаталогУстановки, КаталогСборки); + ПодготовитьПлагины(КаталогУстановки); + ВыполнитьСборкуEXE(КаталогУстановки); ВременныеФайлы.УдалитьФайл(КаталогСборки); ВременныеФайлы.УдалитьФайл(КаталогУстановки); + КонецПроцедуры КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); diff --git a/tasks/test.os b/tasks/test.os index bc6b4a4a..46098aeb 100644 --- a/tasks/test.os +++ b/tasks/test.os @@ -1,6 +1,6 @@ -#Использовать "../src/core" #Использовать 1bdd #Использовать 1testrunner +#Использовать 1commands Функция ПрогнатьТесты() @@ -25,11 +25,141 @@ Возврат Успешно; КонецФункции // ПрогнатьТесты() -Функция ПрогнатьФичи() +Функция ПрогнатьФичи_core() + + ПутьОтчетаJUnit = "./bdd-log.xml"; + + КаталогФич = ОбъединитьПути(".", "features", "core"); + + Файл_КаталогФич = Новый Файл(КаталогФич); + Если Не Файл_КаталогФич.Существует() Тогда + Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич)); + Возврат Истина; + КонецЕсли; + + ИсполнительБДД = Новый ИсполнительБДД; + РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич); + ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); + + СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся; + Если РезультатыВыполнения.Строки.Количество() > 0 Тогда + + СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); + + КонецЕсли; + + ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit; + ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit); + + Сообщить(СтрШаблон("Результат прогона фич <%1> + |", ИтоговыйРезультатВыполнения)); + + Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался; +КонецФункции // ПрогнатьФичи() + +Функция ПрогнатьФичи_cmd() + + КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); + + ПутьКПриложению = ОбъединитьПути(КаталогПроекта, "src", "cmd", "gitsync.os"); + + ФайлПутьКПриложению = Новый Файл(ПутьКПриложению); + + УстановитьПеременнуюСреды("GITSYNC_TESTING_PATH", ФайлПутьКПриложению.ПолноеИмя); + + ПутьОтчетаJUnit = ОбъединитьПути(КаталогПроекта, "bdd-log-cmd.xml"); + + КаталогФич = ОбъединитьПути(КаталогПроекта, "features", "cmd"); + + Файл_КаталогФич = Новый Файл(КаталогФич); + Если Не Файл_КаталогФич.Существует() Тогда + Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич)); + Возврат Истина; + КонецЕсли; + + ИсполнительБДД = Новый ИсполнительБДД; + РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич); + ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); + + СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся; + Если РезультатыВыполнения.Строки.Количество() > 0 Тогда + + СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); + + КонецЕсли; + + ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit; + ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit); + + Сообщить(СтрШаблон("Результат прогона фич <%1> + |", ИтоговыйРезультатВыполнения)); + + Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался; +КонецФункции // ПрогнатьФичи() + +Функция ПрогнатьФичи_exe() + + СобратьEXE(); + + КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); + + ПутьКПриложению = ОбъединитьПути(КаталогПроекта, "bin", "gitsync.exe"); + + ФайлПутьКПриложению = Новый Файл(ПутьКПриложению); + + УстановитьПеременнуюСреды("GITSYNC_TESTING_PATH", ФайлПутьКПриложению.ПолноеИмя); + + ПутьОтчетаJUnit = ОбъединитьПути(КаталогПроекта, "bdd-log-exe.xml"); + + КаталогФич = ОбъединитьПути(КаталогПроекта, "features", "cmd"); + + Файл_КаталогФич = Новый Файл(КаталогФич); + Если Не Файл_КаталогФич.Существует() Тогда + Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич)); + Возврат Истина; + КонецЕсли; + + ИсполнительБДД = Новый ИсполнительБДД; + РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич); + ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); + + СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся; + Если РезультатыВыполнения.Строки.Количество() > 0 Тогда + + СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения); + + КонецЕсли; + + ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit; + ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit); + + Сообщить(СтрШаблон("Результат прогона фич <%1> + |", ИтоговыйРезультатВыполнения)); + + Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался; +КонецФункции // ПрогнатьФичи() + +Процедура СобратьEXE() + + КомандаOpm = Новый Команда; + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("run make"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение КомандаOpm.ПолучитьВывод(); + КонецЕсли; + + Сообщить("Сборка exe завершена"); + +КонецПроцедуры + +Функция ПрогнатьФичи_opm() ПутьОтчетаJUnit = "./bdd-log.xml"; - КаталогФич = ОбъединитьПути(".", "features"); + КаталогФич = ОбъединитьПути(".", "features", "opm"); Файл_КаталогФич = Новый Файл(КаталогФич); Если Не Файл_КаталогФич.Существует() Тогда @@ -57,6 +187,23 @@ Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался; КонецФункции // ПрогнатьФичи() +Функция ПрогнатьФичи() + ФичиПрошли_opm = ПрогнатьФичи_opm(); + ФичиПрошли_core = ПрогнатьФичи_core(); + ФичиПрошли_cmd = ПрогнатьФичи_cmd(); + + //ФичиПрошли_exe = ПрогнатьФичи_exe(); + ФичиПрошли_exe = Истина; + + Возврат + ФичиПрошли_opm + И ФичиПрошли_core + И ФичиПрошли_cmd + И ФичиПрошли_exe + ; + +КонецФункции + ТестыПрошли = Истина; // Попытка diff --git a/templates/package-loader.os b/templates/package-loader.os index 3e39b020..59d4845d 100644 --- a/templates/package-loader.os +++ b/templates/package-loader.os @@ -1,12 +1,22 @@ +// Пояснения по переменным даны в конце модуля +Перем ПоказатьСообщенияЗагрузки; +Перем ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей; + +Перем КэшМодулей; Процедура ПриЗагрузкеБиблиотеки(Путь, СтандартнаяОбработка, Отказ) - + Вывести(" + |ПриЗагрузкеБиблиотеки " + Путь); + ФайлМанифеста = Новый Файл(ОбъединитьПути(Путь, "lib.config")); Если ФайлМанифеста.Существует() Тогда + Вывести("Обрабатываем по манифесту"); + СтандартнаяОбработка = Ложь; ОбработатьМанифест(ФайлМанифеста.ПолноеИмя, Путь, Отказ); Иначе + Вывести("Обрабатываем структуру каталогов по соглашению"); ОбработатьСтруктуруКаталоговПоСоглашению(Путь, СтандартнаяОбработка, Отказ); КонецЕсли; @@ -39,12 +49,15 @@ Если ФайлКласса.Существует() и ФайлКласса.ЭтоФайл() Тогда Идентификатор = Чтение.ЗначениеАтрибута("name"); Если Не ПустаяСтрока(Идентификатор) Тогда - ДобавитьКласс(ФайлКласса.ПолноеИмя, Идентификатор); + Вывести(СтрШаблон(" класс %1, файл %2", Идентификатор, ФайлКласса.ПолноеИмя)); + + // ДобавитьКласс(ФайлКласса.ПолноеИмя, Идентификатор); + ДобавитьКлассЕслиРанееНеДобавляли(ФайлКласса.ПолноеИмя, Идентификатор); КонецЕсли; Иначе ВызватьИсключение "Не найден файл " + ФайлКласса.ПолноеИмя + ", указанный в манифесте"; КонецЕсли; - + Чтение.Прочитать(); // в конец элемента КонецЕсли; @@ -53,15 +66,24 @@ Если ФайлКласса.Существует() и ФайлКласса.ЭтоФайл() Тогда Идентификатор = Чтение.ЗначениеАтрибута("name"); Если Не ПустаяСтрока(Идентификатор) Тогда - ДобавитьМодуль(ФайлКласса.ПолноеИмя, Идентификатор); + Вывести(СтрШаблон(" модуль %1, файл %2", Идентификатор, ФайлКласса.ПолноеИмя)); + Попытка + ДобавитьМодульЕслиРанееНеДобавляли(ФайлКласса.ПолноеИмя, Идентификатор); + Исключение + Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда + ВызватьИсключение; + КонецЕсли; + Вывести("Предупреждение: + | " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; КонецЕсли; Иначе ВызватьИсключение "Не найден файл " + ФайлКласса.ПолноеИмя + ", указанный в манифесте"; КонецЕсли; - + Чтение.Прочитать(); // в конец элемента КонецЕсли; - + КонецЕсли; КонецЦикла; @@ -72,23 +94,154 @@ Процедура ОбработатьСтруктуруКаталоговПоСоглашению(Путь, СтандартнаяОбработка, Отказ) - КаталогКлассов = Новый Файл(ОбъединитьПути(Путь, "Классы")); - КаталогМодулей = Новый Файл(ОбъединитьПути(Путь, "Модули")); + КаталогиКлассов = Новый Массив; + КаталогиКлассов.Добавить(ОбъединитьПути(Путь, "Классы")); + КаталогиКлассов.Добавить(ОбъединитьПути(Путь, "Classes")); + КаталогиКлассов.Добавить(ОбъединитьПути(Путь, "src", "Классы")); + КаталогиКлассов.Добавить(ОбъединитьПути(Путь, "src", "Classes")); + + КаталогиМодулей = Новый Массив; + КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "Модули")); + КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "Modules")); + КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Модули")); + КаталогиМодулей.Добавить(ОбъединитьПути(Путь, "src", "Modules")); + + + Для Каждого мКаталог Из КаталогиКлассов Цикл + + ОбработатьКаталогКлассов(мКаталог, СтандартнаяОбработка, Отказ); + + КонецЦикла; + + Для Каждого мКаталог Из КаталогиМодулей Цикл + + ОбработатьКаталогМодулей(мКаталог, СтандартнаяОбработка, Отказ); + + КонецЦикла; + +КонецПроцедуры + +Процедура ОбработатьКаталогКлассов(Знач Путь, СтандартнаяОбработка, Отказ) + + КаталогКлассов = Новый Файл(Путь); Если КаталогКлассов.Существует() Тогда Файлы = НайтиФайлы(КаталогКлассов.ПолноеИмя, "*.os"); Для Каждого Файл Из Файлы Цикл + Вывести(СтрШаблон(" класс (по соглашению) %1, файл %2", Файл.ИмяБезРасширения, Файл.ПолноеИмя)); СтандартнаяОбработка = Ложь; - ДобавитьКласс(Файл.ПолноеИмя, Файл.ИмяБезРасширения); + // ДобавитьКласс(Файл.ПолноеИмя, Файл.ИмяБезРасширения); + ДобавитьКлассЕслиРанееНеДобавляли(Файл.ПолноеИмя, Файл.ИмяБезРасширения); КонецЦикла; КонецЕсли; +КонецПроцедуры + +Процедура ОбработатьКаталогМодулей(Знач Путь, СтандартнаяОбработка, Отказ) + + КаталогМодулей = Новый Файл(Путь); + Если КаталогМодулей.Существует() Тогда Файлы = НайтиФайлы(КаталогМодулей.ПолноеИмя, "*.os"); Для Каждого Файл Из Файлы Цикл + Вывести(СтрШаблон(" модуль (по соглашению) %1, файл %2", Файл.ИмяБезРасширения, Файл.ПолноеИмя)); СтандартнаяОбработка = Ложь; - ДобавитьМодуль(Файл.ПолноеИмя, Файл.ИмяБезРасширения); + Попытка + ДобавитьМодульЕслиРанееНеДобавляли(Файл.ПолноеИмя, Файл.ИмяБезРасширения); + Исключение + Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда + ВызватьИсключение; + КонецЕсли; + СтандартнаяОбработка = Истина; + Вывести("Предупреждение: + |" + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; КонецЦикла; КонецЕсли; КонецПроцедуры + +Процедура ДобавитьКлассЕслиРанееНеДобавляли(ПутьФайла, ИмяКласса) + Вывести("Добавляю класс, если ранее не добавляли " + ИмяКласса); + Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда + Вывести("Добавляю класс " + ИмяКласса); + ДобавитьКласс(ПутьФайла, ИмяКласса); + Возврат; + КонецЕсли; + + КлассУжеЕсть = Ложь; + Попытка + Объект = Новый(ИмяКласса); + КлассУжеЕсть = Истина; + Исключение + СообщениеОшибки = ОписаниеОшибки(); + ИскомаяОшибка = СтрШаблон("Конструктор не найден (%1)", ИмяКласса); + КлассУжеЕсть = СтрНайти(СообщениеОшибки, ИскомаяОшибка) = 0; + КонецПопытки; + Если Не КлассУжеЕсть Тогда + + Вывести("Добавляю класс, т.к. он не найден - " + ИмяКласса); + ДобавитьКласс(ПутьФайла, ИмяКласса); + + Иначе + Вывести("Пропускаю загрузку класса " + ИмяКласса); + + КонецЕсли; +КонецПроцедуры + +Процедура ДобавитьМодульЕслиРанееНеДобавляли(ПутьФайла, ИмяМодуля) + Вывести("Добавляю модуль, если ранее не добавляли " + ИмяМодуля); + + МодульУжеЕсть = КэшМодулей.Найти(ИмяМодуля) <> Неопределено; + Если Не МодульУжеЕсть Тогда + + Вывести("Добавляю модуль, т.к. он не найден - " + ИмяМодуля); + ДобавитьМодуль(ПутьФайла, ИмяМодуля); + КэшМодулей.Добавить(ИмяМодуля); + Иначе + Вывести("Пропускаю загрузку модуля " + ИмяМодуля); + + КонецЕсли; +КонецПроцедуры + +Процедура Вывести(Знач Сообщение) + Если ПоказатьСообщенияЗагрузки Тогда + Сообщить(Сообщение); + КонецЕсли; +КонецПроцедуры + +Функция ПолучитьБулевоИзПеременнойСреды(Знач ИмяПеременнойСреды, Знач ЗначениеПоУмолчанию) + Рез = ЗначениеПоУмолчанию; + РезИзСреды = ПолучитьПеременнуюСреды(ИмяПеременнойСреды); + Если ЗначениеЗаполнено(РезИзСреды) Тогда + РезИзСреды = СокрЛП(РезИзСреды); + Попытка + Рез = Число(РезИзСреды) <> 0 ; + Исключение + Рез = ЗначениеПоУмолчанию; + Сообщить(СтрШаблон("Неверный формат переменной среды %1. Ожидали 1 или 0, а получили %2", ИмяПеременнойСреды, РезИзСреды)); + КонецПопытки; + КонецЕсли; + + Возврат Рез; +КонецФункции + +// Если Истина, то выдаются подробные сообщения о порядке загрузке пакетов, классов, модулей, что помогает при анализе проблем +// очень полезно при анализе ошибок загрузки +// Переменная среды может принимать значение 0 (выключено) или 1 (включено) +// Значение флага по умолчанию - Ложь +ПоказатьСообщенияЗагрузки = ПолучитьБулевоИзПеременнойСреды( + "OSLIB_LOADER_TRACE", Ложь); + +// Если Ложь, то пропускаются ошибки повторной загрузки классов/модулей, +//что важно при разработке/тестировании стандартных библиотек +// Если Истина, то выдается ошибка при повторной загрузке классов библиотек из движка +// Переменная среды может принимать значение 0 (выключено) или 1 (включено) +// Значение флага по умолчанию - Истина +ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей = ПолучитьБулевоИзПеременнойСреды( + "OSLIB_LOADER_DUPLICATES", Ложь); + +// для установки других значений переменных среды и запуска скриптов можно юзать следующую командную строку +// (set OSLIB_LOADER_TRACE=1) && (oscript .\tasks\test.os) + +КэшМодулей = Новый Массив; diff --git a/tests/fixtures/config.yaml b/tests/fixtures/config.yaml index 4e40d8d6..59dcc552 100644 --- a/tests/fixtures/config.yaml +++ b/tests/fixtures/config.yaml @@ -1,54 +1,41 @@ -{ - "globals": { - "storage-user": "Администратор", - "storage-pwd": "", - "git-path": "git", - "temp-dir": "", - "v8version": 8.3, - "domain-email": "localhost", - "lic-try-count": 5, - "plugins": { - "enable": [ - "test", - "test2" - ], - "disable": [ - "test3" - ] - }, - "plugins-config": { - "git-url": "git-url", - "push": true, - "pull": true - } - }, - "repositories": [ - { - "name": "<ТестовыйРепозиторий>", - "path": "<КаталогХранилища1С_1>", - "dir": "<ПутьКаталогаИсходников_1>", - "plugins": { - "more": [ - "test3" - ] - }, - "plugins-config": { - "git-url": "git-url", - "push": true, - "pull": true - } - }, - { - "name": "<ТестовыйРепозиторий2>", - "path": "<КаталогХранилища1С_2>", - "dir": "<ПутьКаталогаИсходников_2>", - "storage-user": "Администратор", - "storage-pwd": "", - "git-path": "git", - "temp-dir": "", - "v8version": 8.3, - "domain-email": "localhost", - "lic-try-count": 5 - } - ] -} \ No newline at end of file +globals: + storage-user: Администратор + storage-pwd: '' + git-path: git + temp-dir: '' + v8version: 8.3 + domain-email: localhost + lic-try-count: 5 + plugins: + enable: + - test + - test2 + disable: + - test3 + plugins-config: + git-url: git-url + push: true + pull: true +repositories: + - + name: '<ТестовыйРепозиторий>' + path: '<КаталогХранилища1С_1>' + dir: '<ПутьКаталогаИсходников_1>' + plugins: + more: + - test3 + plugins-config: + git-url: git-url + push: true + pull: true + - + name: '<ТестовыйРепозиторий2>' + path: '<КаталогХранилища1С_2>' + dir: '<ПутьКаталогаИсходников_2>' + storage-user: Администратор + storage-pwd: '' + git-path: git + temp-dir: '' + v8version: 8.3 + domain-email: localhost + lic-try-count: 5