1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2025-02-21 19:19:58 +02:00
precommit4onec/features/КомандаВыполнениеСценариев.feature

158 lines
18 KiB
Gherkin

# language: ru
Функциональность: Выполнение сценариев
Как разработчик
Я хочу быть уверенным, что precommit4onec корректно обрабатывает выполнение сценариев для каталога
Контекст:
Допустим Я очищаю параметры команды "oscript" в контексте
И я очищаю параметры команды "git" в контексте
И Я устанавливаю кодировку вывода "utf-8" команды "git"
И я включаю отладку лога с именем "oscript.app.precommit4onec"
И я создаю временный каталог и запоминаю его как "КаталогРепозиториев"
И я переключаюсь во временный каталог "КаталогРепозиториев"
И я создаю новый репозиторий "rep1" в каталоге "КаталогРепозиториев" и запоминаю его как "РабочийКаталог"
И я создаю каталог "src" в рабочем каталоге
И я установил рабочий каталог как текущий каталог
Сценарий: Разбор отчетов, обработок, конфигурации на исходники.
Когда Я копирую файл "tests/fixtures/demo/DemoОбработка.epf" в каталог репозитория "РабочийКаталог"
И я копирую файл "tests/fixtures/demo/DemoОтчет.erf" в каталог репозитория "РабочийКаталог"
И я копирую файл "tests/fixtures/demo/DemoРасширение.cfe" в каталог репозитория "РабочийКаталог"
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir ."
Тогда В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет/Forms/ОсновнаяОФ/Ext/Form/Module.bsl"
И В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет/Forms/ОсновнаяОФ/Ext/Form/form"
И В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет/Templates/ОсновнаяСхемаКомпоновкиДанных.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет/Templates/ОсновнаяСхемаКомпоновкиДанных/Ext/Template.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет/Forms/ОсновнаяОФ.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет/Forms/ОсновнаяОФ/Ext/Form.bin"
И В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет/Forms/ОсновнаяУФ.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "erf/DemoОтчет/DemoОтчет/Forms/ОсновнаяУФ/Ext/Form.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "epf/DemoОбработка/DemoОбработка.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "epf/DemoОбработка/DemoОбработка/Forms/ОсновнаяОФ.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "epf/DemoОбработка/DemoОбработка/Forms/ОсновнаяОФ/Ext/Form.bin"
И В каталоге "." репозитория "РабочийКаталог" есть файл "epf/DemoОбработка/DemoОбработка/Forms/ОсновнаяУФ.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "epf/DemoОбработка/DemoОбработка/Forms/ОсновнаяУФ/Ext/Form.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "epf/DemoОбработка/DemoОбработка/Forms/ОсновнаяОФ/Ext/Form/Module.bsl"
И В каталоге "." репозитория "РабочийКаталог" есть файл "epf/DemoОбработка/DemoОбработка/Forms/ОсновнаяОФ/Ext/Form/form"
И В каталоге "." репозитория "РабочийКаталог" есть файл "cfe/DemoРасширение/ConfigDumpInfo.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "cfe/DemoРасширение/Configuration.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "cfe/DemoРасширение/CommonModules/DemoРасш_Demo.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "cfe/DemoРасширение/CommonModules/DemoРасш_Demo/Ext/Module.bsl"
И В каталоге "." репозитория "РабочийКаталог" есть файл "cfe/DemoРасширение/Subsystems/DemoРасш_Demo.xml"
И В каталоге "." репозитория "РабочийКаталог" есть файл "cfe/DemoРасширение/Languages/Русский.xml"
Сценарий: Успешный коммит в репозиторий
Когда Я копирую файл "tests/fixtures/ПроверкаДублейПроцедурПоложительныйТест.bsl" в каталог репозитория "РабочийКаталог"
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir ."
Тогда Вывод команды "oscript" не содержит "обнаружены неуникальные имена методов"
Сценарий: Прекоммит вывел ошибку о неуникальных именах
Когда Я копирую файл "tests/fixtures/ПроверкаДублейПроцедурНегативныйТест.bsl" в каталог репозитория "РабочийКаталог"
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir ."
Тогда Вывод команды "oscript" содержит "обнаружены неуникальные имена методов"
Сценарий: Прекоммит вывел ошибку о нецензурных словах
Когда Я копирую каталог "ПроверкаНецензурныхСлов" из каталога "tests/fixtures" проекта в рабочий каталог
И Я копирую файл "v8config.json" из каталога "tests/fixtures/ХранениеРазныхНастроек" проекта в рабочий каталог
И Я копирую файл "НецензурныеСлова.txt" из каталога "." проекта в рабочий каталог
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir ПроверкаНецензурныхСлов -rules ПроверкаНецензурныхСлов.os"
Тогда Вывод команды "oscript" содержит
| ОШИБКА |
| обнаружены нецензурные слова |
Сценарий: Прекоммит не вывел ошибку о нецензурных словах при отсутствии словаря
Когда Я копирую каталог "ПроверкаНецензурныхСлов" из каталога "tests/fixtures" проекта в рабочий каталог
И Я копирую файл "v8config.json" из каталога "tests/fixtures/ХранениеРазныхНастроек" проекта в рабочий каталог
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir ПроверкаНецензурныхСлов -rules ПроверкаНецензурныхСлов.os"
Тогда Вывод команды "oscript" не содержит
| ОШИБКА |
| обнаружены нецензурные слова |
Сценарий: Прекоммит не упал и не вывел ошибку о нецензурных словах при отсутствии настройки сценария
Когда Я копирую каталог "ПроверкаНецензурныхСлов" из каталога "tests/fixtures" проекта в рабочий каталог
И Я копирую файл "v8config.json" из каталога "tests/fixtures/ХранениеРазныхНастроек/НетНастроекПроверкаНецензурныхСлов" проекта в рабочий каталог
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir ПроверкаНецензурныхСлов -rules ПроверкаНецензурныхСлов.os"
Тогда Вывод команды "oscript" не содержит
| ОШИБКА |
| В результате выполнения возникли исключения |
| Значение не является значением объектного типа |
| обнаружены нецензурные слова |
Сценарий: Прекоммит не упал и не вывел ошибку о нецензурных словах при отсутствии настроек сценариев
Когда Я копирую каталог "ПроверкаНецензурныхСлов" из каталога "tests/fixtures" проекта в рабочий каталог
И Я копирую файл "v8config.json" из каталога "tests/fixtures/ХранениеРазныхНастроек/НетНастроекНастройкиСценариев" проекта в рабочий каталог
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir ПроверкаНецензурныхСлов -rules ПроверкаНецензурныхСлов.os"
Тогда Вывод команды "oscript" не содержит
| ОШИБКА |
| В результате выполнения возникли исключения |
| Значение не является значением объектного типа |
| обнаружены нецензурные слова |
Сценарий: Прекоммит вывел ошибку о некорректной инструкции препроцессора
Когда Я копирую файл "ОшибкаНаписания.bsl" из каталога "tests/fixtures/ПроверкаКорректностиИнструкцийПрепроцессора" проекта в подкаталог "src" рабочего каталога
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir src -rules ПроверкаКорректностиИнструкцийПрепроцессора.os"
Тогда Вывод команды "oscript" содержит
| ОШИБКА |
| Неизвестная инструкция [Када] в строке [4] |
| Неизвестная инструкция [ТолстыйКлиентУправляемоеПриложениt] в строке [4] |
| Неизвестная инструкция [Тада] в строке [4] |
| Неизвестная инструкция [Фсьо] в строке [5] |
| Пустая инструкция в строке [9] |
Сценарий: Прекоммит вывел ошибку о нарушении парности инструкций препроцессора
Когда Я копирую файл "ОшибкаПарности.bsl" из каталога "tests/fixtures/ПроверкаКорректностиИнструкцийПрепроцессора" проекта в подкаталог "src" рабочего каталога
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir src -rules ПроверкаКорректностиИнструкцийПрепроцессора.os"
Тогда Вывод команды "oscript" содержит
| ОШИБКА |
| Нарушена парность инструкций [#Если/#КонецЕсли] |
Сценарий: Прекоммит вывел ошибку о нарушении порядка инструкций препроцессора
Когда Я копирую каталог "ОшибкиПорядка" из каталога "tests/fixtures/ПроверкаКорректностиИнструкцийПрепроцессора" проекта в подкаталог "src" рабочего каталога
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir src -rules ПроверкаКорректностиИнструкцийПрепроцессора.os"
Тогда Вывод команды "oscript" содержит
| ОШИБКА |
| Нарушен порядок инструкции [ИначеЕсли] в строке [1] |
| Нарушен порядок инструкции [Иначе] в строке [2] |
| Нарушен порядок инструкции [КонецЕсли] в строке [3] |
| Нарушен порядок инструкции [КонецЕсли] в строке [4] |
| Нарушен порядок инструкции [ИначеЕсли] в строке [5] |
Сценарий: Прекоммит корректно обрабатывает все возможные варианты инструкций препроцессора
Когда Я копирую файл "КорректныеВсевозможныеВарианты.bsl" из каталога "tests/fixtures/ПроверкаКорректностиИнструкцийПрепроцессора" проекта в подкаталог "src" рабочего каталога
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir src -rules ПроверкаКорректностиИнструкцийПрепроцессора.os"
Тогда Вывод команды "oscript" не содержит
| ОШИБКА |
| Нарушен порядок инструкции |
| Неизвестная инструкция |
| Нарушена парность инструкций |
Сценарий: Прекоммит использует локальные настройки репозитория вместо глобальных
Когда Я копирую каталог "localscenario" из каталога "tests/fixtures" проекта в рабочий каталог
И Я копирую файл "v8config.json" из каталога "tests/fixtures" проекта в рабочий каталог
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules <РабочийКаталог> -source-dir ."
И Я сообщаю вывод команды "oscript"
Тогда Вывод команды "oscript" содержит "Используем локальные настройки"
Сценарий: Разбор конфигурации на исходники с последующим применением правил к распакованным модулям.
Когда Я копирую каталог "src" из каталога "tests/fixtures/cf-common-forms" проекта в рабочий каталог
И я копирую файл "v8config.json" из каталога "tests/fixtures/cf-common-forms" проекта в рабочий каталог
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os exec-rules ."
Тогда В каталоге "src/Catalogs/Справочник1/Forms/ФормаЭлемента/Ext/Form" репозитория "РабочийКаталог" есть файл "Module.bsl"
И файл "src/Catalogs/Справочник1/Forms/ФормаЭлемента/Ext/Form/Module.bsl" в рабочем каталоге содержит
"""
Процедура ПриОткрытии()
Сообщить("Hello, world!");
Условие = Истина;
Если Условие Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
"""