Skip to content

Commit df7d097

Browse files
sfaqerclaude
andcommitted
Проект покрыт собственными тестами: 77 тестов, покрытие src 98.8%
- Новые тестовые наборы: Исполнитель, Фильтры, СостоянияВыполнения, ТестированиеСлужебныйТесты, КонсольноеПриложение, ОшибкиОбнаружения - Вспомогательная библиотека tests/support для вложенных прогонов и фикстуры исполнения (таймаут, вывод, жизненный цикл, ошибки, условия) - Стековый перехват вывода вынесен в ТестированиеСлужебный, вложенные прогоны больше не портят захват вывода друг друга - Исправлено: фильтр -M/--testMethodsNameExclude не исключал методы (итерация шла по включаемым паттернам) - Исправлено: запись деталек падала на ФиксированныйМассив - Версия поднята до 0.3.4 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent c6248d8 commit df7d097

24 files changed

Lines changed: 1673 additions & 19 deletions

.bsl-language-server.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,13 @@
1010
"debugTestArguments": "./src/cli/main.os e --debug 2801 --file %s -m %s",
1111
"getTestsResultPattern": "^[^.]+\\.([^\\s.]+).*$"
1212
}
13+
},
14+
"inlayHint": {
15+
"parameters": {
16+
"methodCall": {
17+
"showDefaultValues": true,
18+
"showParametersWithTheSameName": true
19+
}
20+
}
1321
}
1422
}

packagedef

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@
2020

2121
.ЗависитОт("1commands", "1.5.0")
2222
.ЗависитОт("annotations", "1.6.0")
23-
.ЗависитОт("asserts", "1.6.1")
23+
.ЗависитОт("asserts", "1.6.2")
2424
.ЗависитОт("async", "0.3.0")
25-
.ЗависитОт("autumn", "4.3.12")
26-
.ЗависитОт("autumn-cli", "1.2.0")
25+
.ЗависитОт("autumn", "4.3.13")
26+
.ЗависитОт("autumn-cli", "1.3.0")
2727
.ЗависитОт("autumn-event-publisher", "1.0.1")
28-
.ЗависитОт("autumn-logos", "1.2.3")
29-
.ЗависитОт("collectionos", "0.8.2")
28+
.ЗависитОт("autumn-logos", "1.3.3")
29+
.ЗависитОт("collectionos", "0.8.3")
3030
.ЗависитОт("coverage", "0.7.0")
3131
.ЗависитОт("decorator", "2.0.7")
3232
.ЗависитОт("fs", "1.2.0")
33-
.ЗависитОт("lambdas", "0.3.3")
33+
.ЗависитОт("lambdas", "0.3.4")
3434
.ЗависитОт("logos", "1.7.1")
3535
.ЗависитОт("semver", "1.1.1")
3636
.ЗависитОт("tempfiles", "1.1.1")

src/cli/internal/isolated/Классы/ОписаниеКонсольногоПриложения.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
КонецФункции
1313

1414
Функция ВерсияПриложения() Экспорт
15-
Возврат "0.3.3";
15+
Возврат "0.3.4";
1616
КонецФункции

src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,8 @@
148148
Если ТипЗнч(Деталька.Значение) = Тип("Массив")
149149
Или ТипЗнч(Деталька.Значение) = Тип("ФиксированныйМассив") Тогда
150150

151-
Значение = СтрСоединить(Деталька.Значение, ",");
151+
// СтрСоединить не принимает ФиксированныйМассив
152+
Значение = СтрСоединить(Массивы.Скопировать(Деталька.Значение), ",");
152153

153154
Иначе
154155
Значение = Деталька.Значение;

src/cli/oscript.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
lib.additional=../../oscript_modules

src/core/internal/Классы/АсинхронныйИсполнительТестов.os

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
#Использовать async
22
#Использовать collectionos
3+
#Использовать "../../../shared"
34

45
Перем _Поделка;
5-
Перем _СтандартныйПотокВывода;
6-
Перем _СтандартныйПотокОшибок;
76
Перем _ПубликаторСобытий;
87

98
Процедура Исполнить(ТестПлан) Экспорт
@@ -221,8 +220,7 @@
221220
Причина = NULL;
222221

223222
ПотокВывода = Новый ПотокВПамяти();
224-
Консоль.УстановитьПотокВывода(ПотокВывода);
225-
Консоль.УстановитьПотокОшибок(ПотокВывода);
223+
ТестированиеСлужебный.НачатьПерехватВывода(ПотокВывода);
226224

227225
Попытка
228226
РезультатВыполненияМетода = Обещания.ВыполнитьДелегат(Делегат, Параметры, Истина)
@@ -246,8 +244,7 @@
246244

247245
КонецПопытки;
248246

249-
Консоль.УстановитьПотокВывода(_СтандартныйПотокВывода);
250-
Консоль.УстановитьПотокОшибок(_СтандартныйПотокОшибок);
247+
ТестированиеСлужебный.ЗавершитьПерехватВывода();
251248

252249
Возврат Новый Структура(
253250
"Состояние, Причины, Вывод, РезультатВыполненияМетода",
@@ -432,9 +429,7 @@
432429
&Пластилин Поделка,
433430
&Пластилин ПубликаторСобытий)
434431

435-
_Поделка = Поделка;
436-
_ПубликаторСобытий = ПубликаторСобытий;
437-
_СтандартныйПотокВывода = Консоль.ОткрытьСтандартныйПотокВывода();
438-
_СтандартныйПотокОшибок = Консоль.ОткрытьСтандартныйПотокОшибок();
432+
_Поделка = Поделка;
433+
_ПубликаторСобытий = ПубликаторСобытий;
439434

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

src/core/internal/Классы/ФильтрТестовыеМетоды.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
Если Не _ТестовыеМетодыИсключаемые.Пусто() Тогда
3131

32-
Для каждого РегулярноеВыражение Из _ТестовыеМетодыВключаемые Цикл
32+
Для каждого РегулярноеВыражение Из _ТестовыеМетодыИсключаемые Цикл
3333

3434
Если РегулярноеВыражение.Совпадает(Имя) Тогда
3535
Результат = Истина;

src/shared/Модули/ТестированиеСлужебный.os

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,46 @@
11
#Использовать collectionos
22

3+
Перем СтекПерехватаВывода; // СписокМассив - стек потоков перехвата консольного вывода
4+
Перем _СтандартныйПотокВывода; // Поток - системный stdout, открывается лениво
5+
Перем _СтандартныйПотокОшибок; // Поток - системный stderr, открывается лениво
6+
7+
// Перенаправляет консольный вывод и вывод ошибок в переданный поток.
8+
// Перехваты могут быть вложенными: модуль ведёт единый на процесс стек потоков,
9+
// поэтому вложенный перехват по завершении вернёт вывод в объемлющий поток,
10+
// а не в системную консоль.
11+
//
12+
// Параметры:
13+
// Поток - Поток, ПотокВПамяти - Поток, в который перенаправляется вывод
14+
//
15+
Процедура НачатьПерехватВывода(Поток) Экспорт
16+
17+
СтекПерехватаВывода.Добавить(Поток);
18+
19+
Консоль.УстановитьПотокВывода(Поток);
20+
Консоль.УстановитьПотокОшибок(Поток);
21+
22+
КонецПроцедуры
23+
24+
// Завершает последний начатый перехват вывода и восстанавливает
25+
// объемлющий поток перехвата, либо системную консоль, если перехватов не осталось
26+
//
27+
Процедура ЗавершитьПерехватВывода() Экспорт
28+
29+
Если Не СтекПерехватаВывода.Пусто() Тогда
30+
СтекПерехватаВывода.УдалитьПоИндексу(СтекПерехватаВывода.ВГраница());
31+
КонецЕсли;
32+
33+
Если СтекПерехватаВывода.Пусто() Тогда
34+
Консоль.УстановитьПотокВывода(СтандартныйПотокВывода());
35+
Консоль.УстановитьПотокОшибок(СтандартныйПотокОшибок());
36+
Иначе
37+
ОбъемлющийПоток = СтекПерехватаВывода.Получить(СтекПерехватаВывода.ВГраница());
38+
Консоль.УстановитьПотокВывода(ОбъемлющийПоток);
39+
Консоль.УстановитьПотокОшибок(ОбъемлющийПоток);
40+
КонецЕсли;
41+
42+
КонецПроцедуры
43+
344
Функция РазвернутьСписокТестовыхНаборов(Знач КаталогиТестов, Знач ФайлыТестов, Знач ИскатьВПодкаталогах) Экспорт
445

546
Результат = Новый СписокМассив;
@@ -68,6 +109,26 @@
68109

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

112+
Функция СтандартныйПотокВывода()
113+
114+
Если _СтандартныйПотокВывода = Неопределено Тогда
115+
_СтандартныйПотокВывода = Консоль.ОткрытьСтандартныйПотокВывода();
116+
КонецЕсли;
117+
118+
Возврат _СтандартныйПотокВывода;
119+
120+
КонецФункции
121+
122+
Функция СтандартныйПотокОшибок()
123+
124+
Если _СтандартныйПотокОшибок = Неопределено Тогда
125+
_СтандартныйПотокОшибок = Консоль.ОткрытьСтандартныйПотокОшибок();
126+
КонецЕсли;
127+
128+
Возврат _СтандартныйПотокОшибок;
129+
130+
КонецФункции
131+
71132
Функция СтекВызовов(ИнформацияОбОшибке)
72133

73134
Стек = ИнформацияОбОшибке.ПолучитьСтекВызовов();
@@ -83,3 +144,5 @@
83144
.ВСтроку(Символы.ПС);
84145

85146
КонецФункции
147+
148+
СтекПерехватаВывода = Новый СписокМассив;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Фикстура с ключом JSON-источника, не совпадающим с именем параметра метода:
2+
// обнаружение тестов должно завершаться исключением
3+
4+
&ПараметризованныйТест
5+
&ИсточникJSON("[ {""НеТотПараметр"": 1} ]")
6+
Процедура ТестСНевернымКлючом(Параметр) Экспорт
7+
КонецПроцедуры
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Фикстура для проверки сборки точки входа: импорт oneunit должен быть пропущен.
2+
// Файл не предназначен для выполнения.
3+
4+
#Использовать oneunit
5+
#Использовать asserts
6+
7+
&Тест
8+
Процедура ПустойТест() Экспорт
9+
КонецПроцедуры

0 commit comments

Comments
 (0)