Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .bsl-language-server.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"codeLens": {
"testRunner": {
"executable": "oscript",
"executableWin": "oscript",
"getTestsArguments": "./src/cli/main.os d --file %s --mode flat",
"runAllTestsArguments": " ./src/cli/main.os e --file %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
"runTestArguments": " ./src/cli/main.os e --file %s -m %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
Comment on lines +6 to +8
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Устраните несогласованность в пробелах перед аргументами.

Строка 6 (getTestsArguments) начинается без пробела, тогда как строки 7-8 (runAllTestsArguments, runTestArguments) начинаются с пробела. Это несогласованность может привести к неправильному парсингу команды в зависимости от того, как строки объединяются с путём или другими параметрами.

Рекомендуется унифицировать формат:

-            "runAllTestsArguments": " ./src/cli/main.os e --file %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
-            "runTestArguments": " ./src/cli/main.os e --file %s -m %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
+            "runAllTestsArguments": "./src/cli/main.os e --file %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
+            "runTestArguments": "./src/cli/main.os e --file %s -m %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"getTestsArguments": "./src/cli/main.os d --file %s --mode flat",
"runAllTestsArguments": " ./src/cli/main.os e --file %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
"runTestArguments": " ./src/cli/main.os e --file %s -m %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
"getTestsArguments": "./src/cli/main.os d --file %s --mode flat",
"runAllTestsArguments": "./src/cli/main.os e --file %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
"runTestArguments": "./src/cli/main.os e --file %s -m %s --genericCoverage build/genericCoverage.xml --openTestReport build/otr.xml --cobertura build/cobertura.xml",
🤖 Prompt for AI Agents
.bsl-language-server.json lines 6-8: there is an inconsistency in leading
whitespace for the command argument strings — line 6 (getTestsArguments) has no
leading space while lines 7-8 (runAllTestsArguments, runTestArguments) start
with a space; remove the leading space from runAllTestsArguments and
runTestArguments so all three entries start consistently (no leading space) and
verify there are no unintended trailing spaces.

"getTestsResultPattern": "^[^.]+\\.([^\\s]+).*$"
}
}
}
44 changes: 42 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ OneUnit поддерживает следующие аннотации для н

### 1.4 Неперехваченные исключения

В OneUnit если исключение выдаётся из тестового метода или метода жизненного цикла и не перехватывается в этом тестовом методе или методе жизненного цикла, то фреймворк пометит тест как упавший.
В OneUnit если исключение выдаётся из тестового метода или метода жизненного цикла и не перехватывается в этом тестовом методе или методе жизненного цикла, то фреймворк пометит тест как `Сломанный`.

В следующем примере `ПадениеПриНеперехваченномИсключении()` методы вызывает исключение `Деление на ноль`. Поскольку исключение не перехватывается, тест будет помечен как упавший.
В следующем примере `ПадениеПриНеперехваченномИсключении()` методы вызывает исключение `Деление на ноль`. Поскольку исключение не перехватывается, тест будет помечен как `Сломанный`.

```bsl
&Тест
Expand All @@ -136,6 +136,19 @@ OneUnit поддерживает следующие аннотации для н
КонецПроцедуры
```

При использовании библиотеки [`asserts`](https://github.com/oscript-library/asserts), в случае если не проходит проверка утверждения, то фреймворк пометит тест как `Ошибочный`.

```bsl
#Использовать asserts

&Тест
Процедура ПадениеПриУтверждении() Экспорт

Утверждения.ПроверитьИстину(Ложь, "Исключение, которое помечает тест ошибочным");

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

### 1.5 Отключение тестов

Целые тестовые наборы или отдельные тестовые методы можно *отключить* с помощью аннотации [`&Выключен`](./docs/api/Аннотации/Выключен.md), или с помощью одной из аннотаций, перечисленных в разделе [Условное выполнение тестов](#16-условное-выполнение-тестов).
Expand Down Expand Up @@ -264,6 +277,31 @@ OneUnit поддерживает следующие аннотации для н
КонецФункции
```

#### 1.6.4 Предположения

Предположения обычно используют когда нет смысла продолжать выполнение теста, например если тест зависит от чего-то чего нет в текущей среде исполнения

* Когда предположение справедливо, метод предположения не порождает исключение и выполнение теста продолжается в обычном режиме
* Когда предположение неверно, метод предположения выбрасывает исключение типа `ИсключениеТестПрерван` что сигнализирует фреймворку о том, что вместо этого тест следует прервать, и поместить его как `Прерван`

Методы предположений располагаются в модуле [`Предполагаем`](./docs/api/Модули/Предполагаем.md)

```bsl
&Тест
Процедура ПредположительноПрервется() Экспорт
Предполагаем.ЧтоИстинно(Ложь, "Тест будет прерван")
КонецПроцедуры
```

```bsl
&ПараметризованныйТест
&ИсточникЗначение(Ложь)
&ИсточникЗначение(Истина)
Процедура ПараметризованноПрервется(Прервать) Экспорт
Предполагаем.ЧтоЛожно(Прервать, "Тест будет прерван если значение параметра Прервать будет Истина")
КонецПроцедуры
```

### 1.7 Теги

Тестовые наборы и методы могут быть помечены с помощью аннотации [`&Тег`](./docs/api/Аннотации/Тег.md). Эти теги могут быть позже использованы для фильтрации [обнаружения и выполнения тестов](#)
Expand Down Expand Up @@ -550,11 +588,13 @@ $ oneunit execute

[ 2 Наборов обнаружено ]
[ 0 Наборов пропущено ]
[ 0 Наборов прервано ]
[ 2 Наборов успешных ]
[ 0 Наборов ошибочных ]

[ 5 Тестов обнаружено ]
[ 1 Тестов пропущено ]
[ 0 Тестов прервано ]
[ 4 Тестов успешных ]
[ 0 Тестов ошибочных ]

Expand Down
39 changes: 39 additions & 0 deletions docs/api/Модули/Предполагаем.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Предполагаем

## ЧтоИстинно

```bsl
// Проверяет что переданное предположение истинно,
// если это не так, прерывает выполнение теста с сообщением
//
// Параметры:
// Предположение - Булево - Проверяемое предположение
// Сообщение - Строка - Сообщение, с которым будет прерван тест
//
// Пример:
// &Тест
// Процедура Тест() Экспорт
//   Предполагаем.ЧтоИстинно(ПолучитьПеременнуюСреды("ENV") = "CI", "Выполняется только на CI");
// КонецПроцедуры
//
Процедура ЧтоИстинно(Предположение, Сообщение)
```

## ЧтоЛожно

```bsl
// Проверяет что переданное предположение ложно,
// если это не так, прерывает выполнение теста с сообщением
//
// Параметры:
// Предположение - Булево - Проверяемое предположение
// Сообщение - Строка - Сообщение, с которым будет прерван тест
//
// Пример:
// &Тест
// Процедура Тест() Экспорт
//   Предполагаем.ЧтоЛожно(ПолучитьПеременнуюСреды("ENV") = "PROD", "Только не на проде");
// КонецПроцедуры
//
Процедура ЧтоЛожно(Предположение, Сообщение)
```
2 changes: 2 additions & 0 deletions lib.config
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,6 @@
<class name="АннотацияТестовыйНабор" file="src/core/Классы/АннотацияТестовыйНабор.os"/>
<class name="МенеджерТестирования" file="src/core/Классы/МенеджерТестирования.os"/>

<module name="Предполагаем" file="src/core/Модули/Предполагаем.os"/>

</package-def>
4 changes: 2 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@

.ЗависитОт("1commands", "1.5.0")
.ЗависитОт("annotations", "1.3.1")
.ЗависитОт("asserts", "1.4.0")
.ЗависитОт("asserts", "1.6.0")
.ЗависитОт("async", "0.3.0")
.ЗависитОт("autumn", "4.3.10")
.ЗависитОт("autumn-cli", "1.2.0")
.ЗависитОт("autumn-event-publisher", "1.0.1")
.ЗависитОт("autumn-logos", "1.2.0")
.ЗависитОт("collectionos", "0.8.2")
.ЗависитОт("coverage", "0.7.0")
.ЗависитОт("decorator", "2.0.3")
.ЗависитОт("decorator", "2.0.6")
.ЗависитОт("fs", "1.2.0")
.ЗависитОт("lambdas", "0.3.2")
.ЗависитОт("logos", "1.7.1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@
ПоПути = Ложь;

Импорт = СтрЗаменить(Строка, "#Использовать ", "");

Если СокрЛП(НРег(Импорт)) = "oneunit" Тогда
Строка = ЧтениеТекста.ПрочитатьСтроку();
Продолжить;
КонецЕсли;

Если СтрНайти(Импорт, """") > 0 Тогда
Импорт = ФС.НормализоватьПуть(СтрЗаменить(Импорт, """", ""));
ПоПути = Истина;
Expand Down
4 changes: 3 additions & 1 deletion src/cli/Классы/КомандаТестировать.os
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,9 @@
| .СтатистикаТестПлана();
|
| Если Статистика.ПолучитьИлиУмолчание(""НаборовОшибка"", 0) > 0
| Или Статистика.ПолучитьИлиУмолчание(""ТестовОшибка"", 0) > 0 Тогда
| Или Статистика.ПолучитьИлиУмолчание(""НаборовСломано"", 0) > 0
| Или Статистика.ПолучитьИлиУмолчание(""ТестовОшибка"", 0) > 0
| Или Статистика.ПолучитьИлиУмолчание(""ТестовСломано"", 0) > 0 Тогда
| ЗавершитьРаботу(1);
| КонецЕсли;
|
Expand Down
Loading