diff --git a/src/Модули/РегулярныеВыражения.os b/src/Модули/РегулярныеВыражения.os new file mode 100644 index 0000000..59be2a3 --- /dev/null +++ b/src/Модули/РегулярныеВыражения.os @@ -0,0 +1,25 @@ +Функция ПолучитьДочерниеЭлементыОписанияКонфигурации(Знач СодержимоеФайла) Экспорт + + Элементы = Новый Структура("Количество,ДочерниеЭлементыСтрока,Совпадения", 0, "", Неопределено); + + Регексп = Новый РегулярноеВыражение("(\s+?)([\w\W]+?)(\s+<\/ChildObjects>)"); + Регексп.ИгнорироватьРегистр = Истина; + Регексп.Многострочный = Истина; + + ДочерниеЭлементы = Регексп.НайтиСовпадения(СодержимоеФайла); + Элементы.Количество = ДочерниеЭлементы.Количество(); + Элементы.Совпадения = ДочерниеЭлементы; + + Если НЕ Элементы.Количество = 0 Тогда // Если количество 0 вернется пустая коллекция + + Элементы.ДочерниеЭлементыСтрока = ДочерниеЭлементы[0].Группы[2].Значение; + РегекспМетаданные = Новый РегулярноеВыражение("^\s+<([\w]+)>([а-яa-zA-ZА-Я0-9_]+)<\/[\w]+>"); + РегекспМетаданные.ИгнорироватьРегистр = Истина; + РегекспМетаданные.Многострочный = Истина; + Элементы.Совпадения = РегекспМетаданные.НайтиСовпадения(Элементы.ДочерниеЭлементыСтрока); + + КонецЕсли; + + Возврат Элементы; + +КонецФункции \ No newline at end of file diff --git a/src/Модули/ФайловыеОперации.os b/src/Модули/ФайловыеОперации.os index b32432f..bf4279d 100644 --- a/src/Модули/ФайловыеОперации.os +++ b/src/Модули/ФайловыеОперации.os @@ -163,6 +163,33 @@ КонецФункции + +Функция НайтиКаталоги(Путь) Экспорт + + МассивКаталогов = Новый Массив; + + ФайлКаталога = Новый Файл(Путь); + + Если ФайлКаталога.Существует() И ФайлКаталога.ЭтоКаталог() Тогда + + МассивФайлов = НайтиФайлы(ФайлКаталога.ПолноеИмя, "*"); + + Для Каждого Файл Из МассивФайлов Цикл + + Если Файл.ЭтоКаталог() Тогда + + МассивКаталогов.Добавить(Файл); + + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + Возврат МассивКаталогов; + +КонецФункции + Процедура ПроверитьКорневойКаталог(ПутьКорневогоКаталога) Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда @@ -171,4 +198,4 @@ КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/Configuration.xml b/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/Configuration.xml new file mode 100644 index 0000000..adcd612 --- /dev/null +++ b/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/Configuration.xml @@ -0,0 +1,176 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + 61441f19-9f51-458a-b3c1-096710909ca5 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + e0886af0-d116-4dda-8bb6-1395b88a5024 + + + e3687481-0a87-462c-a166-9f34594f9bba + 1c7012cd-fd33-4338-83d7-fd2b0f8ed99d + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + bcf5db24-8183-4235-a2e9-71c69d8241ee + + + 51f2d5d8-ea4d-4064-8892-82951750031e + 328ab8b4-edfe-4635-9540-12b512d5eb6d + + + e68182ea-4237-4383-967f-90c1e3370bc7 + b0523782-50dc-4ee1-8d2b-97d3c9cfa538 + + + + СервиснаяСистема + + + ru + ServiceDataBase + + + + + Version8_3_10 + ManagedApplication + + PersonalComputer + + Russian + + Role.Администратор + + BIA Tecnologies, LLC + 3.1.0.0 + + false + true + true + + + + + + + + CommonForm.ОбщаяФормаОтчета + + + + + + + Multimedia + false + + + Location + false + + + Contacts + false + + + Calendars + false + + + Telephony + false + + + PushNotification + false + + + LocalNotification + false + + + Print + false + + + InAppPurchases + false + + + Ads + false + + + Normal + + + Language.Русский + + + ru + Сервисная ИС + + + + + ru + Сервисная ИС для выполнения различных задач, не связанных с реальным бизнесом + + + + + + ru + © ООО "БиАйЭй-Технолоджиз" (BIA-Technologies LLC). 2014-2018. Все права защищены. Все торговые марки являются собственностью их правообладателей. + + + + + ru + www.bia-tech.ru + + + + Managed + AutoFree + DontUse + Use + TaxiEnableVersion8_2 + Version8_3_10 + CommonForm.НастройкаСистемы + + + Русский + ПодсистемыБСП + GUID + автоТестирование + АвтоТестированиеАдминистратор + HiddenStart + sFTPКлиентСервер + UID + bsp_ancillary + ancillary + bus_DataReceiving + ВерсионированиеПриЗаписи + РоботАвтоматическаяОбработкаИзмененийАдресногоКлассификатора + ВестиЖурналДействийПользователя + ТипUIDСтрока + АудиторскийСлед + Печать + АдресатыПолученияУведомленийОбИзмененияхВАлгоритмах + АвторизацияПользователя + АдресаЭлектроннойПочты + АттестацияРазработчика + ВариантХраненияФайлов + анализЖурналаРегистрации + активныеПользователи + администраторыБаз + РасширенныеХарактеристикиОбъектов + + + \ No newline at end of file diff --git a/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/Ancillary/Ext/Module.bsl b/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/Ancillary/Ext/Module.bsl new file mode 100644 index 0000000..401017d --- /dev/null +++ b/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/Ancillary/Ext/Module.bsl @@ -0,0 +1 @@ +тест \ No newline at end of file diff --git a/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/ancillary.xml b/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/ancillary.xml new file mode 100644 index 0000000..09c11db --- /dev/null +++ b/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/ancillary.xml @@ -0,0 +1,46 @@ + + + + + techServices + + + ru + Tech services + + + + http://local.dellin.ru/tech + + + + 0 + XDTOPackage.dellin_tech + + + techServices.1cws + AutoUse + 20 + + + + + ping + + + ru + Ping + + + + xs:string + false + false + ping + Managed + + + + + + \ No newline at end of file diff --git a/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/bus_DataReceiving/Ext/Module.bsl b/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/bus_DataReceiving/Ext/Module.bsl new file mode 100644 index 0000000..401017d --- /dev/null +++ b/tests/fixtures/СинхронизацияОбъектовМетаданныхИФайлов/WebServices/bus_DataReceiving/Ext/Module.bsl @@ -0,0 +1 @@ +тест \ No newline at end of file diff --git a/tests/ПроверкаСцераниевОбработки.os b/tests/ПроверкаСцераниевОбработки.os index 20b9ea1..1ad0c5b 100644 --- a/tests/ПроверкаСцераниевОбработки.os +++ b/tests/ПроверкаСцераниевОбработки.os @@ -25,7 +25,8 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияИсправляетФайл"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияНеИндексируетНеизмененные"); ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийИсправлениеНеКаноническогоНаписанияИсправляетТолькоНаписание"); - + ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключение"); + Возврат ВсеТесты; КонецФункции @@ -133,7 +134,7 @@ #КонецОбласти -#Область ПроверкаДублейПроцедуриФункций +#Область ПроверкаДублейПроцедурИФункций Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурВызываетИсключение() Экспорт ОбъектСценария = ПолучитьСценарий("ПроверкаДублейПроцедурИФункций.os"); @@ -177,7 +178,71 @@ #КонецОбласти #КонецОбласти +#Область СинхронизацияОбъектовМетаданныхИФайлов +Процедура ТестДолжен_ПроверитьЧтоСинхронизацияОбъектовМетаданныхВызываетИсключение() Экспорт + + ОбъектСценария = ПолучитьСценарий("СинхронизацияОбъектовМетаданныхИФайлов.os"); + Файл = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "СинхронизацияОбъектовМетаданныхИФайлов\Configuration.xml")); + + // Переименование типа без переименования каталога + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Имя каталога Ancillary отличается от метаданного ancillary"); + // удаление типа без удаления файлов + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Необходимо удалить файлы"); + // базовые элементы + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог ChartsOfCharacteristicTypes"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Catalogs"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommandGroups"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonAttributes"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonCommands"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonForms"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonModules"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonPictures"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог CommonTemplates"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Constants"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог DataProcessors"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог DefinedTypes"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Documents"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Enums"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог EventSubscriptions"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог FunctionalOptions"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог InformationRegisters"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Languages"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Reports"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Roles"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог ScheduledJobs"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог SessionParameters"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог Subsystems"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствует каталог XDTOPackages"); + // элементы метаданых + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Language.Русский"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Subsystem.ПодсистемыБСП"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonPicture.GUID"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Role.АвтоТестированиеАдминистратор"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для SessionParameter.автоТестирование"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonTemplate.HiddenStart"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonModule.sFTPКлиентСервер"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonAttribute.UID"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для XDTOPackage.bsp_ancillary"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для EventSubscription.ВерсионированиеПриЗаписи"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для ScheduledJob.РоботАвтоматическаяОбработкаИзмененийАдресногоКлассификатора"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для FunctionalOption.ВестиЖурналДействийПользователя"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для DefinedType.ТипUIDСтрока"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonCommand.АудиторскийСлед"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommandGroup.Печать"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Constant.АдресатыПолученияУведомленийОбИзмененияхВАлгоритмах"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для CommonForm.АвторизацияПользователя"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Catalog.АдресаЭлектроннойПочты"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Document.АттестацияРазработчика"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Enum.ВариантХраненияФайлов"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для Report.анализЖурналаРегистрации"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для DataProcessor.активныеПользователи"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для InformationRegister.администраторыБаз"); + ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "Отсутствуют файлы для ChartOfCharacteristicTypes.РасширенныеХарактеристикиОбъектов"); +КонецПроцедуры +#КонецОбласти + +#КонецОбласти #Область СлужебныйПрограммныйИнтерфейс Процедура ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, ТекстИсключения) diff --git a/tests/ТестФайловыеОперации.os b/tests/ТестФайловыеОперации.os index 79cac66..73acc51 100644 --- a/tests/ТестФайловыеОперации.os +++ b/tests/ТестФайловыеОперации.os @@ -16,6 +16,7 @@ ВсеТесты.Добавить("ТестДолжен_ПрочитатьФайл"); ВсеТесты.Добавить("ТестДолжен_ЗаписатьФайл"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьПоискКаталогов"); Возврат ВсеТесты; @@ -41,6 +42,37 @@ КонецПроцедуры +Процедура ТестДолжен_ПроверитьПоискКаталогов() Экспорт + + ТестовыйКаталог = МенеджерВременныхФайлов.СоздатьКаталог(); + МенеджерВременныхФайлов.БазовыйКаталог = ТестовыйКаталог; + + НайденныеКаталоги = ФайловыеОперации.НайтиКаталоги(ТестовыйКаталог); + + Утверждения.ПроверитьРавенство(ТипЗнч(НайденныеКаталоги), Тип("Массив")); + + Утверждения.ПроверитьРавенство(ФайловыеОперации.НайтиКаталоги(ТестовыйКаталог).Количество(), 0); + + МенеджерВременныхФайлов.СоздатьКаталог(); + Утверждения.ПроверитьРавенство(ФайловыеОперации.НайтиКаталоги(ТестовыйКаталог).Количество(), 1); + + МенеджерВременныхФайлов.СоздатьКаталог(); + Утверждения.ПроверитьРавенство(ФайловыеОперации.НайтиКаталоги(ТестовыйКаталог).Количество(), 2); + + МенеджерВременныхФайлов.СоздатьКаталог(); + Утверждения.ПроверитьРавенство(ФайловыеОперации.НайтиКаталоги(ТестовыйКаталог).Количество(), 3); + + МенеджерВременныхФайлов.СоздатьКаталог(); + Утверждения.ПроверитьРавенство(ФайловыеОперации.НайтиКаталоги(ТестовыйКаталог).Количество(), 4); + + ИмяФайла = МенеджерВременныхФайлов.СоздатьФайл(); + Файл = Новый Файл(ИмяФайла); + Утверждения.ПроверитьРавенство(Файл.Путь, ТестовыйКаталог + ПолучитьРазделительПути()); + Утверждения.ПроверитьРавенство(Файл.Существует(), Истина); + Утверждения.ПроверитьРавенство(ФайловыеОперации.НайтиКаталоги(ТестовыйКаталог).Количество(), 4); + +КонецПроцедуры + Процедура ПередЗапускомТеста() Экспорт ВремТестер = Новый Тестер;