diff --git "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" index 67c09862f0..5570d931be 100644 --- "a/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" +++ "b/VanessaAutomation/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Ext/Form/Module.bsl" @@ -768,6 +768,9 @@ &НаКлиенте Перем ЭтоМенеджерТестирования; +&НаКлиенте +Перем НастройкиTeamCity; + #КонецОбласти #КонецОбласти @@ -20937,7 +20940,7 @@ ЗаписатьЛогВЖРОшибка("VanessaAutomation.ПрикладыватьКОтчетуAllureДанныеОЗначенияхПеременных", ОписаниеОшибки()); КонецПопытки; КонецЕсли; - + #КонецЕсли КонецПроцедуры @@ -31570,9 +31573,13 @@ КонецЕсли; - КонецЕсли; - + КонецЕсли; + КонецЕсли; + + Если НастройкиTeamCity.Используется Тогда + ЗавершитьТестTeamCity(СтрокаСценария, РезультатПрохожденияТестовСценария); + КонецЕсли; Если Объект.ИспользоватьРедакторVanessaEditor Тогда ЭкземплярVanessaEditor = ПолучитьVanessaEditor(); @@ -33399,8 +33406,12 @@ КонецЕсли; Если Объект.ДелатьЛогВыполненияСценариевВЖР Тогда - ЗаписатьЛогВЖРПередВыполнениемСценария(МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Имя); - КонецЕсли; + ЗаписатьЛогВЖРПередВыполнениемСценария(МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].Имя); + КонецЕсли; + + Если НастройкиTeamCity.Используется Тогда + НачатьТестTeamCity(СтрокаСценария); + КонецЕсли; ИмяФичаФайла = ОпределитьИмяФичаФайлаПоСтрокеДерева(СтрокаСценария); Если НЕ СравнитьПутиФайлов(ТекущийИсполняемыйФичаФайл, ИмяФичаФайла) Тогда @@ -33423,7 +33434,7 @@ КонецЕсли; - КонецЕсли; + КонецЕсли; Если Объект.ПодробныйЛогВыполненияСценариев И Объект.ДелатьЛогВыполненияСценариевВТекстовыйФайл Тогда @@ -43522,6 +43533,10 @@ КонецЕсли; НужноОчиститьВременныйКаталогVanessaEditor = Ложь; + НастройкиTeamCity = НастройкиTeamCity(); + НастройкиTeamCity.Используется = ЗначениеПараметраЗапуска("RunFromTeamCity", Ложь); + НастройкиTeamCity.IDПотока = ЗначениеПараметраЗапуска("TeamCityTag", ""); + // Реквизит формы сохраняетс в глобальной переменной, чтобы не сериализоваться глРеквизитТекстStopVideoRec = ПолучитьЗначениеДополнительногоПараметраИУдалить("РеквизитТекстStopVideoRec"); @@ -51633,7 +51648,7 @@ ТаблицаИменНоваяСтрока("ДымовыеТестыТолькоИзмененныеОтностительноКонфигурацииПоставщика", "SmokeTestsOnlyChangedRelativeToVendorConfiguration", ТаблицаИмен, НижнийРегистр); ТаблицаИменНоваяСтрока("ДымовыеТестыИмяКонфигурацииПоставщика", "SmokeTestsVendorConfigurationName", ТаблицаИмен, НижнийРегистр); ТаблицаИменНоваяСтрока("ДымовыеТестыПутьКФайлуНастроекСценариев", "SmokeTestsPathToFileSettingsScripts", ТаблицаИмен, НижнийРегистр); - + // Удалить. Обратная совместимость ТаблицаИменНоваяСтрока("КаталогOutputAllure", "allurepath", ТаблицаИмен, НижнийРегистр); ТаблицаИменНоваяСтрока("КаталогOutputAllureБазовый", "allurepathbase", ТаблицаИмен, НижнийРегистр); @@ -56001,4 +56016,117 @@ КонецФункции +#КонецОбласти + +#Область TeamCity + +&НаКлиенте +Функция НастройкиTeamCity() + + Структура = Новый Структура(); + + Структура.Вставить("Используется", Ложь); + Структура.Вставить("ЭтоПервыйЗапуск", Истина); + Структура.Вставить("IDПотока", ""); + Структура.Вставить("ТекущийФичаФайл", ""); + Структура.Вставить("ТекущийСценарий", ""); + Структура.Вставить("ДлительностьТеста", 0); + Структура.Вставить("ТекстОшибки", ""); + + Шаблоны = Новый Структура; + Шаблоны.Вставить("НачалоГруппы", "##teamcity[flowStarted flowId='$Tag$']"); + Шаблоны.Вставить("ОкончаниеГруппы", "##teamcity[flowFinished flowId='$Tag$']"); + + Шаблоны.Вставить("НачалоФичаФайла", "##teamcity[testSuiteStarted name='$Tag$.$CurrentFeatureFile$' flowId='$Tag$']"); + Шаблоны.Вставить("ОкончаниеФичаФайла", "##teamcity[testSuiteFinished name='$Tag$.$CurrentFeatureFile$' flowId='$Tag$']"); + + Шаблоны.Вставить("НачалоТеста", "##teamcity[testStarted name='$Tag$.$CurrentTest$' flowId='$Tag$']"); + Шаблоны.Вставить("ОшибкаТестаНаСравнение", "##teamcity[testFailed type='comparisonFailure' name='$Tag$.$CurrentTest$' details='$Details$' flowId='$Tag$' expected='$expected$' actual='$actual$']"); + Шаблоны.Вставить("ОшибкаТеста", "##teamcity[testFailed name='$Tag$.$CurrentTest$' details='$Details$' flowId='$Tag$']"); + Шаблоны.Вставить("ВыводСообщенияВГруппу", "##teamcity[testStdOut name='$Tag$.$CurrentTest$' out='$line$' flowId='$Tag$']"); + Шаблоны.Вставить("ОкончаниеТеста", "##teamcity[testFinished name='$Tag$.$CurrentTest$' duration='$TotalMilliseconds$' flowId='$Tag$']"); + + Структура.Вставить("Шаблоны", Шаблоны); + Возврат Структура; +КонецФункции + +&НаКлиенте +Процедура НачатьТестTeamCity(СтрокаСценария) + + Файл = Новый Файл(МассивСценариевДляВыполнения[ТекИД_СценарияВМассиве].ПолныйПутьКФиче); + ТекущийФичаФайл = Файл.ИмяБезРасширения; + Если НастройкиTeamCity.ЭтоПервыйЗапуск Тогда + НастройкиTeamCity.ЭтоПервыйЗапуск = Ложь; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.НачалоГруппы); + КонецЕсли; + + Если НастройкиTeamCity.ТекущийФичаФайл = "" Тогда + НастройкиTeamCity.ТекущийФичаФайл = ТекущийФичаФайл; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.НачалоФичаФайла); + ИначеЕсли НЕ НастройкиTeamCity.ТекущийФичаФайл = ТекущийФичаФайл Тогда + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеФичаФайла); + НастройкиTeamCity.ТекущийФичаФайл = ТекущийФичаФайл; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.НачалоФичаФайла); + КонецЕсли; + + НастройкиTeamCity.ТекущийСценарий = СтрокаСценария.Имя; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.НачалоТеста); +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьТестTeamCity(СтрокаСценария, РезультатПрохожденияТестовСценария) + Т2 = ТекущаяУниверсальнаяДатаВМиллисекундах(); + НастройкиTeamCity.ДлительностьТеста = РезультатПрохожденияТестовСценария.ВремяОкончания - РезультатПрохожденияТестовСценария.ВремяНачала; + + Если СтрокаСценария.ТекстОшибки = "" Тогда + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеТеста); + Иначе + НастройкиTeamCity.ТекстОшибки = СтрокаСценария.ТекстОшибки; + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОшибкаТеста); + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеТеста); + НастройкиTeamCity.ТекстОшибки = ""; + КонецЕсли; + + НастройкиTeamCity.ДлительностьТеста = 0; + + Если МассивРезультатПрохожденияТестовСценария.Количество() = МассивСценариевДляВыполнения.Количество() Тогда + НастройкиTeamCity.ЭтоПервыйЗапуск = Истина; + + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеФичаФайла); + ВывестиВКонсольTeamCity(НастройкиTeamCity.Шаблоны.ОкончаниеГруппы); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ЭкранированиеСообщенияTeamCity(Стр) + Стр = СтрЗаменить(Стр, "|", "||"); + Стр = СтрЗаменить(Стр, "'", "|'"); + Стр = СтрЗаменить(Стр, "[", "|["); + Стр = СтрЗаменить(Стр, "]", "|]"); + Стр = СтрЗаменить(Стр, Символы.ВК, "|r"); + Стр = СтрЗаменить(Стр, Символы.ПС, "|n"); + Возврат Стр; +КонецФункции + +&НаКлиенте +Функция ПодготовитьСообщениеTeamCity(Знач ТекстСообщения) + + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$Tag$", НастройкиTeamCity.IDПотока); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$CurrentFeatureFile$", ЭкранированиеСообщенияTeamCity(НастройкиTeamCity.ТекущийФичаФайл)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$CurrentTest$", ЭкранированиеСообщенияTeamCity(НастройкиTeamCity.ТекущийСценарий)); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$TotalMilliseconds$", Формат(НастройкиTeamCity.ДлительностьТеста, "ЧГ=")); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "$Details$", ЭкранированиеСообщенияTeamCity(НастройкиTeamCity.ТекстОшибки)); + Возврат ТекстСообщения; + +КонецФункции + +&НаКлиенте +Процедура ВывестиВКонсольTeamCity(Знач Стр) + Стр = ПодготовитьСообщениеTeamCity(Стр); + Если Объект.ИспользоватьКомпонентуVanessaExt И ВнешняяКомпонентаДляСкриншотов <> Неопределено И НЕ ЗапрещеныСинхронныеВызовы Тогда + ВнешняяКомпонентаДляСкриншотов.ВывестиВКонсоль(Стр + Символы.ПС, 866); + КонецЕсли; +КонецПроцедуры + #КонецОбласти