From a6e0e51ab1bdc2d8c27cfbd093b7d3b2473495cb Mon Sep 17 00:00:00 2001 From: Maximov Valery Date: Thu, 7 Sep 2023 09:23:39 +0300 Subject: [PATCH 1/2] =?UTF-8?q?1.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=81=D1=86=D0=B5=D0=BD=D0=B0=D1=80=D0=B8=D0=B9=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B5=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BE=D0=BF=D0=B8=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B9=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2. исправил именование метода подключения сервисной компоненты 3. Добавил пару строк в руководство контрибьютера --- README.md | 2 +- documentation/contributing/index.md | 8 + documentation/src/pages/index.md | 19 +- .../src/CommonModules/ЮТКомпоненты/Module.bsl | 8 +- .../ЮТКомпонентыКлиент/Module.bsl | 2 +- tools/precommit/readme.md | 3 + tools/precommit/ВставкаКопирайтов.os | 173 ++++++++++++++++++ v8config.json | 10 +- 8 files changed, 204 insertions(+), 21 deletions(-) create mode 100644 tools/precommit/readme.md create mode 100644 tools/precommit/ВставкаКопирайтов.os diff --git a/README.md b/README.md index 7c0797b6..d4e3fd7a 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,6 @@ ## Лицензия -Copyright © 2022 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/) +Copyright © 2023 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/) Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) diff --git a/documentation/contributing/index.md b/documentation/contributing/index.md index e54bb368..446c00e7 100644 --- a/documentation/contributing/index.md +++ b/documentation/contributing/index.md @@ -6,6 +6,14 @@ sidebar_position: 1 Здесь будут собраны материалы по доработке тестового движка. +## Окружение + +- Разработка ведется с использованием [1С:Enterprise Development Tools](https://edt.1c.ru/) актуальной релизной версии +- После клонирования репозитория, необходимо подключить `precommit4onec` + - Установить [oscript](https://oscript.io/) + - Установить precommit4onec `opm install precommit4onec` + - Подключить precommit4onec к репозиторию `precommit4onec install -source-dir "exts" /путь/к/склонированному/репозиторию`. Например: путь к склонированному репозиторию '/home/valery/reps/yaxunit', то команда будет `precommit4onec install -source-dir "exts" ~/reps/yaxunit` + ## Тестирование Для прогона тестов используется [доработанная демо-конфигурация](https://github.com/bia-technologies/yaxunit/tree/develop/fixtures/demo-configuration) от фирмы [1С](https://github.com/1C-Company). diff --git a/documentation/src/pages/index.md b/documentation/src/pages/index.md index b908f641..8c0e00fe 100644 --- a/documentation/src/pages/index.md +++ b/documentation/src/pages/index.md @@ -20,14 +20,15 @@ slug: / ---- -- [Назначение](#назначение) - - [Возможности](#возможности) -- [Пример тестового модуля](#пример-тестового-модуля) -- [Запуск](#запуск) - - [Запуск из EDT](#запуск-из-edt) - - [Запуск вне EDT](#запуск-вне-edt) -- [Благодарности](#благодарности) -- [Лицензия](#лицензия) +- [YAXUnit. Расширение для запуска тестов](#yaxunit-расширение-для-запуска-тестов) + - [Назначение](#назначение) + - [Возможности](#возможности) + - [Пример тестового модуля](#пример-тестового-модуля) + - [Запуск](#запуск) + - [Запуск из EDT](#запуск-из-edt) + - [Запуск вне EDT](#запуск-вне-edt) + - [Благодарности](#благодарности) + - [Лицензия](#лицензия) ## Назначение @@ -195,6 +196,6 @@ slug: / ## Лицензия -Copyright © 2022 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/) +Copyright © 2023 [BIA-Technologies Limited Liability Company](http://bia-tech.ru/) Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) diff --git a/exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl index 29aa27ec..cc3e0f6f 100644 --- a/exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТКомпоненты/Module.bsl @@ -25,7 +25,7 @@ // ВнешнийОбъект Функция Пауза() Экспорт - Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза(), Истина); + Возврат СоздатьКомпоненту(ОписаниеКомпонентыСервисногоНазначения(), Истина); КонецФункции @@ -36,7 +36,7 @@ // ВнешнийОбъект Функция Консоль() Экспорт - Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза(), Истина); + Возврат СоздатьКомпоненту(ОписаниеКомпонентыСервисногоНазначения(), Истина); КонецФункции @@ -114,11 +114,11 @@ КонецФункции -// Описание компоненты реализующей паузу. +// Описание компоненты, реализующей паузу, консоль и другие // // Возвращаемое значение: // см. ОписаниеКомпоненты -Функция ОписаниеКомпонентыПауза() Экспорт +Функция ОписаниеКомпонентыСервисногоНазначения() Экспорт Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Common"); diff --git a/exts/yaxunit/src/CommonModules/ЮТКомпонентыКлиент/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКомпонентыКлиент/Module.bsl index 5480d3b5..e8e78f4a 100644 --- a/exts/yaxunit/src/CommonModules/ЮТКомпонентыКлиент/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТКомпонентыКлиент/Module.bsl @@ -21,7 +21,7 @@ Процедура ТихаяУстановкаКомпонент(ОбработчикЗавершения) Экспорт ПараметрыТихойУстановки = ПараметрыТихойУстановки(); - ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыПауза()); + ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыСервисногоНазначения()); ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыРегулярныхВыражений()); ЮТАсинхроннаяОбработкаСлужебныйКлиент.ДобавитьОбработчикЦепочки(ПараметрыТихойУстановки, diff --git a/tools/precommit/readme.md b/tools/precommit/readme.md new file mode 100644 index 00000000..863e5945 --- /dev/null +++ b/tools/precommit/readme.md @@ -0,0 +1,3 @@ +# precommit + +В каталоге располагаются сценарии для precommit4onec diff --git a/tools/precommit/ВставкаКопирайтов.os b/tools/precommit/ВставкаКопирайтов.os new file mode 100644 index 00000000..7e7d2e46 --- /dev/null +++ b/tools/precommit/ВставкаКопирайтов.os @@ -0,0 +1,173 @@ +/////////////////////////////////////////////////////////////////////////////// +// +// Служебный модуль с реализацией сценариев обработки файлов ВставкаКопирайтов +// +/////////////////////////////////////////////////////////////////////////////// + +Перем Лог; + +// ИмяСценария +// Возвращает имя сценария обработки файлов +// +// Возвращаемое значение: +// Строка - Имя текущего сценария обработки файлов +// +Функция ИмяСценария() Экспорт + + Возврат "ВставкаКопирайтов"; + +КонецФункции // ИмяСценария() + +// ОбработатьФайл +// Выполняет обработку файла +// +// Параметры: +// АнализируемыйФайл - Файл - Файл из журнала git для анализа +// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория +// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать +// * Лог - Объект - Текущий лог +// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс +// * КаталогРепозитория - Строка - Адрес каталога репозитория +// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария +// и которые необходимо дообработать +// +// Возвращаемое значение: +// Булево - Признак выполненной обработки файла +// +Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт + + Лог = ДополнительныеПараметры.Лог; + Если АнализируемыйФайл.Существует() И ЭтоФайлИсходников(АнализируемыйФайл) Тогда + + ПутьКФайлуКопирайта = ОбъединитьПути(ДополнительныеПараметры.КаталогРепозитория, "COPYRIGHT"); + ФайлКопирайта = Новый Файл(ПутьКФайлуКопирайта); + Если НЕ ФайлКопирайта.Существует() Тогда + + Возврат ЛОЖЬ; + + КонецЕсли; + + Если Не ДополнительныеПараметры.Свойство("АктуальныйКопирайт") Тогда + + Текст = Новый ЧтениеТекста(); + Текст.Открыть(ПутьКФайлуКопирайта, КодировкаТекста.UTF8NoBOM); + + ТекстКопирайта = Текст.Прочитать(); + ТекстКопирайта = СокрЛП(ТекстКопирайта); + Текст.Закрыть(); + + РегуляркаДатыКопирайта = Новый РегулярноеВыражение("\)\.\s\d{4}-(\d{4})\."); + РегуляркаДатыКопирайта.Многострочный = Истина; + РегуляркаДатыКопирайта.ИгнорироватьРегистр = Истина; + + ТекстКопирайта = РегуляркаДатыКопирайта.Заменить(ТекстКопирайта, "). 2021-" + Год(ТекущаяУниверсальнаяДата()) + "."); + + ЗаписьТекста = Новый ЗаписьТекста(ПутьКФайлуКопирайта, КодировкаТекста.UTF8NoBOM, , , Символы.ПС); + ЗаписьТекста.Записать(ТекстКопирайта); + ЗаписьТекста.Закрыть(); + + ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(ПутьКФайлуКопирайта); + ДополнительныеПараметры.Вставить("АктуальныйКопирайт", Истина); + + КонецЕсли; + + Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария()); + + Если УстановитьКопирайтПриНеобходимости(АнализируемыйФайл.ПолноеИмя, ФайлКопирайта.ПолноеИмя) Тогда + + ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя); + + // для постобработки другим сценарием + ДополнительныеПараметры.ФайлыДляПостОбработки.Добавить(АнализируемыйФайл.ПолноеИмя); + Возврат ИСТИНА; + + КонецЕсли; + + КонецЕсли; + + Возврат ЛОЖЬ; + +КонецФункции // ОбработатьФайл() + +Функция ЭтоФайлИсходников(Файл) + + Если ПустаяСтрока(Файл.Расширение) Тогда + + Возврат Ложь; + + КонецЕсли; + + Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0; + +КонецФункции + +Функция УстановитьКопирайтПриНеобходимости(ПутьКФайлуМодуля, ПутьКФайлуКопирайта) + + Текст = Новый ЧтениеТекста(); + Текст.Открыть(ПутьКФайлуКопирайта, КодировкаТекста.UTF8NoBOM); + + ТекстКопирайта = Текст.Прочитать(); + ТекстКопирайта = СокрЛП(ТекстКопирайта); + Текст.Закрыть(); + + ТекстОшибки = ""; + РегуляркаСтороннийКод = Новый РегулярноеВыражение("(// IMPORT\s)"); + РегуляркаСтороннийКод.Многострочный = Истина; + РегуляркаСтороннийКод.ИгнорироватьРегистр = Истина; + + РегуляркаКопирайта = Новый РегулярноеВыражение("([\/]{2}©[\/]{2,}©[\/]{2}\s?)"); + РегуляркаКопирайта.Многострочный = Истина; + РегуляркаКопирайта.ИгнорироватьРегистр = Истина; + + НовыйТекстМодуля = ""; + + Текст = Новый ЧтениеТекста(); + Текст.Открыть(ПутьКФайлуМодуля, КодировкаТекста.UTF8NoBOM); + ТекстМодуля = Текст.Прочитать(); + Текст.Закрыть(); + + Если НЕ ПустаяСтрока(ТекстМодуля) И Не РегуляркаСтороннийКод.Совпадает(ТекстМодуля) Тогда + + КоллекцияСовпадений = РегуляркаКопирайта.НайтиСовпадения(ТекстМодуля); + + Если КоллекцияСовпадений.Количество() = 0 Тогда + + ТекстОшибки = "Нет копирайта в модуле"; + НовыйТекстМодуля = ТекстКопирайта + Символы.ПС + Символы.ПС + СокрЛП(ТекстМодуля); + + ИначеЕсли КоллекцияСовпадений.Количество() <> 2 Тогда + + Лог.Ошибка("Модуль '%1' + |содержит несколько блоков, похожих на части копирайта. + |Удалите лишние (либо все) блоки относящиеся к копирайту.", ПутьКФайлуМодуля); + ВызватьИсключение "Копирайт не может быть проверен/скорректирован"; + + Иначе + + КонецКопирайта = КоллекцияСовпадений[1].Индекс + КоллекцияСовпадений[1].Длина; + + Если СтрСравнить(ТекстКопирайта, СокрЛП(СтрЗаменить(Лев(ТекстМодуля, КонецКопирайта), Символы.ВК, ""))) <> 0 Тогда + + ТекстОшибки = "Неактульный копирайт"; + + НовыйТекстМодуля = ТекстКопирайта + Символы.ПС + Символы.ПС + СокрЛП(Прав(ТекстМодуля, СтрДлина(ТекстМодуля) - КонецКопирайта)); + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Если ЗначениеЗаполнено(ТекстОшибки) Тогда + + ЗаписьТекста = Новый ЗаписьТекста(ПутьКФайлуМодуля, КодировкаТекста.UTF8NoBOM, , , Символы.ПС); + ЗаписьТекста.Записать(НовыйТекстМодуля); + ЗаписьТекста.Закрыть(); + + Возврат ИСТИНА; + + КонецЕсли; + + Возврат ЛОЖЬ; + +КонецФункции diff --git a/v8config.json b/v8config.json index 97bcfee8..6215b897 100644 --- a/v8config.json +++ b/v8config.json @@ -39,17 +39,15 @@ "Транспорт": "rocketchat" }] }, - "Сонар": { - "Сервер": "c7-sonar-server.tlc.lan", - "Порт": "9000", - "Токен": "6c0a7cc2bf2e8f054562da6fabf3f2bf41e7a308", - "Профили": "bsl bia; Sonar way (outdated copy)" - }, "СвязанныеПроекты": { "bsp": { "Репозиторий": "git@gitlab.dellin.ru:orais/bsp/bsp.git", "Ветка": "master", "Назначение": "Основная конфигурация" } + }, + "Precommt4onecСценарии": { + "ИспользоватьСценарииРепозитория": true, + "КаталогЛокальныхСценариев": "tools\\precommit" } } \ No newline at end of file From 14374497abe0228938f3aa046879e7438c7ee1ca Mon Sep 17 00:00:00 2001 From: alkoleft Date: Sun, 10 Sep 2023 00:23:00 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=9E=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D1=8B?= =?UTF-8?q?=20=D0=B4=D0=B2=D0=B8=D0=B6=D0=BA=D0=B0=20=D0=BF=D0=BE=D0=BC?= =?UTF-8?q?=D0=B5=D1=89=D0=B5=D0=BD=D1=8B=20=D0=B2=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Subsystems/ЮТДвижок/ЮТДвижок.mdo | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo b/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo index 32dfccd6..1bb37fda 100644 --- a/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo +++ b/exts/yaxunit/src/Subsystems/ЮТДвижок/ЮТДвижок.mdo @@ -13,6 +13,7 @@ CommonModule.МокитоОбучение CommonModule.МокитоПроверки CommonModule.МокитоСлужебный + CommonModule.ЮТАсинхроннаяОбработкаСлужебныйКлиент CommonModule.ЮТест CommonModule.ЮТЗапросы CommonModule.ЮТЗапросыВызовСервера @@ -20,6 +21,9 @@ CommonModule.ЮТИсполнительКлиент CommonModule.ЮТИсполнительКлиентСервер CommonModule.ЮТИсполнительСервер + CommonModule.ЮТКомпоненты + CommonModule.ЮТКомпонентыВызовСервера + CommonModule.ЮТКомпонентыКлиент CommonModule.ЮТКонструкторВариантов CommonModule.ЮТКонструкторТестовыхДанныхСлужебный CommonModule.ЮТКонтекст @@ -39,17 +43,29 @@ CommonModule.ЮТОтчетJUnit CommonModule.ЮТПараметрыЗапуска CommonModule.ЮТПовторногоИспользования + CommonModule.ЮТПодражатель + CommonModule.ЮТПодражатель_Банки + CommonModule.ЮТПодражатель_Компании + CommonModule.ЮТПодражатель_Люди + CommonModule.ЮТПодражательВызовСервера + CommonModule.ЮТПодражательПовтИсп + CommonModule.ЮТПодражательСлужебный CommonModule.ЮТПредикаты CommonModule.ЮТПредикатыКлиентСервер + CommonModule.ЮТПреобразования + CommonModule.ЮТПроверкиСлужебный CommonModule.ЮТРасширения CommonModule.ЮТРегистрацияОшибок CommonModule.ЮТСобытия CommonModule.ЮТСравнениеКлиентСервер CommonModule.ЮТСравнениеСервер + CommonModule.ЮТСтроки CommonModule.ЮТТестовыеДанные + CommonModule.ЮТТестовыеДанные_ТаблицыЗначений CommonModule.ЮТТестовыеДанныеВызовСервера CommonModule.ЮТТестовыеДанныеСлужебный CommonModule.ЮТТесты + CommonModule.ЮТТипыДанныхСлужебный CommonModule.ЮТУтверждения CommonModule.ЮТУтвержденияИБ CommonModule.ЮТФабрика @@ -59,13 +75,23 @@ CommonModule.ЮТЧитательСервер CommonPicture.ЮТНеизвестный CommonPicture.ЮТОшибка + CommonPicture.ЮТПодсистема CommonPicture.ЮТПропущен CommonPicture.ЮТУпал CommonPicture.ЮТУспешно CommonPicture.ЮТЭлементыТестов DataProcessor.ЮТHTTPСервисЗапрос - DataProcessor.ЮТЮнитТесты - CommonTemplate.ЮТОписаниеМетаданных - CommonPicture.ЮТПодсистема DataProcessor.ЮТКонструкторТестовыхДанных + DataProcessor.ЮТЮнитТесты + CommonTemplate.ЮТ_СловарьПодражателя_Компании_Наименования_ru + CommonTemplate.ЮТ_СловарьПодражателя_Компании_ПрефиксыНаименований_ru + CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеИмена_ru + CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеОтчества_ru + CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеФамилии_ru + CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеИмена_ru + CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеОтчества_ru + CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеФамилии_ru + CommonTemplate.ЮТRegEx1CAddin + CommonTemplate.ЮТYaxUnitAddIn + CommonTemplate.ЮТОписаниеМетаданных