Skip to content

Commit

Permalink
Merge branch 'release/1.7.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Apr 30, 2019
2 parents a53e332 + b2f5352 commit b42e0c0
Show file tree
Hide file tree
Showing 6 changed files with 243 additions and 11 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
tests/tests.xml
*.ospx
.vscode/launch.json
tests.xml
2 changes: 1 addition & 1 deletion src/Модули/Константы_1testrunner.os
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

///////////////////////////////////////////////////////////////

ВерсияПродукта = "1.6.0";
ВерсияПродукта = "1.7.0";
90 changes: 90 additions & 0 deletions tasks/test.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#Использовать ".."

Функция ПрогнатьТесты()

Тестер = Новый Тестер;

ПутьКТестам = "tests";
ПутьКОтчетуJUnit = ".";

ПутьКОтчетуJUnit = Новый Файл(ПутьКОтчетуJUnit).ПолноеИмя;

РезультатТестирования = Тестер.ТестироватьКаталог(
Новый Файл(ПутьКТестам),
Новый Файл(ПутьКОтчетуJUnit)
);

Успешно = РезультатТестирования = 0;

Возврат Успешно;
КонецФункции // ПрогнатьТесты()

Функция ПрогнатьФичи(Знач ПутьФич = "features", Знач ПутьОтчетаJUnit = "./bdd-log.xml")

КаталогФич = ОбъединитьПути(".", ПутьФич);

Файл_КаталогФич = Новый Файл(КаталогФич);

ИсполнительБДД = Новый ИсполнительБДД;
РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич);
ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);

СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся;
Если РезультатыВыполнения.Строки.Количество() > 0 Тогда

СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);

ИсполнительБДД.ВывестиИтоговыеРезультатыВыполнения(РезультатыВыполнения, Файл_КаталогФич.ЭтоКаталог());
КонецЕсли;

ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit);

Сообщить(СтрШаблон("Результат прогона фич <%1>. Путь %2
|", ИтоговыйРезультатВыполнения, ПутьФич));

Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался;
КонецФункции // ПрогнатьФичи()

// основной код

ТекКаталог = ТекущийКаталог();

Попытка
ТестыПрошли = ПрогнатьТесты();
Исключение
ТестыПрошли = Ложь;
Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
|%1
|%2", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ОписаниеОшибки()));
КонецПопытки;

УстановитьТекущийКаталог(ТекКаталог);

// Попытка
// ФичиПрошли = ПрогнатьФичи("features/core");
// Исключение
// ФичиПрошли = Ложь;
// Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно
// |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
// КонецПопытки;

// Попытка
// БиблиотечныеФичиПрошли = ПрогнатьФичи("features/lib", "bdd-lib.xml");
// Исключение
// БиблиотечныеФичиПрошли = Ложь;
// Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно
// |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
// КонецПопытки;

Сообщить(СтрШаблон("Результат прогона тестов <%1>
|", ТестыПрошли));
// Сообщить(СтрШаблон("Результат прогона основных фич <%1>
// |", ФичиПрошли));
// Сообщить(СтрШаблон("Результат прогона библиотечных фич <%1>
// |", БиблиотечныеФичиПрошли));

// Если НЕ ТестыПрошли Или НЕ ФичиПрошли Или НЕ БиблиотечныеФичиПрошли Тогда
Если НЕ ТестыПрошли Тогда
ВызватьИсключение "Тестирование завершилось неудачно!";
КонецЕсли;
113 changes: 105 additions & 8 deletions testrunner.os
Original file line number Diff line number Diff line change
Expand Up @@ -419,8 +419,8 @@

Для Сч = 0 По НаборТестов.Количество() - 1 Цикл
ОписаниеТеста = НаборТестов[Сч];
НовыйРезультатТестирования = ВыполнитьТест(ОписаниеТеста, Сч);
РезультатТестирования = ЗапомнитьСамоеХудшееСостояние(РезультатТестирования, НовыйРезультатТестирования);
НовыйРезультатТестирования = ВыполнитьПолныйТест(ОписаниеТеста, Сч);
РезультатТестирования = ЗапомнитьСамоеХудшееСостояние(РезультатТестирования, НовыйРезультатТестирования);
КонецЦикла;

ВывестиЛогТестирования();
Expand Down Expand Up @@ -685,7 +685,7 @@
Тест = ОписаниеТеста.ТестОбъект;
ИмяМетода = ОписаниеТеста.ИмяМетода;

Успешно = ВыполнитьПроцедуруТестовогоСлучая(Делегаты.Создать(Тест, "ПередЗапускомТеста"), ИмяМетода, ОписаниеТеста);
Успешно = Истина;
Если Не Успешно Тогда
Рез = ЗначенияСостоянияТестов.Сломался;
Иначе
Expand Down Expand Up @@ -718,15 +718,63 @@
КонецЕсли;
КонецЕсли;

Успешно = ВыполнитьПроцедуруТестовогоСлучая(Делегаты.Создать(Тест, "ПослеЗапускаТеста"), ИмяМетода, ОписаниеТеста);
Если Не Успешно Тогда
Рез = ЗначенияСостоянияТестов.Сломался;
КонецЕсли;
КонецЕсли;

Возврат Рез;
КонецФункции

Функция ВыполнитьПередТестом(ОписаниеТеста)

Возврат ВыполнитьПоАннотации(ОписаниеТеста, "перед", "ПередЗапускомТеста");

КонецФункции

Функция ВыполнитьПослеТеста(ОписаниеТеста)

Возврат ВыполнитьПоАннотации(ОписаниеТеста, "после", "ПослеЗапускаТеста");

КонецФункции

Функция ВыполнитьПоАннотации(ОписаниеТеста, СтрокаАннотации, ДополнительныйШаг)

ТестыПеред = Новый Массив;
ТестыПеред.Добавить(ДополнительныйШаг);

ТестыПеред = ПрочитатьТестовыеСлучаиОбъектаИзАннотаций(ОписаниеТеста.ТестОбъект, СтрокаАннотации);

Если ТестыПеред = Неопределено Тогда
ТестыПеред = Новый Массив;
ТестыПеред.Добавить(ДополнительныйШаг);
КонецЕсли;

Рез = ЗначенияСостоянияТестов.Прошел;
Для Каждого ШагПередЗапуском Из ТестыПеред Цикл

Успешно = ВыполнитьПроцедуруТестовогоСлучая(Делегаты.Создать(ОписаниеТеста.ТестОбъект, ШагПередЗапуском), ОписаниеТеста.ИмяМетода, ОписаниеТеста);
Если Не Успешно Тогда
Рез = ЗначенияСостоянияТестов.Сломался;
КонецЕсли;

КонецЦикла;

Возврат Рез;

КонецФункции

Функция ВыполнитьПолныйТест(ОписаниеТеста, НомерТеста)

НовыйРезультатТестирования = ВыполнитьПередТестом(ОписаниеТеста);
РезультатТестирования = ЗапомнитьСамоеХудшееСостояние(РезультатТестирования, НовыйРезультатТестирования);

НовыйРезультатТестирования = ВыполнитьТест(ОписаниеТеста, НомерТеста);
РезультатТестирования = ЗапомнитьСамоеХудшееСостояние(РезультатТестирования, НовыйРезультатТестирования);

НовыйРезультатТестирования = ВыполнитьПослеТеста(ОписаниеТеста);
РезультатТестирования = ЗапомнитьСамоеХудшееСостояние(РезультатТестирования, НовыйРезультатТестирования);

Возврат РезультатТестирования;
КонецФункции

Функция ВывестиОшибкуВыполненияТеста(СостояниеВыполнения, ПредставлениеОшибки, ОписаниеТеста, текстОшибки, ИнфоОшибки)
ИмяМетода = ОписаниеТеста.ИмяМетода;

Expand Down Expand Up @@ -1079,7 +1127,9 @@
Возврат МассивТестовыхСлучаев;
КонецЕсли;

Возврат Неопределено;
МассивТестовыхСлучаев = ПрочитатьТестовыеСлучаиОбъектаИзАннотаций(ТестОбъект, "тест");

Возврат МассивТестовыхСлучаев;
КонецФункции

// Получает список тестовых случаев вызовом метода с предопределенным именем
Expand Down Expand Up @@ -1116,6 +1166,53 @@
Возврат МассивТестовыхСлучаев;
КонецФункции

// Получает список тестовых случаев получая методы с аннотацией &тест
//
// Параметры:
// ТестОбъект - Объект - Объект тестового сценария
//
// МенеджерТестирования - Объект - Объект менеджера тестирования
//
// Возвращаемое значение:
// Массив - массив строк-имен методов тестового сценария
//
Функция ПрочитатьТестовыеСлучаиОбъектаИзАннотаций(Знач ТестОбъект, Аннотация)

ТаблицаМетодов = Рефлектор.ПолучитьТаблицуМетодов(ТестОбъект);
Если ТаблицаМетодов.Колонки.Найти("Аннотации") = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;

МассивТестовыхСлучаев = Неопределено;
ВремМассивТестовыхСлучаев = Новый Массив;
Для Каждого ТестовыйСлучай Из ТаблицаМетодов Цикл
ДополнитьМассивПоАннотациям(ВремМассивТестовыхСлучаев, ТестовыйСлучай, Аннотация);
КонецЦикла;

Если ВремМассивТестовыхСлучаев.Количество() > 0 Тогда
МассивТестовыхСлучаев = ВремМассивТестовыхСлучаев;
КонецЕсли;
ВремМассивТестовыхСлучаев = Неопределено;

Возврат МассивТестовыхСлучаев;
КонецФункции

Процедура ДополнитьМассивПоАннотациям(ВхМассив, ТестовыйСлучай, ИмяАннотация)

Если ТестовыйСлучай.Аннотации = Неопределено Тогда
Возврат;
КонецЕсли;

Для Каждого Аннотация Из ТестовыйСлучай.Аннотации Цикл

Если СтрНайти(Нрег(Аннотация.Имя), ИмяАннотация) > 0 Тогда
ВхМассив.Добавить(ТестовыйСлучай.Имя);
КонецЕсли;

КонецЦикла;

КонецПроцедуры

Процедура Инициализация()

Лог = Логирование.ПолучитьЛог(ИмяЛога());
Expand Down
41 changes: 41 additions & 0 deletions tests/fixtures/annotation.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#Использовать asserts

Перем юТест;
Перем Счетчик;


&Перед
Процедура ПередЗапускомТеста() Экспорт
Счетчик = Новый Массив;
КонецПроцедуры

&Перед
Процедура ПередЗапускомТестаПервыйРаз() Экспорт
Счетчик.Добавить("1");
КонецПроцедуры

&ПереД
Процедура ПередЗапускомТестаВторойРаз() Экспорт
Счетчик.Добавить("2");
КонецПроцедуры

&После
Процедура ПослеЗапускаТестаВторойРаз() Экспорт
Сообщить("ТестОкончил");
КонецПроцедуры

&Тест
Процедура ТестДолжен_ПроверитьВерсию() Экспорт
Утверждения.ПроверитьРавенство("0.1", Версия());
Ожидаем.Что(Счетчик.Количество()).Равно(2);
КонецПроцедуры


&тесТ
Процедура ТестДолжен_ПроверитьВерсиюЕщеРаз() Экспорт
Утверждения.ПроверитьРавенство("0.1", Версия());
КонецПроцедуры

Функция Версия()
Возврат "0.1";
КонецФункции
7 changes: 5 additions & 2 deletions tests/package-check.os
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
Константы = ЗагрузитьСценарий("src\Модули\Константы_1testrunner.os");
ИмяСоздаваемогоПакета = СтрШаблон("%1-%2.ospx", ИмяПакета, Константы.ВерсияПродукта);
ИмяВременногоКаталога = ВременныеФайлы.СоздатьКаталог();
Лог.Отладка("ИмяВременногоКаталога %1", ИмяВременногоКаталога);

СобратьПакетВКаталоге(ИмяВременногоКаталога);

Expand All @@ -48,7 +49,7 @@
КонецПроцедуры

Процедура СобратьПакетВКаталоге(Знач ИмяВременногоКаталога)
КодВозврата = ВыполнитьКоманду(СтрШаблон("call opm build %1 -out %2", ТекущийКаталог(), ИмяВременногоКаталога));
КодВозврата = ВыполнитьКоманду(СтрШаблон("call opm build --out %2 %1", ТекущийКаталог(), ИмяВременногоКаталога));
Ожидаем.Что(КодВозврата, "СобратьПакетВКаталоге КодВозврата").Равно(0);
КонецПроцедуры

Expand Down Expand Up @@ -93,14 +94,16 @@
КонецПроцедуры

Функция ВыполнитьКоманду(Знач СтрокаКоманды, ТекстВывода = "")
Лог.Отладка("СтрокаКоманды %1", СтрокаКоманды);

Команда = Новый Команда;

Команда.УстановитьСтрокуЗапуска(СтрокаКоманды);

КодВозврата = Команда.Исполнить();
ТекстВывода = Команда.ПолучитьВывод();

Если КодВозврата <> 0 Тогда
Если КодВозврата <> 0 Или Лог.Уровень() = УровниЛога.Отладка Тогда
Лог.Информация(ТекстВывода);
КонецЕсли;
Возврат КодВозврата;
Expand Down

0 comments on commit b42e0c0

Please sign in to comment.