Skip to content

Commit 4405ebe

Browse files
committed
Добавлены зависимости и поддержка сбора покрытия в тестировании.
1 parent ad81829 commit 4405ebe

File tree

4 files changed

+120
-2
lines changed

4 files changed

+120
-2
lines changed

packagedef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@
132132
.ЗависитОт("v8storage", "0.6.5")
133133
.ЗависитОт("v8unpack", "1.0.8")
134134
.ЗависитОт("gitrunner", "1.7.1")
135+
.ЗависитОт("coveragebsl", "0.5.0")
135136

136137
.РазработкаЗависитОт("1bdd", "1.14.0")
137138
.РазработкаЗависитОт("1testrunner", "1.8.0")

src/Классы/КомандаТестирование_xUnitFor1C.os

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
#Использовать asserts
1616
#Использовать fs
17+
#Использовать coveragebsl
1718

1819
#Область ОписаниеПеременных
1920

@@ -98,6 +99,9 @@
9899
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--ibsrv",
99100
"Запуск команды с использованием утилиты ibsrv");
100101

102+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--coverage-path",
103+
"Путь к файлу для записи сбора покрытия");
104+
101105
Парсер.ДобавитьКоманду(ОписаниеКоманды);
102106

103107
КонецПроцедуры
@@ -113,6 +117,7 @@
113117
Лог = ОбщиеМетоды.ЛогКоманды(ДополнительныеПараметры);
114118

115119
ПараметрыАвтономногоСервера = ОбщиеМетоды.НовыеПараметрыАвтономногоСервера();
120+
УстановитьРежимОтладкиIbsrv(ПараметрыАвтономногоСервера, ПараметрыКоманды);
116121

117122
Действие = Новый Действие(ЭтотОбъект, "ВыполнитьТестирование");
118123
Возврат ОбщиеМетоды.ВыполнитьКомандуСУчетомIbsrv(ПараметрыКоманды, Действие, ПараметрыАвтономногоСервера);
@@ -149,6 +154,23 @@
149154
ПолныйПуть = ОбщиеМетоды.ПолныйПуть(ПолныйПуть);
150155
КонецЕсли;
151156

157+
ДополнительныеПараметры = ПараметрыКоманды["--additional"];
158+
Если ДанныеПодключения.Свойство("АдресОтладки") Тогда
159+
160+
СписокПараметров = Новый Массив;
161+
СписокПараметров.Добавить(ПараметрыКоманды["--additional"]);
162+
СписокПараметров.Добавить("/DEBUG -http -attach");
163+
СписокПараметров.Добавить(СтрШаблон("/DEBUGGERURL %1", ДанныеПодключения.АдресОтладки));
164+
165+
ДополнительныеПараметры = СтрСоединить(СписокПараметров, " ");
166+
167+
СессияПокрытия = НачатьСборПокрытия(ДанныеПодключения);
168+
169+
Иначе
170+
ДополнительныеПараметры = ПараметрыКоманды["--additional"];
171+
СессияПокрытия = Неопределено;
172+
КонецЕсли;
173+
152174
Попытка
153175
ЗапуститьТестироватьЮнит(
154176
ПолныйПуть,
@@ -158,18 +180,21 @@
158180
ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--pathxunit"]), ЗапускатьТолстыйКлиент,
159181
ОбщиеМетоды.ПолныйПуть(ПараметрыКоманды["--xddConfig"]),
160182
ОжидатьЗавершения,
161-
ПараметрыКоманды["--additional"],
183+
ДополнительныеПараметры,
162184
ПараметрыКоманды["--config-tests"],
163185
НастройкиТестКлиента,
164186
ПараметрыКоманды["--xdddebug"],
165187
Не ПараметрыКоманды["--no-shutdown"]
166188
);
167189
Исключение
168190
МенеджерКонфигуратора.Деструктор();
191+
ЗавершитьСборПокрытия(СессияПокрытия, ПараметрыКоманды["--coverage-path"]);
192+
169193
ВызватьИсключение;
170194
КонецПопытки;
171195

172196
МенеджерКонфигуратора.Деструктор();
197+
ЗавершитьСборПокрытия(СессияПокрытия, ПараметрыКоманды["--coverage-path"]);
173198

174199
Возврат МенеджерКомандПриложения.РезультатыКоманд().Успех;
175200
КонецФункции
@@ -379,4 +404,56 @@
379404
КонецЕсли;
380405
КонецПроцедуры
381406

407+
Процедура УстановитьРежимОтладкиIbsrv(ПараметрыАвтономногоСервера, ПараметрыКоманды)
408+
409+
ИспользоватьIbsrv = ПараметрыКоманды["--ibsrv"];
410+
ФайлСбораПокрытия = ПараметрыКоманды["--coverage-path"];
411+
Если ЗначениеЗаполнено(ФайлСбораПокрытия) И Не ИспользоватьIbsrv Тогда
412+
Лог.Предупреждение("Сбор покрытия реализован только при использовании ibsrv!");
413+
Возврат;
414+
КонецЕсли;
415+
416+
Если ЗначениеЗаполнено(ФайлСбораПокрытия) Тогда
417+
Лог.Отладка("Установлен режим использования отладки для ibsrv");
418+
ПараметрыАвтономногоСервера.ИспользоватьОтладку = Истина;
419+
КонецЕсли;
420+
421+
КонецПроцедуры
422+
423+
Функция НачатьСборПокрытия(ДанныеПодключения)
424+
425+
ИмяИнформационнойБазы = "DefAlias";
426+
ПарольОтладчика = "";
427+
428+
МенеджерПокрытия = Новый МенеджерПокрытия(ДанныеПодключения.АдресОтладки);
429+
МенеджерПокрытия.ПроверитьСоединение();
430+
СессияПокрытия = МенеджерПокрытия.НоваяСессияПокрытия(ИмяИнформационнойБазы);
431+
СессияПокрытия.Подключить(ПарольОтладчика);
432+
СессияПокрытия.НачатьСборПокрытия();
433+
434+
Возврат СессияПокрытия;
435+
436+
КонецФункции
437+
438+
Процедура ЗавершитьСборПокрытия(СессияПокрытия, ФайлСбораПокрытия)
439+
440+
Если СессияПокрытия = Неопределено Тогда
441+
Возврат;
442+
КонецЕсли;
443+
444+
ДанныеПокрытия = СессияПокрытия.ЗавершитьСборПокрытия();
445+
СессияПокрытия.Отключить();
446+
447+
ЗаписаноСекунд = ДанныеПокрытия.ОбщаяПродолжительность/1000000;
448+
449+
Лог.Информация("Записанное время в покрытии: %1 секунд", ЗаписаноСекунд);
450+
Лог.Информация("Количество модулей в покрытии: %1", ДанныеПокрытия.Данные.Количество());
451+
452+
ЗаписьJSON = Новый ЗаписьJSON();
453+
ЗаписьJSON.ОткрытьФайл(ФайлСбораПокрытия);
454+
ДанныеПокрытия.СериализоватьJSON(ЗаписьJSON);
455+
ЗаписьJSON.Закрыть();
456+
457+
КонецПроцедуры
458+
382459
#КонецОбласти

src/Классы/МенеджерIbsrv.os

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@
130130
Возврат СтрШаблон("/WS http://localhost:%1/", XMLСтрока(ПортHttpДоступа));
131131
КонецФункции
132132

133+
Функция АдресОтладки()
134+
Возврат СтрШаблон("http://localhost:%1", XMLСтрока(ПортОтладки));
135+
КонецФункции
136+
133137
Процедура УстановитьДанныеПодключения(ПараметрыКоманды)
134138

135139
ДанныеПодключения = ПараметрыКоманды["ДанныеПодключения"];
@@ -145,6 +149,12 @@
145149
НовыеДанныеПодключения.СтрокаПодключения = СтрокаСоединения;
146150
Лог.Отладка("Установлена строка подключения к ИБ: %1", СтрокаСоединения);
147151

152+
Если ИспользоватьОтладку Тогда
153+
АдресОтладки = АдресОтладки();
154+
НовыеДанныеПодключения.Вставить("АдресОтладки", АдресОтладки);
155+
Лог.Отладка("Установлен адрес отладки: %1", АдресОтладки);
156+
КонецЕсли;
157+
148158
ПараметрыКоманды["ДанныеПодключения"] = НовыеДанныеПодключения;
149159

150160
КонецПроцедуры
@@ -237,7 +247,7 @@
237247

238248
Процедура СформироватьФайлКонфигурацииАС(СдвигПортов)
239249

240-
СетевойИнтерфейс = "any";
250+
СетевойИнтерфейс = "localhost";
241251
ИмяИБ = "DefAlias";
242252
РазрешитьВыдачуЛицензий = Истина;
243253
РазрешитьРегламентныеЗадания = Ложь;

tests/xunits/xunit.os

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,36 @@
7171

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

74+
&Тест
75+
Процедура ТестДолжен_ВыполнитьТестированиеПроектаCЗамеромПокрытияIbsrv() Экспорт
76+
// Дано
77+
ИмяРасширения = "ТестOK";
78+
79+
Исполнитель = Новый Тест_ИсполнительКоманд("xunit");
80+
81+
КаталогSrcCf = Исполнитель.ПутьТестовыхДанных("cf");
82+
Исполнитель.УстановитьКонтекстИБИзФайловКонфигурации(КаталогSrcCf);
83+
Исполнитель.ОбновитьКонфигурациюБазыДанных();
84+
85+
КаталогSrc = Исполнитель.ПутьТестовыхДанных("xdd_cfe_OK");
86+
Исполнитель.СоздатьРасширениеИзФайлов(ИмяРасширения, КаталогSrc);
87+
Исполнитель.ОбновитьКонфигурациюБазыДанных(ИмяРасширения);
88+
89+
Исполнитель.ДобавитьПараметр(ИмяРасширения);
90+
Исполнитель.ДобавитьФлаг("--config-tests");
91+
Исполнитель.ДобавитьПараметр("--xddExitCodePath", "./exitCode.txt");
92+
Исполнитель.ДобавитьФлаг("--ibsrv");
93+
Исполнитель.ДобавитьПараметр("--coverage-path", "./coverage.json");
94+
95+
// Когда
96+
Исполнитель.ВыполнитьКоманду();
97+
98+
// Тогда
99+
Исполнитель.ОжидаемЧтоВыводСодержит("Используется ibsrv");
100+
Исполнитель.ОжидаемЧтоВыводСодержит("Все тесты выполнены!");
101+
102+
КонецПроцедуры
103+
74104
#КонецОбласти
75105

76106
#Область ОбработчикиСобытий

0 commit comments

Comments
 (0)