mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-02-07 13:31:49 +02:00
Merge remote-tracking branch 'origin/develop' into feature/ONECICD-59
# Conflicts: # features/step_definitions/precommitonec_feature.os
This commit is contained in:
commit
2a0f2dcdee
@ -17,6 +17,7 @@
|
||||
ВсеШаги.Добавить("ВКаталогеРепозиторияЕстьФайл");
|
||||
ВсеШаги.Добавить("ЯКопируюФайлВКаталогРепозитория");
|
||||
ВсеШаги.Добавить("ЯФиксируюИзмененияВРепозиторииСКомментарием");
|
||||
ВсеШаги.Добавить("ЯУстанавливаюКодировкуВыводаКоманды");
|
||||
ВсеШаги.Добавить("КодировкаФайлаИФайлаОдинаковая");
|
||||
ВсеШаги.Добавить("СодержимоеФайлаИФайлаРазное");
|
||||
|
||||
@ -106,16 +107,16 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Кодировка файла "ИсходныйФайл" и файла "КонечныйФайл" одинаковая
|
||||
Процедура КодировкаФайлаИФайлаОдинаковая(ИсходныйФайл, КонечныйФайл) Экспорт
|
||||
|
||||
ИсходныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("КаталогПроекта"), ИсходныйФайл);
|
||||
КонечныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), КонечныйФайл);
|
||||
|
||||
КодировкаИсходногоФайла = ОпределитьКодировку(ИсходныйФайл);
|
||||
КодировкаКонечногоФайла = ОпределитьКодировку(КонечныйФайл);
|
||||
|
||||
Ожидаем.Что(КодировкаИсходногоФайла).Равно(КодировкаКонечногоФайла);
|
||||
// я устанавливаю кодировку вывода "Кодировка" команды "ИмяКоманды"
|
||||
Процедура ЯУстанавливаюКодировкуВыводаКоманды(Кодировка, ИмяКоманды) Экспорт
|
||||
КлючКонтекста = КлючКоманды(ИмяКоманды);
|
||||
Команда = БДД.ПолучитьИзКонтекста(КлючКонтекста);
|
||||
Команда.УстановитьКодировкуВывода(Кодировка);
|
||||
КонецПроцедуры
|
||||
|
||||
Функция КлючКоманды(Знач ИмяКоманды)
|
||||
Возврат "Команда-" + ИмяКоманды;
|
||||
КонецФункции
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -132,6 +133,17 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Кодировка файла "ИсходныйФайл" и файла "КонечныйФайл" одинаковая
|
||||
Процедура КодировкаФайлаИФайлаОдинаковая(ИсходныйФайл, КонечныйФайл) Экспорт
|
||||
|
||||
ИсходныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("КаталогПроекта"), ИсходныйФайл);
|
||||
КонечныйФайл = ОбъединитьПути(БДД.ПолучитьИзКонтекста("РабочийКаталог"), КонечныйФайл);
|
||||
|
||||
КодировкаИсходногоФайла = ОпределитьКодировку(ИсходныйФайл);
|
||||
КодировкаКонечногоФайла = ОпределитьКодировку(КонечныйФайл);
|
||||
|
||||
Ожидаем.Что(КодировкаИсходногоФайла).Равно(КодировкаКонечногоФайла);
|
||||
|
||||
|
||||
Функция ПрочитатьТекстФайла(ПутьКФайлу) Экспорт
|
||||
|
||||
@ -154,7 +166,7 @@
|
||||
Буфер = Новый БуферДвоичныхДанных(МаркерUTFBOM.Количество());
|
||||
|
||||
ЧтениеДанных.ПрочитатьВБуферДвоичныхДанных(Буфер, , МаркерUTFBOM.Количество());
|
||||
сч = 0;
|
||||
cч = 0;
|
||||
ЕстьBOM = Истина;
|
||||
|
||||
Для Каждого Байт ИЗ Буфер Цикл
|
||||
|
@ -10,33 +10,51 @@
|
||||
И я включаю отладку лога с именем "oscript.app.precommit4onec"
|
||||
И я создаю временный каталог и запоминаю его как "КаталогРепозиториев"
|
||||
И я переключаюсь во временный каталог "КаталогРепозиториев"
|
||||
И я создаю новый репозиторий "rep1" в каталоге "КаталогРепозиториев" и запоминаю его как "Репозиторий1"
|
||||
И я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
И я создаю новый репозиторий "rep1" в каталоге "КаталогРепозиториев" и запоминаю его как "РабочийКаталог"
|
||||
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
|
||||
Сценарий: Фиксация изменений
|
||||
Когда Я копирую файл "features/demo/DemoОбработка.epf" в каталог репозитория "Репозиторий1"
|
||||
И я копирую файл "features/demo/DemoОтчет.erf" в каталог репозитория "Репозиторий1"
|
||||
И я копирую файл "features/demo/DemoРасширение.cfe" в каталог репозитория "Репозиторий1"
|
||||
И я фиксирую изменения в репозитории "Репозиторий1" с комментарием "demo коммит"
|
||||
Тогда В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяОФ\Ext\Form\Module.bsl"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяОФ\Ext\Form\form"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет\Templates\ОсновнаяСхемаКомпоновкиДанных.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет\Templates\ОсновнаяСхемаКомпоновкиДанных\Ext\Template.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяОФ.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяОФ\Ext\Form.bin"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяУФ.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяУФ\Ext\Form.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "epf\DemoОбработка\DemoОбработка.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form.bin"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяУФ.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяУФ\Ext\Form.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form\Module.bsl"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form\form"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "cfe\DemoРасширение\ConfigDumpInfo.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "cfe\DemoРасширение\Configuration.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "cfe\DemoРасширение\CommonModules\DemoРасш_Demo.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "cfe\DemoРасширение\CommonModules\DemoРасш_Demo\Ext\Module.bsl"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "cfe\DemoРасширение\Subsystems\DemoРасш_Demo.xml"
|
||||
И В каталоге "src" репозитория "Репозиторий1" есть файл "cfe\DemoРасширение\Languages\Русский.xml"
|
||||
Сценарий: Разбор отчетов, обработок, конфигурации на исходники.
|
||||
Когда Я копирую файл "fixtures/demo/DemoОбработка.epf" в каталог репозитория "РабочийКаталог"
|
||||
И я копирую файл "fixtures/demo/DemoОтчет.erf" в каталог репозитория "РабочийКаталог"
|
||||
И я копирую файл "fixtures/demo/DemoРасширение.cfe" в каталог репозитория "РабочийКаталог"
|
||||
И я фиксирую изменения в репозитории "РабочийКаталог" с комментарием "demo коммит"
|
||||
Тогда В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяОФ\Ext\Form\Module.bsl"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяОФ\Ext\Form\form"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет\Templates\ОсновнаяСхемаКомпоновкиДанных.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет\Templates\ОсновнаяСхемаКомпоновкиДанных\Ext\Template.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяОФ.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяОФ\Ext\Form.bin"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяУФ.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "erf\DemoОтчет\DemoОтчет\Forms\ОсновнаяУФ\Ext\Form.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "epf\DemoОбработка\DemoОбработка.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form.bin"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяУФ.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяУФ\Ext\Form.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form\Module.bsl"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "epf\DemoОбработка\DemoОбработка\Forms\ОсновнаяОФ\Ext\Form\form"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "cfe\DemoРасширение\ConfigDumpInfo.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "cfe\DemoРасширение\Configuration.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "cfe\DemoРасширение\CommonModules\DemoРасш_Demo.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "cfe\DemoРасширение\CommonModules\DemoРасш_Demo\Ext\Module.bsl"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "cfe\DemoРасширение\Subsystems\DemoРасш_Demo.xml"
|
||||
И В каталоге "src" репозитория "РабочийКаталог" есть файл "cfe\DemoРасширение\Languages\Русский.xml"
|
||||
|
||||
Сценарий: Успешный коммит в репозиторий
|
||||
Когда Я копирую файл "fixtures\ПроверкаДублейПроцедурПоложительныйТест.bsl" в каталог репозитория "РабочийКаталог"
|
||||
И Я очищаю параметры команды "git" в контексте
|
||||
И Я установил рабочий каталог как текущий каталог
|
||||
И Я устанавливаю кодировку вывода "utf-8" команды "git"
|
||||
И Я выполняю команду "git" с параметрами "add --all"
|
||||
И Я выполняю команду "git" с параметрами "commit -m addProcedure"
|
||||
Тогда Вывод команды "git" не содержит "обнаружены неуникальные имена методов"
|
||||
|
||||
Сценарий: Прекоммит заблокировал коммит в репозиторий
|
||||
Когда Я копирую файл "fixtures\ПроверкаДублейПроцедурНегативныйТест.bsl" в каталог репозитория "РабочийКаталог"
|
||||
И Я очищаю параметры команды "git" в контексте
|
||||
И Я установил рабочий каталог как текущий каталог
|
||||
И Я устанавливаю кодировку вывода "utf-8" команды "git"
|
||||
И Я выполняю команду "git" с параметрами "add --all"
|
||||
И Я выполняю команду "git" с параметрами "commit -m addProcedure"
|
||||
Тогда Вывод команды "git" содержит "обнаружены неуникальные имена методов"
|
||||
|
@ -7,7 +7,7 @@
|
||||
Чтобы автоматически выполнять обработку исходников перед фиксацией изменений в репозитории
|
||||
|
||||
Сценарий: Печать текущих настроек precommit4onec
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.12.2"
|
||||
@ -17,9 +17,9 @@
|
||||
И Вывод команды "oscript" содержит "ГлобальныеСценарии ="
|
||||
|
||||
Сценарий: Сброс настроек к значениям по умолчанию
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os configure -global -reset"
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global -reset"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||
И Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит
|
||||
@ -28,5 +28,5 @@
|
||||
Установленные настройки:
|
||||
ИспользоватьСценарииРепозитория = Нет
|
||||
КаталогЛокальныхСценариев =
|
||||
ГлобальныеСценарии = КорректировкаXMLФорм.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os
|
||||
ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,КорректировкаXMLФорм.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиОбластей.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os
|
||||
"""
|
||||
|
@ -12,14 +12,14 @@
|
||||
# И я включаю отладку лога с именем "bdd"
|
||||
|
||||
Сценарий: Получение версии продукта
|
||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os version"
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "1.0.12.2"
|
||||
И Вывод команды "oscript" не содержит "precommit4onec v"
|
||||
И Код возврата команды "oscript" равен 0
|
||||
|
||||
Сценарий: Получение помощи продукта
|
||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os help"
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v1.0.12.2
|
||||
@ -33,7 +33,7 @@
|
||||
И Код возврата команды "oscript" равен 0
|
||||
|
||||
Сценарий: Вызов исполняемого файла без параметров
|
||||
Когда Я выполняю команду "oscript" c параметрами "src/main.os"
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v1.0.12.2
|
||||
|
@ -15,7 +15,7 @@
|
||||
И я создаю новый репозиторий "rep2" в каталоге "КаталогРепозиториев" и запоминаю его как "Репозиторий2"
|
||||
|
||||
Сценарий: Установка precommit4onec в репозиторий
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.12.2"
|
||||
@ -23,14 +23,16 @@
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
|
||||
Сценарий: precommit4onec не устанавливается в пустой каталог
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install ./"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
Когда я создаю временный каталог и запоминаю его как "ПустойКаталог"
|
||||
И я переключаюсь во временный каталог "ПустойКаталог"
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./"
|
||||
Тогда Код возврата команды "oscript" равен 1
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.12.2"
|
||||
И Вывод команды "oscript" содержит "не является репозиторием git"
|
||||
И Вывод команды "oscript" содержит "can only be used inside a git repository"
|
||||
|
||||
Сценарий: Установка precommit4onec во вложенные каталоги
|
||||
Когда Я выполняю команду "oscript" c параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v1.0.12.2"
|
||||
|
34
fixtures/ПроверкаДублейПроцедурНегативныйТест.bsl
Normal file
34
fixtures/ПроверкаДублейПроцедурНегативныйТест.bsl
Normal file
@ -0,0 +1,34 @@
|
||||
Процедура Проц() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
//ПРоцедура Проц()
|
||||
Функция Проц() Экспорт
|
||||
КонецПроцедуры // Процедура проц()
|
||||
|
||||
Процедура УпроститьLevel() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура level_Forma1t() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проц1_() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура _Проц12() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
пРоцедура проц2 (парам1)
|
||||
КонецПроцедуры;
|
||||
|
||||
Функция функё1() Экспорт
|
||||
КонецФункции
|
||||
|
||||
Процедура ПРоц3()
|
||||
КонецПроцедуры
|
||||
|
||||
Функция Функ1()
|
||||
КонецФункции
|
||||
|
||||
Функция _Функ1()
|
||||
КонецФункции
|
||||
|
30
fixtures/ПроверкаДублейПроцедурПоложительныйТест.bsl
Normal file
30
fixtures/ПроверкаДублейПроцедурПоложительныйТест.bsl
Normal file
@ -0,0 +1,30 @@
|
||||
Процедура Проц() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УпроститьLevel() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура level_Forma1t() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проц1_() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура _Проц12() Экспорт
|
||||
КонецПроцедуры
|
||||
|
||||
пРоцедура проц2 (парам1)
|
||||
КонецПроцедуры;
|
||||
|
||||
Функция функё1() Экспорт
|
||||
КонецФункции
|
||||
|
||||
Процедура ПРоц3()
|
||||
КонецПроцедуры
|
||||
|
||||
Функция Функ1()
|
||||
КонецФункции
|
||||
|
||||
Функция _Функ1()
|
||||
КонецФункции
|
||||
|
16
packagedef
16
packagedef
@ -1,4 +1,4 @@
|
||||
ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "ПараметрыПриложения.os");
|
||||
ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "ПараметрыПриложения.os");
|
||||
ПараметрыСистемы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюПараметров);
|
||||
|
||||
ИмяПродукта = НРег(ПараметрыСистемы_ЛокальнаяВерсия.ИмяПродукта());
|
||||
@ -6,14 +6,12 @@
|
||||
Описание.Имя(ИмяПродукта)
|
||||
.ВерсияСреды("1.0.17")
|
||||
.Версия(ПараметрыСистемы_ЛокальнаяВерсия.ВерсияПродукта())
|
||||
.ЗависитОт("logos", "0.5")
|
||||
.ЗависитОт("cmdline", "0.4.1")
|
||||
.ЗависитОт("1bdd", "1.5.2")
|
||||
.ЗависитОт("gitrunner", "1.4.0")
|
||||
.ЗависитОт("v8runner", "0.4.1")
|
||||
.ЗависитОт("v8unpack", "1.0.1")
|
||||
.ЗависитОт("logos", "1.2.0")
|
||||
.ЗависитОт("cmdline", "1.0.0")
|
||||
.ЗависитОт("1bdd", "1.9.0")
|
||||
.ЗависитОт("gitrunner", "1.6.0")
|
||||
.ЗависитОт("v8runner", "1.3.0")
|
||||
.ЗависитОт("v8unpack", "1.0.3")
|
||||
.ВключитьФайл("src")
|
||||
.ВключитьФайл("features")
|
||||
.ВключитьФайл("tasks")
|
||||
.ВключитьФайл("v8config.json")
|
||||
.ИсполняемыйФайл("src/main.os", ИмяПродукта);
|
||||
|
115
src/СценарииОбработки/ПроверкаДублейПроцедурИФункций.os
Normal file
115
src/СценарииОбработки/ПроверкаДублейПроцедурИФункций.os
Normal file
@ -0,0 +1,115 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией сценариев обработки файлов <ИмяСценария>
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
Перем Лог;
|
||||
|
||||
// ИмяСценария
|
||||
// Возвращает имя сценария обработки файлов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя текущего сценария обработки файлов
|
||||
//
|
||||
Функция ИмяСценария() Экспорт
|
||||
|
||||
Возврат "ПроверкаДублейПроцедурИФункций";
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
// Параметры:
|
||||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
НастройкиСценария = ДополнительныеПараметры.УправлениеНастройками.Настройка("Precommt4onecСценарии\НастройкиСценариев").Получить(ИмяСценария());
|
||||
|
||||
Если АнализируемыйФайл.Существует() И ТипыФайлов.ЭтоФайлИсходников(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
ПроверитьНаДублированиеМетодов(АнализируемыйФайл.ПолноеИмя);
|
||||
Возврат Истина;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
// ПроверитьНаДублированиеМетодов
|
||||
// Выполняет поиск дублей имен процедур и функций файла
|
||||
//
|
||||
// Параметры:
|
||||
// ПутьКФайлуМодуля - Строка - Путь до файла
|
||||
//
|
||||
Процедура ПроверитьНаДублированиеМетодов(ПутьКФайлуМодуля)
|
||||
|
||||
Текст = Новый ЧтениеТекста();
|
||||
Текст.Открыть(ПутьКФайлуМодуля, КодировкаТекста.UTF8NoBOM);
|
||||
|
||||
ТекстМодуля = Текст.Прочитать();
|
||||
Текст.Закрыть();
|
||||
|
||||
ТекстОшибки = "";
|
||||
|
||||
ШаблонПоиска = Новый РегулярноеВыражение("^\s*(?:Процедура|Функция|procedure|function)\s+?([а-яА-ЯёЁ0-9_\w]+?)\s*?\(\)");
|
||||
ШаблонПоиска.Многострочный = Истина;
|
||||
ШаблонПоиска.ИгнорироватьРегистр = Истина;
|
||||
|
||||
Если НЕ ПустаяСтрока(ТекстМодуля) Тогда
|
||||
|
||||
Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля);
|
||||
|
||||
Если Совпадения.Количество() Тогда
|
||||
|
||||
ТЗПроцедуры = Новый ТаблицаЗначений;
|
||||
ТЗПроцедуры.Колонки.Добавить("ИмяПроцедуры");
|
||||
ТЗПроцедуры.Колонки.Добавить("Количество");
|
||||
|
||||
Для Каждого Совпадение Из Совпадения Цикл
|
||||
|
||||
СтрокаТЗ = ТЗПроцедуры.Добавить();
|
||||
СтрокаТЗ.ИмяПроцедуры = НРЕГ(Совпадение.Группы[1].Значение);
|
||||
СтрокаТЗ.Количество = 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КоличествоПроцедур = ТЗПроцедуры.Количество();
|
||||
ТЗПроцедуры.Свернуть("ИмяПроцедуры", "Количество");
|
||||
КоличествоУникальных = ТЗПроцедуры.Количество();
|
||||
|
||||
Если КоличествоПроцедур <> КоличествоУникальных Тогда
|
||||
|
||||
ТекстОшибки = СтрШаблон("В файле '%1' обнаружены неуникальные имена методов " + Символы.ПС, ПутьКФайлуМодуля);
|
||||
|
||||
Для Каждого СтрокаТЗ Из ТЗПроцедуры Цикл
|
||||
|
||||
ТекстОшибки = ТекстОшибки + ?(СтрокаТЗ.Количество > 1, СтрокаТЗ.ИмяПроцедуры + Символы.ПС, "");
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Лог.Ошибка(ТекстОшибки);
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры // ПроверитьНаДублированиеМетодов()
|
127
tests/ПроверкаСцераниевОбработки.os
Normal file
127
tests/ПроверкаСцераниевОбработки.os
Normal file
@ -0,0 +1,127 @@
|
||||
#Использовать asserts
|
||||
#Использовать logos
|
||||
#Использовать tempfiles
|
||||
|
||||
Перем юТест;
|
||||
Перем Лог;
|
||||
Перем МенеджерВременныхФайлов;
|
||||
|
||||
// Основная точка входа
|
||||
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
|
||||
|
||||
юТест = ЮнитТестирование;
|
||||
|
||||
ВсеТесты = Новый Массив;
|
||||
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурВызываетИсключение");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурОбработаетФайл");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНесуществующийФайл");
|
||||
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНеИсходник");
|
||||
|
||||
Возврат ВсеТесты;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПередЗапускомТеста() Экспорт
|
||||
|
||||
ВремТестер = Новый Тестер;
|
||||
Лог = Логирование.ПолучитьЛог(ВремТестер.ИмяЛога());
|
||||
|
||||
ВключитьПоказОтладки();
|
||||
|
||||
МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПослеЗапускаТеста() Экспорт
|
||||
|
||||
МенеджерВременныхФайлов.Удалить();
|
||||
МенеджерВременныхФайлов = Неопределено;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурВызываетИсключение() Экспорт
|
||||
|
||||
ОбъектСценария = ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций();
|
||||
Файл = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "ПроверкаДублейПроцедурНегативныйТест.bsl"));
|
||||
|
||||
ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, "обнаружены неуникальные имена методов");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурОбработаетФайл() Экспорт
|
||||
|
||||
Файл = Новый Файл(ОбъединитьПути(КаталогТестовыхФикстур(), "ПроверкаДублейПроцедурПоложительныйТест.bsl"));
|
||||
ОбъектСценария = ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций();
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, ПолучитьДополнительныеНастройки());
|
||||
|
||||
Ожидаем.Что(Результат, Истина).ЭтоИстина();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНесуществующийФайл() Экспорт
|
||||
|
||||
Файл = Новый Файл(ПолучитьИмяВременногоФайла("bsl"));
|
||||
ОбъектСценария = ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций();
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, ПолучитьДополнительныеНастройки());
|
||||
|
||||
Ожидаем.Что(Результат, Истина).ЭтоЛожь();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ТестДолжен_ПроверитьЧтоСценарийПроверкиДублейПроцедурНеОбработаетНеИсходник() Экспорт
|
||||
|
||||
Файл = Новый Файл(МенеджерВременныхФайлов.СоздатьФайл("xml"));
|
||||
ОбъектСценария = ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций();
|
||||
Результат = ОбъектСценария.ОбработатьФайл(Файл, Файл.Путь, ПолучитьДополнительныеНастройки());
|
||||
|
||||
Ожидаем.Что(Результат, Истина).ЭтоЛожь();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВызываетсяИсключениеСТекстом(ОбъектСценария, Файл, ТекстИсключения)
|
||||
|
||||
ДополнительныеНастройки = ПолучитьДополнительныеНастройки();
|
||||
ПараметрыМетода = Новый Массив;
|
||||
|
||||
ПараметрыМетода.Добавить(Файл);
|
||||
ПараметрыМетода.Добавить(Файл.Путь);
|
||||
ПараметрыМетода.Добавить(ДополнительныеНастройки);
|
||||
|
||||
Ожидаем.Что(ОбъектСценария).Метод("ОбработатьФайл", ПараметрыМетода).ВыбрасываетИсключение(ТекстИсключения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьСценарийОбработкиПроверкаДублейПроцедурИФункций()
|
||||
|
||||
Сценарий = ОбъединитьПути(КаталогИсходников(), "src", "СценарииОбработки", "ПроверкаДублейПроцедурИФункций.os");
|
||||
ОбъектСценария = ЗагрузитьСценарий(Сценарий);
|
||||
|
||||
Возврат ОбъектСценария;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ВключитьПоказОтладки()
|
||||
Лог.УстановитьУровень(УровниЛога.Отладка);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВыключитьПоказОтладки()
|
||||
Лог.УстановитьУровень(УровниЛога.Информация);
|
||||
КонецПроцедуры
|
||||
|
||||
Функция КаталогТестовыхФикстур()
|
||||
Возврат ОбъединитьПути(КаталогИсходников(), "fixtures");
|
||||
КонецФункции
|
||||
|
||||
Функция КаталогИсходников()
|
||||
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..");
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьДополнительныеНастройки()
|
||||
|
||||
УправлениеНастройками = Новый НастройкиРепозитория(ТекущийКаталог());
|
||||
ДополнительныеНастройки = Новый Структура("Лог, УправлениеНастройками", Лог, УправлениеНастройками);
|
||||
|
||||
Возврат ДополнительныеНастройки;
|
||||
|
||||
КонецФункции
|
@ -6,6 +6,7 @@
|
||||
"ДобавлениеПробеловПередКлючевымиСловами.os",
|
||||
"ЗапретИспользованияПерейти.os",
|
||||
"КорректировкаXMLФорм.os",
|
||||
"ПроверкаДублейПроцедурИФункций.os",
|
||||
"ПроверкаКорректностиОбластей.os",
|
||||
"РазборОбычныхФормНаИсходники.os",
|
||||
"РазборОтчетовОбработокРасширений.os",
|
||||
|
Loading…
x
Reference in New Issue
Block a user