forked from bia-tech/precommit4onec
-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #9 from bia-technologies/feature/gh7
Feature/gh7
- Loading branch information
Showing
8 changed files
with
493 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
/////////////////////////////////////////////////////////////////////////////// | ||
// | ||
// Служебный модуль с реализацией сценариев обработки файлов <ИмяСценария> | ||
// | ||
/////////////////////////////////////////////////////////////////////////////// | ||
|
||
// ИмяСценария | ||
// Возвращает имя сценария обработки файлов | ||
// | ||
// Возвращаемое значение: | ||
// Строка - Имя текущего сценария обработки файлов | ||
// | ||
Функция ИмяСценария() Экспорт | ||
|
||
Возврат "ОбработкаЮнитТестов"; | ||
|
||
КонецФункции // ИмяСценария() | ||
|
||
// ОбработатьФайл | ||
// Выполняет обработку файла | ||
// | ||
// Параметры: | ||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа | ||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория | ||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать | ||
// * Лог - Объект - Текущий лог | ||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс | ||
// * КаталогРепозитория - Строка - Адрес каталога репозитория | ||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария | ||
// и которые необходимо дообработать | ||
// * ИзмененныеКаталоги - Массив - Каталоги / файлы которые необходимо добавить в индекс | ||
// | ||
// Возвращаемое значение: | ||
// Булево - Признак выполненной обработки файла | ||
// | ||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт | ||
|
||
Лог = ДополнительныеПараметры.Лог; | ||
НастройкиСценария = ДополнительныеПараметры.Настройки.Получить(ИмяСценария()); | ||
|
||
// анализ файла без изменения его содержимого | ||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) | ||
И СтрНайти(АнализируемыйФайл.ПолноеИмя, "/tests/") Тогда | ||
|
||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария()); | ||
|
||
Если ОбработкаФайла(АнализируемыйФайл) Тогда | ||
|
||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(АнализируемыйФайл.ПолноеИмя); | ||
|
||
КонецЕсли; | ||
|
||
Возврат Истина; | ||
|
||
КонецЕсли; | ||
|
||
Возврат Ложь; | ||
|
||
КонецФункции // ОбработатьФайл() | ||
|
||
Функция ОбработкаФайла(Файл) | ||
|
||
РегулярноеВыражениеМетоды = Новый РегулярноеВыражение("\/\/\s*?\@unit-test\:.*?\nПроцедура\s+?(.+)\s*?\(.*\s*Экспорт"); | ||
РегулярноеВыражениеМетоды.ИгнорироватьРегистр = Истина; | ||
РегулярноеВыражениеМетоды.Многострочный = Истина; | ||
|
||
РегулярноеВыражениеAPI = Новый РегулярноеВыражение("(#Область ТестыAPI\s*?[.\w\W]+?#КонецОбласти\s*?$)"); | ||
РегулярноеВыражениеAPI.ИгнорироватьРегистр = Истина; | ||
РегулярноеВыражениеAPI.Многострочный = Истина; | ||
|
||
ТекстовыйДокумент = Новый ТекстовыйДокумент; | ||
ТекстовыйДокумент.Прочитать(Файл.ПолноеИмя, КодировкаТекста.UTF8NoBOM); | ||
Текст = ТекстовыйДокумент.ПолучитьТекст(); | ||
|
||
Если Не ЗначениеЗаполнено(Текст) Тогда | ||
|
||
Возврат Ложь; | ||
|
||
КонецЕсли; | ||
|
||
Совпадения = РегулярноеВыражениеМетоды.НайтиСовпадения(Текст); | ||
ТекстМетода = ""; | ||
Если Совпадения.Количество() Тогда | ||
Для Каждого Совпадение Из Совпадения Цикл | ||
ТекстМетода = ТекстМетода + Символы.ПС | ||
+ " ИсполняемыеСценарии.Добавить(""" + Совпадение.Группы[1].Значение + """);"; | ||
КонецЦикла; | ||
КонецЕсли; | ||
Если Не ПустаяСтрока(ТекстМетода) Тогда | ||
ТекстМетода = "#Область ТестыAPI | ||
| | ||
|// ИсполняемыеСценарии | ||
|// Сервисный метод для получения списка тестовых методов | ||
|// Параметры: | ||
|// ДополнительныеПараметры - Структура - Дополнительные параметры, используемые при формировании списка тестов | ||
|// Возвращаемое значение: | ||
|// Массив - Имена методов тестов | ||
|Функция ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт | ||
| | ||
| ИсполняемыеСценарии = Новый Массив; " + ТекстМетода + " | ||
| | ||
| Возврат ИсполняемыеСценарии; | ||
| | ||
|КонецФункции | ||
| | ||
|#КонецОбласти"; | ||
|
||
Совпадения = РегулярноеВыражениеAPI.НайтиСовпадения(Текст); | ||
НовыйТекстМодуля = Текст; | ||
Если Совпадения.Количество() Тогда | ||
НовыйТекстМодуля = РегулярноеВыражениеAPI.Заменить(Текст, ТекстМетода); | ||
Иначе | ||
Поз = СтрНайти(Текст, "#Область Тесты"); | ||
Если Поз > 0 Тогда | ||
НовыйТекстМодуля = Лев(Текст, Поз - 1) + ТекстМетода + Символы.ПС + Символы.ПС + Сред(Текст, Поз); | ||
Иначе | ||
НовыйТекстМодуля = ТекстМетода + Символы.ПС + Символы.ПС + Текст; | ||
КонецЕсли; | ||
|
||
КонецЕсли; | ||
|
||
Если НовыйТекстМодуля <> Текст Тогда | ||
ТекстовыйДокумент.УстановитьТекст(НовыйТекстМодуля); | ||
ТекстовыйДокумент.Записать(Файл.ПолноеИмя, КодировкаТекста.UTF8NoBOM); | ||
Сообщить("Обновлен файл " + Файл.ПолноеИмя); | ||
|
||
Возврат Истина; | ||
КонецЕсли; | ||
|
||
КонецЕсли; | ||
|
||
Возврат Ложь; | ||
|
||
КонецФункции |
Oops, something went wrong.