1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2024-12-03 08:45:31 +02:00

Merge branch 'develop' into feature/162

This commit is contained in:
alkoleft 2023-09-15 00:19:08 +03:00
commit 04689b27e2
9 changed files with 233 additions and 24 deletions

View File

@ -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) Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)

View File

@ -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) от фирмы [](https://github.com/1C-Company). Для прогона тестов используется [доработанная демо-конфигурация](https://github.com/bia-technologies/yaxunit/tree/develop/fixtures/demo-configuration) от фирмы [](https://github.com/1C-Company).

View File

@ -20,14 +20,15 @@ slug: /
---- ----
- [Назначение](#назначение) - [YAXUnit. Расширение для запуска тестов](#yaxunit-расширение-для-запуска-тестов)
- [Возможности](#возможности) - [Назначение](#назначение)
- [Пример тестового модуля](#пример-тестового-модуля) - [Возможности](#возможности)
- [Запуск](#запуск) - [Пример тестового модуля](#пример-тестового-модуля)
- [Запуск из EDT](#запуск-из-edt) - [Запуск](#запуск)
- [Запуск вне EDT](#запуск-вне-edt) - [Запуск из 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) Distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)

View File

@ -25,7 +25,7 @@
// ВнешнийОбъект // ВнешнийОбъект
Функция Пауза() Экспорт Функция Пауза() Экспорт
Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза(), Истина); Возврат СоздатьКомпоненту(ОписаниеКомпонентыСервисногоНазначения(), Истина);
КонецФункции КонецФункции
@ -36,7 +36,7 @@
// ВнешнийОбъект // ВнешнийОбъект
Функция Консоль() Экспорт Функция Консоль() Экспорт
Возврат СоздатьКомпоненту(ОписаниеКомпонентыПауза(), Истина); Возврат СоздатьКомпоненту(ОписаниеКомпонентыСервисногоНазначения(), Истина);
КонецФункции КонецФункции
@ -114,11 +114,11 @@
КонецФункции КонецФункции
// Описание компоненты реализующей паузу. // Описание компоненты, реализующей паузу, консоль и другие
// //
// Возвращаемое значение: // Возвращаемое значение:
// см. ОписаниеКомпоненты // см. ОписаниеКомпоненты
Функция ОписаниеКомпонентыПауза() Экспорт Функция ОписаниеКомпонентыСервисногоНазначения() Экспорт
Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Common"); Возврат ОписаниеКомпоненты("ОбщийМакет.ЮТYaxUnitAddIn", "YaxUnitAddin", "Common");

View File

@ -21,7 +21,7 @@
Процедура ТихаяУстановкаКомпонент(ОбработчикЗавершения) Экспорт Процедура ТихаяУстановкаКомпонент(ОбработчикЗавершения) Экспорт
ПараметрыТихойУстановки = ПараметрыТихойУстановки(); ПараметрыТихойУстановки = ПараметрыТихойУстановки();
ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыПауза()); ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыСервисногоНазначения());
ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыРегулярныхВыражений()); ПараметрыТихойУстановки.Компоненты.Добавить(ЮТКомпоненты.ОписаниеКомпонентыРегулярныхВыражений());
ЮТАсинхроннаяОбработкаСлужебныйКлиент.ДобавитьОбработчикЦепочки(ПараметрыТихойУстановки, ЮТАсинхроннаяОбработкаСлужебныйКлиент.ДобавитьОбработчикЦепочки(ПараметрыТихойУстановки,

View File

@ -13,6 +13,7 @@
<content>CommonModule.МокитоОбучение</content> <content>CommonModule.МокитоОбучение</content>
<content>CommonModule.МокитоПроверки</content> <content>CommonModule.МокитоПроверки</content>
<content>CommonModule.МокитоСлужебный</content> <content>CommonModule.МокитоСлужебный</content>
<content>CommonModule.ЮТАсинхроннаяОбработкаСлужебныйКлиент</content>
<content>CommonModule.ЮТест</content> <content>CommonModule.ЮТест</content>
<content>CommonModule.ЮТЗапросы</content> <content>CommonModule.ЮТЗапросы</content>
<content>CommonModule.ЮТЗапросыВызовСервера</content> <content>CommonModule.ЮТЗапросыВызовСервера</content>
@ -20,6 +21,9 @@
<content>CommonModule.ЮТИсполнительКлиент</content> <content>CommonModule.ЮТИсполнительКлиент</content>
<content>CommonModule.ЮТИсполнительКлиентСервер</content> <content>CommonModule.ЮТИсполнительКлиентСервер</content>
<content>CommonModule.ЮТИсполнительСервер</content> <content>CommonModule.ЮТИсполнительСервер</content>
<content>CommonModule.ЮТКомпоненты</content>
<content>CommonModule.ЮТКомпонентыВызовСервера</content>
<content>CommonModule.ЮТКомпонентыКлиент</content>
<content>CommonModule.ЮТКонструкторВариантов</content> <content>CommonModule.ЮТКонструкторВариантов</content>
<content>CommonModule.ЮТКонструкторТестовыхДанныхСлужебный</content> <content>CommonModule.ЮТКонструкторТестовыхДанныхСлужебный</content>
<content>CommonModule.ЮТКонтекст</content> <content>CommonModule.ЮТКонтекст</content>
@ -39,17 +43,29 @@
<content>CommonModule.ЮТОтчетJUnit</content> <content>CommonModule.ЮТОтчетJUnit</content>
<content>CommonModule.ЮТПараметрыЗапуска</content> <content>CommonModule.ЮТПараметрыЗапуска</content>
<content>CommonModule.ЮТПовторногоИспользования</content> <content>CommonModule.ЮТПовторногоИспользования</content>
<content>CommonModule.ЮТПодражатель</content>
<content>CommonModule.ЮТПодражатель_Банки</content>
<content>CommonModule.ЮТПодражатель_Компании</content>
<content>CommonModule.ЮТПодражатель_Люди</content>
<content>CommonModule.ЮТПодражательВызовСервера</content>
<content>CommonModule.ЮТПодражательПовтИсп</content>
<content>CommonModule.ЮТПодражательСлужебный</content>
<content>CommonModule.ЮТПредикаты</content> <content>CommonModule.ЮТПредикаты</content>
<content>CommonModule.ЮТПредикатыКлиентСервер</content> <content>CommonModule.ЮТПредикатыКлиентСервер</content>
<content>CommonModule.ЮТПреобразования</content>
<content>CommonModule.ЮТПроверкиСлужебный</content>
<content>CommonModule.ЮТРасширения</content> <content>CommonModule.ЮТРасширения</content>
<content>CommonModule.ЮТРегистрацияОшибок</content> <content>CommonModule.ЮТРегистрацияОшибок</content>
<content>CommonModule.ЮТСобытия</content> <content>CommonModule.ЮТСобытия</content>
<content>CommonModule.ЮТСравнениеКлиентСервер</content> <content>CommonModule.ЮТСравнениеКлиентСервер</content>
<content>CommonModule.ЮТСравнениеСервер</content> <content>CommonModule.ЮТСравнениеСервер</content>
<content>CommonModule.ЮТСтроки</content>
<content>CommonModule.ЮТТестовыеДанные</content> <content>CommonModule.ЮТТестовыеДанные</content>
<content>CommonModule.ЮТТестовыеДанные_ТаблицыЗначений</content>
<content>CommonModule.ЮТТестовыеДанныеВызовСервера</content> <content>CommonModule.ЮТТестовыеДанныеВызовСервера</content>
<content>CommonModule.ЮТТестовыеДанныеСлужебный</content> <content>CommonModule.ЮТТестовыеДанныеСлужебный</content>
<content>CommonModule.ЮТТесты</content> <content>CommonModule.ЮТТесты</content>
<content>CommonModule.ЮТТипыДанныхСлужебный</content>
<content>CommonModule.ЮТУтверждения</content> <content>CommonModule.ЮТУтверждения</content>
<content>CommonModule.ЮТУтвержденияИБ</content> <content>CommonModule.ЮТУтвержденияИБ</content>
<content>CommonModule.ЮТФабрика</content> <content>CommonModule.ЮТФабрика</content>
@ -59,13 +75,23 @@
<content>CommonModule.ЮТЧитательСервер</content> <content>CommonModule.ЮТЧитательСервер</content>
<content>CommonPicture.ЮТНеизвестный</content> <content>CommonPicture.ЮТНеизвестный</content>
<content>CommonPicture.ЮТОшибка</content> <content>CommonPicture.ЮТОшибка</content>
<content>CommonPicture.ЮТПодсистема</content>
<content>CommonPicture.ЮТПропущен</content> <content>CommonPicture.ЮТПропущен</content>
<content>CommonPicture.ЮТУпал</content> <content>CommonPicture.ЮТУпал</content>
<content>CommonPicture.ЮТУспешно</content> <content>CommonPicture.ЮТУспешно</content>
<content>CommonPicture.ЮТЭлементыТестов</content> <content>CommonPicture.ЮТЭлементыТестов</content>
<content>DataProcessor.ЮТHTTPСервисЗапрос</content> <content>DataProcessor.ЮТHTTPСервисЗапрос</content>
<content>DataProcessor.ЮТЮнитТесты</content>
<content>CommonTemplate.ЮТОписаниеМетаданных</content>
<content>CommonPicture.ЮТПодсистема</content>
<content>DataProcessor.ЮТКонструкторТестовыхДанных</content> <content>DataProcessor.ЮТКонструкторТестовыхДанных</content>
<content>DataProcessor.ЮТЮнитТесты</content>
<content>CommonTemplate.ЮТ_СловарьПодражателя_Компании_Наименования_ru</content>
<content>CommonTemplate.ЮТ_СловарьПодражателя_Компании_ПрефиксыНаименований_ru</content>
<content>CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеИмена_ru</content>
<content>CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеОтчества_ru</content>
<content>CommonTemplate.ЮТ_СловарьПодражателя_Люди_ЖенскиеФамилии_ru</content>
<content>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеИмена_ru</content>
<content>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеОтчества_ru</content>
<content>CommonTemplate.ЮТ_СловарьПодражателя_Люди_МужскиеФамилии_ru</content>
<content>CommonTemplate.ЮТRegEx1CAddin</content>
<content>CommonTemplate.ЮТYaxUnitAddIn</content>
<content>CommonTemplate.ЮТОписаниеМетаданных</content>
</mdclass:Subsystem> </mdclass:Subsystem>

View File

@ -0,0 +1,3 @@
# precommit
В каталоге располагаются сценарии для precommit4onec

View File

@ -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, , , Символы.ПС);
ЗаписьТекста.Записать(НовыйТекстМодуля);
ЗаписьТекста.Закрыть();
Возврат ИСТИНА;
КонецЕсли;
Возврат ЛОЖЬ;
КонецФункции

View File

@ -39,17 +39,15 @@
"Транспорт": "rocketchat" "Транспорт": "rocketchat"
}] }]
}, },
"Сонар": {
"Сервер": "c7-sonar-server.tlc.lan",
"Порт": "9000",
"Токен": "6c0a7cc2bf2e8f054562da6fabf3f2bf41e7a308",
"Профили": "bsl bia; Sonar way (outdated copy)"
},
"СвязанныеПроекты": { "СвязанныеПроекты": {
"bsp": { "bsp": {
"Репозиторий": "git@gitlab.dellin.ru:orais/bsp/bsp.git", "Репозиторий": "git@gitlab.dellin.ru:orais/bsp/bsp.git",
"Ветка": "master", "Ветка": "master",
"Назначение": "Основная конфигурация" "Назначение": "Основная конфигурация"
} }
},
"Precommt4onecСценарии": {
"ИспользоватьСценарииРепозитория": true,
"КаталогЛокальныхСценариев": "tools\\precommit"
} }
} }