Skip to content

Commit

Permalink
Merge pull request #322 from silverbulleters/feature/syntax-folder-fix
Browse files Browse the repository at this point in the history
Создание нужных каталогов, в т.ч. и родительских, для ката… … 6a56109 …лого Allure и Junit
  • Loading branch information
artbear authored Oct 31, 2019
2 parents 463e828 + 6a56109 commit 5f1e12d
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 22 deletions.
55 changes: 51 additions & 4 deletions features/ПроверкаСинтаксиса.feature
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication" для команды "oscript"
Когда Я выполняю команду "oscript"
# И Я сообщаю вывод команды "oscript"
И Код возврата команды "oscript" равен 0
Тогда Вывод команды "oscript" содержит
# | /CheckConfig -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication |
| Результат синтакс-контроля: Ошибок не обнаружено |

И Код возврата команды "oscript" равен 0
# Тогда в лог-файле запуска продукта есть строка 'testsuite name="Синтаксическая проверка конфигурации"'

Сценарий: Синтаксическая проверка временной файловой базы с результатами в формате JUnit
Expand All @@ -35,12 +35,12 @@
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication" для команды "oscript"
Когда Я выполняю команду "oscript"
# И Я сообщаю вывод команды "oscript"
И Код возврата команды "oscript" равен 0
И Файл "junit.xml" содержит
"""
<testsuite name="CheckConfig.base">
"""
И Файл "junit.xml" содержит 'status="passed"'
И Код возврата команды "oscript" равен 0
# Тогда в лог-файле запуска продукта есть строка 'testsuite name="Синтаксическая проверка конфигурации"'

Сценарий: Синтаксическая проверка временной файловой базы с результатами в формате JUnit с группировкой
Expand All @@ -54,12 +54,12 @@
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication" для команды "oscript"
Когда Я выполняю команду "oscript"
# И Я сообщаю вывод команды "oscript"
И Код возврата команды "oscript" равен 0
И Файл "junit.xml" содержит
"""
<testsuite name="CheckConfig.base">
"""
И Файл "junit.xml" содержит 'status="passed"'
И Код возврата команды "oscript" равен 0
# Тогда в лог-файле запуска продукта есть строка 'testsuite name="Синтаксическая проверка конфигурации"'

Сценарий: Синтаксическая проверка базы с ошибками с результатами в формате JUnit с группировкой
Expand All @@ -76,6 +76,7 @@
И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript"
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication" для команды "oscript"
Когда Я выполняю команду "oscript"
И Код возврата равен 1
И файл "junit.xml" существует
И Файл "junit.xml" содержит
"""
Expand All @@ -96,6 +97,7 @@
И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript"
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication" для команды "oscript"
Когда Я выполняю команду "oscript"
И Код возврата равен 1
И файл "junit.xml" существует
И Файл "junit.xml" содержит
"""
Expand All @@ -114,14 +116,15 @@
И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript"
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication -EmptyHandlers" для команды "oscript"
Когда Я выполняю команду "oscript"
И Код возврата равен 0
И файл "junit.xml" существует
И Файл "junit.xml" содержит
"""
<testsuite name="CheckConfig.base">
"""
И Файл "junit.xml" содержит 'status="passed"'

Сценарий: Синтаксическая проверка временной файловой базы с указанием имени тестового набора
Сценарий: Синтаксическая проверка временной файловой базы с указанием имени тестового набора для JUnit
# Допустим я включаю отладку лога с именем "oscript.app.vanessa-runner"
Допустим Я очищаю параметры команды "oscript" в контексте

Expand All @@ -132,6 +135,7 @@
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication" для команды "oscript"
Когда Я выполняю команду "oscript"
# И Я сообщаю вывод команды "oscript"
И Код возврата равен 0
И Файл "junit.xml" содержит
"""
<testsuite name="CheckConfig.custom">
Expand All @@ -140,3 +144,46 @@
И Код возврата команды "oscript" равен 0
# Тогда в лог-файле запуска продукта есть строка 'testsuite name="Синтаксическая проверка конфигурации"'

Сценарий: Синтаксическая проверка временной файловой базы с несуществующего каталога для JUnit
# Допустим я включаю отладку лога с именем "oscript.app.vanessa-runner"
Допустим Я очищаю параметры команды "oscript" в контексте

Когда Я добавляю параметр "<КаталогПроекта>/src/main.os syntax-check" для команды "oscript"
И Я добавляю параметр "--junitpath out/junit.xml" для команды "oscript"
И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript"
И Я добавляю параметр "--testsuitename custom" для команды "oscript"
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication" для команды "oscript"
Когда Я выполняю команду "oscript"
# И Я сообщаю вывод команды "oscript"
И Код возврата равен 0
И Файл "out/junit.xml" содержит
"""
<testsuite name="CheckConfig.custom">
"""
И Файл "out/junit.xml" содержит 'status="passed"'
И Код возврата команды "oscript" равен 0
# Тогда в лог-файле запуска продукта есть строка 'testsuite name="Синтаксическая проверка конфигурации"'

Сценарий: Синтаксическая проверка базы с ошибками с результатами в формате Allure2 во вложенном каталоге
# Допустим я включаю отладку лога с именем "oscript.app.vanessa-runner"
# Допустим я включаю полную отладку логов пакетов OneScript
Допустим Я очищаю параметры команды "oscript" в контексте

И Я копирую каталог "cfbad" из каталога "tests/fixtures" проекта в рабочий каталог
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os init-dev --src ./cfbad --nocacheuse --ibconnection /F./build/ib"

Когда Я очищаю параметры команды "oscript" в контексте

Когда Я добавляю параметр "<КаталогПроекта>/src/main.os syntax-check" для команды "oscript"
И Я добавляю параметр "--allure-results2 out-my/allure-my" для команды "oscript"
И Я добавляю параметр "--ibconnection /Fbuild/ib" для команды "oscript"
И Я добавляю параметр "--mode -ThinClient -WebClient -Server -ExternalConnection -ThickClientOrdinaryApplication" для команды "oscript"
Когда Я выполняю команду "oscript"
# И Я показываю вывод команды
И Код возврата равен 1
И Вывод команды "oscript" содержит
| МодульУправляемогоПриложения(2,13)}: Переменная не определена (Итина) |
| Неопознанный оператор |
| {Справочник.Справочник1.МодульОбъекта(2,10)}: Неопознанный оператор |
И каталог "out-my/allure-my" существует
И файл "out-my/allure-my/*-result.json" существует
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
.ЗависитОт("cmdline", "1.0.0")
.ЗависитОт("tempfiles", "0.2.2")
.ЗависитОт("asserts", "1.2.0")
.ЗависитОт("v8runner", "1.1.3")
.ЗависитОт("v8runner", "1.4.0")
.ЗависитОт("strings", "0.4.1")
.ЗависитОт("json", "1.1.0")
.ЗависитОт("1commands", "1.3.5")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,21 +85,37 @@
ПутьОтчетаВФорматеJUnitxml = ПараметрыКоманды["--junitpath"];
Если ПутьОтчетаВФорматеJUnitxml = Неопределено Тогда
ПутьОтчетаВФорматеJUnitxml = "";
Иначе
СообщениеОшибки = "Генерация отчетов тестирования JUnit невозможна, т.к. не существуют каталоги:";
МассивПутей = Новый Массив;
МассивПутей.Добавить(ПутьОтчетаВФорматеJUnitxml);
ОбщиеМетоды.ОбеспечитьСуществованиеРодительскихКаталоговДляПутей(МассивПутей, СообщениеОшибки);
КонецЕсли;

МассивПутейАллюр = Новый Массив;

ПутьОтчетаВФорматеAllure = ПараметрыКоманды["--allure-results"];
Если ПутьОтчетаВФорматеAllure = Неопределено Тогда
ПутьОтчетаВФорматеAllure = "";
Иначе
МассивПутейАллюр.Добавить(ПутьОтчетаВФорматеAllure);
КонецЕсли;

ПутьОтчетаВФорматеAllure2 = ПараметрыКоманды["--allure-results2"];
Если ПутьОтчетаВФорматеAllure2 = Неопределено Тогда
ПутьОтчетаВФорматеAllure2 = "";
Иначе
МассивПутейАллюр.Добавить(ПутьОтчетаВФорматеAllure2);
КонецЕсли;

СохранятьОтчетВФайл = ЗначениеЗаполнено(ПутьОтчетаВФорматеJUnitxml)
ИЛИ ЗначениеЗаполнено(ПутьОтчетаВФорматеAllure)
ИЛИ ЗначениеЗаполнено(ПутьОтчетаВФорматеAllure2);

Если СохранятьОтчетВФайл И ЗначениеЗаполнено(МассивПутейАллюр) Тогда
СообщениеОшибки = "Генерация отчетов тестирования Allure невозможна, т.к. не существуют каталоги:";
ОбщиеМетоды.ОбеспечитьСуществованиеКаталогов(МассивПутейАллюр, СообщениеОшибки);
КонецЕсли;

ИмяТестовогоНабора = ПараметрыКоманды["--testsuitename"];
Если ИмяТестовогоНабора = Неопределено Тогда
Expand Down
36 changes: 36 additions & 0 deletions src/Модули/ОбщиеМетоды.os
Original file line number Diff line number Diff line change
Expand Up @@ -367,5 +367,41 @@
// Возврат ОбъединитьПути(ОбщиеМетоды.КаталогПроекта(), "..", "add");
КонецФункции

Процедура ОбеспечитьСуществованиеКаталогов(Знач НаборПутей, Знач СообщениеОшибки) Экспорт
ОбеспечитьСуществованиеКаталоговДляПутей(Ложь, НаборПутей, СообщениеОшибки);
КонецПроцедуры

Процедура ОбеспечитьСуществованиеРодительскихКаталоговДляПутей(Знач НаборПутей, Знач СообщениеОшибки) Экспорт
ОбеспечитьСуществованиеКаталоговДляПутей(Истина, НаборПутей, СообщениеОшибки);
КонецПроцедуры

Процедура ОбеспечитьСуществованиеКаталоговДляПутей(Знач ПроверятьРодителя, Знач НаборПутей, Знач СообщениеОшибки)
ЕстьОшибка = Ложь;
Для каждого Путь Из НаборПутей Цикл
Лог.Отладка("Проверяю путь <%1>", Путь);
Файл = Новый Файл(Путь);
Если ПроверятьРодителя Тогда
НужныйПуть = Файл.Путь;
Если ПустаяСтрока(НужныйПуть) Тогда
Возврат;
КонецЕсли;
Иначе
НужныйПуть = Файл.ПолноеИмя;
КонецЕсли;
Лог.Отладка("Определили проверяемый путь <%1>", НужныйПуть);
ОбъектКаталог = Новый Файл(НужныйПуть);

ФС.ОбеспечитьКаталог(ОбъектКаталог.ПолноеИмя);

Если Не ОбъектКаталог.Существует() Тогда
ЕстьОшибка = Истина;
СообщениеОшибки = СтрШаблон("%1 %2", СообщениеОшибки, ОбъектКаталог.ПолноеИмя);
КонецЕсли;
КонецЦикла;
Если ЕстьОшибка Тогда
ВызватьИсключение СообщениеОшибки;
КонецЕсли;
КонецПроцедуры

// из-за особенностей загрузки модуль ОбщиеМетоды грузится раньше ПараметрыСистемы,
//поэтому сразу в конце кода модуля использовать ПараметрыСистемы нельзя
17 changes: 0 additions & 17 deletions tests/fixtures/cfbad/ConfigDumpInfo.xml

This file was deleted.

0 comments on commit 5f1e12d

Please sign in to comment.