From 4db29c12d1487d4d1c556c10511ed9956999aa81 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Wed, 19 Nov 2025 17:40:11 +1000 Subject: [PATCH 1/6] =?UTF-8?q?*=20=D0=9F=D0=B5=D1=80=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=BF=D1=83=D1=89=D0=B5=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D0=BC=D0=B8=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=D0=BC=D0=B8,=20?= =?UTF-8?q?=D1=83=20=D0=BD=D0=B8=D1=85=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D1=8C=20=D0=BD=D0=B5=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=B6=D0=B8=D0=B7=D0=BD=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D1=86=D0=B8=D0=BA=D0=BB,=20=D0=B0=20=D1=87?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=8C=20=D0=BE=D0=B1=D1=89=D0=B5=D0=B3=D0=BE?= =?UTF-8?q?=20=D1=86=D0=B8=D0=BA=D0=BB=D0=B0=20=D1=80=D0=B5=D0=B7=D1=83?= =?UTF-8?q?=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=B0=20=D0=B2=D1=8B=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B0=20=D1=81=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=D0=BC=20"=D0=9F=D1=80=D0=BE=D0=BF=D1=83=D1=89?= =?UTF-8?q?=D0=B5=D0=BD"=20*=20=D0=A2=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B0=D0=B1=D0=BE=D1=80=D1=8B=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=BA=D0=B8=D0=B4=D1=8B=D0=B2=D0=B0=D1=8E=D1=89=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B0=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C?= =?UTF-8?q?=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BC=D0=B5=D1=87=D0=B0=D1=8E=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BA=20=D1=81=D0=BB=D0=BE=D0=BC=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20*=20=D0=A2=D0=B5=D1=81=D1=82=D1=8B=20=D1=81?= =?UTF-8?q?=D0=BB=D0=BE=D0=BC=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=BD=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=D0=BE=D0=B2=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=B5=20=D0=BD=D0=B5=20=D1=80=D0=B5=D0=BF=D0=BE=D1=80=D1=82?= =?UTF-8?q?=D1=8F=D1=82=D1=81=D1=8F=20*=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D1=82=D0=B8=D0=BF=D0=B0=20=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=B1=D0=BA=D0=B0=20=D1=83=D1=82=D0=B2=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=B7=20asserts,=20?= =?UTF-8?q?=D0=B5=D1=81=D0=BB=D0=B8=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=B5=D1=82=20=D1=81=20=D1=82=D0=B0=D0=BA?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=BE=D0=B9,=20?= =?UTF-8?q?=D0=BE=D0=BD=20=D0=BF=D0=BE=D0=BC=D0=B5=D1=87=D0=B0=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=BA=D0=B0=D0=BA=20"=D0=9E=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=B0"=20=D0=B5=D1=81=D0=BB=D0=B8=20=D0=BF=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D1=81=20=D0=B4=D1=80=D1=83=D0=B3=D0=B8?= =?UTF-8?q?=D0=BC=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=82=D0=BE=20=D0=BA=D0=B0=D0=BA=20"=D0=A1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BC=D0=B0=D0=BD"=20*=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20"=D0=9F=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F"=20?= =?UTF-8?q?=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B5=20=D0=BF=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D0=BE=D0=BB=D1=8F=D1=8E=D1=82=20=D0=BF=D1=80=D0=B5=D1=80?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D1=82=D0=B5=D1=81=D1=82=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81=D1=81=D0=B5=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20*=20=D0=A0?= =?UTF-8?q?=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 44 +++- ...20\260\320\263\320\260\320\265\320\274.md" | 39 +++ ...20\265\320\261\320\275\321\213\320\271.os" | 6 + ...20\276\320\262\320\260\321\202\321\214.os" | 4 +- ...20\265\321\201\321\202\320\276\320\262.os" | 150 ++++++++---- ...20\262\320\260\320\275\320\270\320\265.os" | 15 +- ...20\265\321\200\320\262\320\260\320\275.os" | 8 + ...20\242\320\265\321\201\321\202\320\260.os" | 24 +- ...21\202\320\265\321\200GenericExecution.os" | 58 ++--- ...6\321\200\321\202\320\265\321\200JUnit.os" | 100 ++++---- ...\321\202\320\265\321\200OpenTestReport.os" | 89 +++---- ...20\265\321\200\320\265\320\262\320\276.os" | 91 ++----- ...20\277\320\270\321\201\320\276\320\272.os" | 72 +----- ...21\201\321\202\320\270\320\272\320\260.os" | 224 +++++++++--------- ...20\265\321\201\321\202\320\276\320\262.os" | 5 - ...20\265\321\201\321\202\320\276\320\262.os" | 93 ++++++++ ...20\260\320\263\320\260\320\265\320\274.os" | 45 ++++ ...20\265\320\261\320\275\321\213\320\271.os" | 1 - ...20\265\321\201\321\202\320\276\320\262.os" | 17 ++ ...20\272\321\202\320\276\321\200\320\265.os" | 17 ++ ...20\260\320\275\320\275\321\213\320\271.os" | 16 ++ ...21\201\321\202\320\260\320\274\320\270.os" | 4 +- ...21\201\321\202\320\260\320\274\320\270.os" | 26 ++ ...20\271\320\242\320\265\321\201\321\202.os" | 11 +- ...20\270\321\202\320\265\320\273\321\214.os" | 4 +- ...20\266\320\265\320\275\320\270\321\217.os" | 66 ++++++ 26 files changed, 756 insertions(+), 473 deletions(-) create mode 100644 "docs/api/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\260\320\263\320\260\320\265\320\274.md" create mode 100644 "src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\237\321\200\320\265\321\200\320\262\320\260\320\275.os" delete mode 100644 "src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\321\213\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" create mode 100644 "src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" create mode 100644 "src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\260\320\263\320\260\320\265\320\274.os" create mode 100644 "tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\232\321\200\320\260\321\201\320\275\321\213\321\205\320\242\320\265\321\201\321\202\320\276\320\262.os" create mode 100644 "tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\320\260\320\264\320\260\321\216\321\211\320\270\320\271\320\222\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\265.os" create mode 100644 "tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" create mode 100644 "tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" create mode 100644 "tests/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" diff --git a/README.md b/README.md index 267d27f..8bb2cd6 100644 --- a/README.md +++ b/README.md @@ -121,9 +121,9 @@ OneUnit поддерживает следующие аннотации для н ### 1.4 Неперехваченные исключения -В OneUnit если исключение выдаётся из тестового метода или метода жизненного цикла и не перехватывается в этом тестовом методе или методе жизненного цикла, то фреймворк пометит тест как упавший. +В OneUnit если исключение выдаётся из тестового метода или метода жизненного цикла и не перехватывается в этом тестовом методе или методе жизненного цикла, то фреймворк пометит тест как `Сломанный`. -В следующем примере `ПадениеПриНеперехваченномИсключении()` методы вызывает исключение `Деление на ноль`. Поскольку исключение не перехватывается, тест будет помечен как упавший. +В следующем примере `ПадениеПриНеперехваченномИсключении()` методы вызывает исключение `Деление на ноль`. Поскольку исключение не перехватывается, тест будет помечен как `Сломанный`. ```bsl &Тест @@ -136,6 +136,19 @@ OneUnit поддерживает следующие аннотации для н КонецПроцедуры ``` +При использовании библиотеки [`asserts`](https://github.com/oscript-library/asserts), в случае если не проходит проверка утверждения, то фреймворк пометит тест как `Ошибочный`. + +```bsl +#Использовать asserts + +&Тест +Процедура ПадениеПриУтверждении() Экспорт + + Утверждения.ПроверитьИстину(Ложь, "Исключение, которое помечает тест ошибочным"); + +КонецПроцедуры +``` + ### 1.5 Отключение тестов Целые тестовые наборы или отдельные тестовые методы можно *отключить* с помощью аннотации [`&Выключен`](./docs/api/Аннотации/Выключен.md), или с помощью одной из аннотаций, перечисленных в разделе [Условное выполнение тестов](#16-условное-выполнение-тестов). @@ -264,6 +277,31 @@ OneUnit поддерживает следующие аннотации для н КонецФункции ``` +#### 1.6.4 Предположения + +Предположения обычно используют когда нет смысла продолжать выполнение теста, например если тест зависит от чего-то чего нет в текущей среде исполнения + +* Когда предположение справедливо, метод предположения не порождает исключение и выполнение теста продолжается в обычном режиме +* Когда предположение неверно, метод предположения выбрасывает исключение типа `ИсключениеТестПрерван` что сигнализирует фреймворку о том, что вместо этого тест следует прервать, и поместить его как `Прерван` + +Методы предположений располагаются в модуле [`Предполагаем`](./docs/api/Модули/Предполагаем.md) + +```bsl +&Тест +Процедура ПредположительноПрервется() Экспорт + Предполагаем.ЧтоИстинно(Ложь, "Тест будет прерван") +КонецПроцедуры +``` + +```bsl +&ПараметризованныйТест +&ИсточникЗначение(Ложь) +&ИсточникЗначение(Истина) +Процедура ПараметризованноПрервется(Прервать) Экспорт + Предполагаем.ЧтоЛожно(Прервать, "Тест будет прерван если значение параметра Прервать будет Истина") +КонецПроцедуры +``` + ### 1.7 Теги Тестовые наборы и методы могут быть помечены с помощью аннотации [`&Тег`](./docs/api/Аннотации/Тег.md). Эти теги могут быть позже использованы для фильтрации [обнаружения и выполнения тестов](#) @@ -550,11 +588,13 @@ $ oneunit execute [ 2 Наборов обнаружено ] [ 0 Наборов пропущено ] +[ 0 Наборов прервано ] [ 2 Наборов успешных ] [ 0 Наборов ошибочных ] [ 5 Тестов обнаружено ] [ 1 Тестов пропущено ] +[ 0 Тестов прервано ] [ 4 Тестов успешных ] [ 0 Тестов ошибочных ] diff --git "a/docs/api/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\260\320\263\320\260\320\265\320\274.md" "b/docs/api/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\260\320\263\320\260\320\265\320\274.md" new file mode 100644 index 0000000..bc884ab --- /dev/null +++ "b/docs/api/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\260\320\263\320\260\320\265\320\274.md" @@ -0,0 +1,39 @@ +# Предполагаем + +## ЧтоИстинно + +```bsl +// Проверяет что переданное предположение истинно, +// если это не так, прерывает выполнение теста с сообщением +// +// Параметры: +// Предположение - Булево - Проверяемое предположение +// Сообщение - Строка - Сообщение, с которым будет прерван тест +// +// Пример: +// &Тест +// Процедура Тест() Экспорт +//   Предполагаем.ЧтоИстинно(ПолучитьПеременнуюСреды("ENV") = "CI", "Выполняется только на CI"); +// КонецПроцедуры +// +Процедура ЧтоИстинно(Предположение, Сообщение) +``` + +## ЧтоЛожно + +```bsl +// Проверяет что переданное предположение ложно, +// если это не так, прерывает выполнение теста с сообщением +// +// Параметры: +// Предположение - Булево - Проверяемое предположение +// Сообщение - Строка - Сообщение, с которым будет прерван тест +// +// Пример: +// &Тест +// Процедура Тест() Экспорт +//   Предполагаем.ЧтоЛожно(ПолучитьПеременнуюСреды("ENV") = "PROD", "Только не на проде"); +// КонецПроцедуры +// +Процедура ЧтоЛожно(Предположение, Сообщение) +``` diff --git "a/src/cli/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" "b/src/cli/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" index f71eca6..20b1ece 100644 --- "a/src/cli/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" +++ "b/src/cli/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\320\276\320\273\321\214\320\275\320\276\320\265\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" @@ -37,6 +37,12 @@ ПоПути = Ложь; Импорт = СтрЗаменить(Строка, "#Использовать ", ""); + + Если СокрЛП(НРег(Импорт)) = "oneunit" Тогда + Строка = ЧтениеТекста.ПрочитатьСтроку(); + Продолжить; + КонецЕсли; + Если СтрНайти(Импорт, """") > 0 Тогда Импорт = ФС.НормализоватьПуть(СтрЗаменить(Импорт, """", "")); ПоПути = Истина; diff --git "a/src/cli/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\321\202\321\214.os" "b/src/cli/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\321\202\321\214.os" index bab03ce..9b515f9 100644 --- "a/src/cli/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\321\202\321\214.os" +++ "b/src/cli/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\321\202\321\214.os" @@ -112,7 +112,9 @@ | .СтатистикаТестПлана(); | | Если Статистика.ПолучитьИлиУмолчание(""НаборовОшибка"", 0) > 0 - | Или Статистика.ПолучитьИлиУмолчание(""ТестовОшибка"", 0) > 0 Тогда + | Или Статистика.ПолучитьИлиУмолчание(""НаборовСломано"", 0) > 0 + | Или Статистика.ПолучитьИлиУмолчание(""ТестовОшибка"", 0) > 0 + | Или Статистика.ПолучитьИлиУмолчание(""ТестовСломано"", 0) > 0 Тогда | ЗавершитьРаботу(1); | КонецЕсли; | diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" index c32eaa0..992dddb 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" @@ -14,6 +14,8 @@ Для Каждого Набор Из Наборы Цикл + _ПубликаторСобытий.ОпубликоватьСобытие(Набор, "ИсполнениеТестНаборНачало", Новый Массив); + РезультатПропустить = ВыполнитьМетод( ЭтотОбъект, "ПропуститьНабор", @@ -25,11 +27,13 @@ Продолжить; КонецЕсли; - _ПубликаторСобытий.ОпубликоватьСобытие(Набор, "ИсполнениеТестНаборНачало", Новый Массив); + Если Не ПроверитьСозданиеНабора(Набор) Тогда + Продолжить; + КонецЕсли; РезультатВыполненияНабора = Новый Структура( - "Результат, Причины, Вывод", - РезультатыВыполненияТестов.Успех, + "Состояние, Причины, Вывод", + СостоянияВыполненияТестов.Успех, Новый СписокМассив, "" ); @@ -39,9 +43,13 @@ ОбработатьСобытияНабора(Набор, Набор.ПередВсеми()) ); - Для Каждого Тест Из Набор.Дети() Цикл - ВыполнитьТест(Тест, Набор, РезультатВыполненияНабора); - КонецЦикла; + Если РезультатВыполненияНабора.Состояние = СостоянияВыполненияТестов.Успех Тогда + + Для Каждого Тест Из Набор.Дети() Цикл + ВыполнитьТест(Тест, Набор, РезультатВыполненияНабора); + КонецЦикла; + + КонецЕсли; ОбъединитьРезультатыВыполнения( РезультатВыполненияНабора, @@ -51,7 +59,7 @@ РезультатВыполненияНабора = _Поделка.НайтиЖелудь( "РезультатВыполненияТеста", Массивы.ИзЭлементов( - РезультатВыполненияНабора.Результат, + РезультатВыполненияНабора.Состояние, РезультатВыполненияНабора.Причины, РезультатВыполненияНабора.Вывод ) @@ -72,8 +80,8 @@ Функция ОбработатьСобытияНабора(Набор, События) Результат = Новый Структура( - "Результат, Причины, Вывод", - РезультатыВыполненияТестов.Успех, + "Состояние, Причины, Вывод", + СостоянияВыполненияТестов.Успех, Новый СписокМассив, "" ); @@ -100,6 +108,8 @@ Процедура ВыполнитьТест(Тест, ОпределениеТестНабора, РезультатВыполненияНабора) + _ПубликаторСобытий.ОпубликоватьСобытие(Тест, "ИсполнениеТестНачало", Новый Массив); + РезультатПропустить = ВыполнитьМетод( ЭтотОбъект, "ПропуститьТест", @@ -113,8 +123,6 @@ Если Тест.ТипОпределения() = ТипыОпределенийТестов.Контейнер Тогда - _ПубликаторСобытий.ОпубликоватьСобытие(Тест, "ИсполнениеТестНачало", Новый Массив); - Для Каждого ВложенныйТест Из Тест.Дети() Цикл ВыполнитьТест(ВложенныйТест, ОпределениеТестНабора, РезультатВыполненияНабора); КонецЦикла; @@ -123,7 +131,7 @@ Результат = _Поделка.НайтиЖелудь( "РезультатВыполненияТеста", Массивы.ИзЭлементов( - РезультатыВыполненияТестов.Успех, + СостоянияВыполненияТестов.Успех, Списки.ИзЭлементов(), "" ) @@ -135,11 +143,9 @@ КонецЕсли; - _ПубликаторСобытий.ОпубликоватьСобытие(Тест, "ИсполнениеТестНачало", Новый Массив); - РезультатВыполнения = Новый Структура( - "Результат, Причины, Вывод", - РезультатыВыполненияТестов.Успех, + "Состояние, Причины, Вывод", + СостоянияВыполненияТестов.Успех, Новый СписокМассив, "" ); @@ -160,7 +166,7 @@ КонецЦикла; - Если РезультатВыполнения.Результат <> РезультатыВыполненияТестов.Ошибка Тогда + Если РезультатВыполнения.Состояние <> СостоянияВыполненияТестов.Ошибка Тогда ОбъединитьРезультатыВыполнения( РезультатВыполнения, @@ -191,7 +197,7 @@ Результат = _Поделка.НайтиЖелудь( "РезультатВыполненияТеста", Массивы.ИзЭлементов( - РезультатВыполнения.Результат, + РезультатВыполнения.Состояние, РезультатВыполнения.Причины, РезультатВыполнения.Вывод ) @@ -205,8 +211,8 @@ Делегат = Новый Действие(Объект, ИмяМетода); - Результат = РезультатыВыполненияТестов.Успех; - Причина = ""; + Состояние = СостоянияВыполненияТестов.Успех; + Причина = NULL; ПотокВывода = Новый ПотокВПамяти(); Консоль.УстановитьПотокВывода(ПотокВывода); @@ -217,7 +223,6 @@ .Получить(Таймаут); Исключение - Результат = РезультатыВыполненияТестов.Ошибка; Причина = ИнформацияОбОшибке(); // Опустим первый стек, это служебный re-throw от async @@ -225,14 +230,22 @@ Причина = Причина.Причина; КонецЕсли; + Если ТипЗнч(Причина.Параметры) = Тип("ИсключениеОшибкаУтверждения") Тогда + Состояние = СостоянияВыполненияТестов.Ошибка; + ИначеЕсли ТипЗнч(Причина.Параметры) = Тип("ИсключениеТестПрерван") Тогда + Состояние = СостоянияВыполненияТестов.Прерван; + Иначе + Состояние = СостоянияВыполненияТестов.Сломан; + КонецЕсли; + КонецПопытки; Консоль.УстановитьПотокВывода(_СтандартныйПотокВывода); Консоль.УстановитьПотокОшибок(_СтандартныйПотокОшибок); Возврат Новый Структура( - "Результат, Причины, Вывод, РезультатВыполненияМетода", - Результат, + "Состояние, Причины, Вывод, РезультатВыполненияМетода", + Состояние, Списки.ИзЭлементов(Причина), ПрочитатьВывод(ПотокВывода), РезультатВыполненияМетода @@ -261,30 +274,27 @@ Пропустить = Ложь; Если ТипЗнч(Определение) = Тип("ОпределениеТеста") Тогда - СобытиеНачало = "ИсполнениеТестНачало"; - СобытиеКонец = "ИсполнениеТестКонец"; - СобытиеПропуск = "ИсполнениеТестПропущен"; + ИмяСобытия = "ИсполнениеТестКонец"; Иначе - СобытиеНачало = "ИсполнениеТестНаборНачало"; - СобытиеКонец = "ИсполнениеТестНаборКонец"; - СобытиеПропуск = "ИсполнениеТестНаборПропущен"; + ИмяСобытия = "ИсполнениеТестНаборКонец"; КонецЕсли; - Если РезультатПропустить.Результат = РезультатыВыполненияТестов.Ошибка Тогда + Если РезультатПропустить.Состояние = СостоянияВыполненияТестов.Ошибка + Или РезультатПропустить.Состояние = СостоянияВыполненияТестов.Сломан + Или РезультатПропустить.Состояние = СостоянияВыполненияТестов.Прерван Тогда Пропустить = Истина; Результат = _Поделка.НайтиЖелудь( "РезультатВыполненияТеста", Массивы.ИзЭлементов( - РезультатыВыполненияТестов.Ошибка, + РезультатПропустить.Состояние, РезультатПропустить.Причины, РезультатПропустить.Вывод ) ); - _ПубликаторСобытий.ОпубликоватьСобытие(Определение, СобытиеНачало, Новый Массив); - _ПубликаторСобытий.ОпубликоватьСобытие(Определение, СобытиеКонец, Массивы.ИзЭлементов(Результат)); + _ПубликаторСобытий.ОпубликоватьСобытие(Определение, ИмяСобытия, Массивы.ИзЭлементов(Результат)); Иначе @@ -292,10 +302,19 @@ Если Пропустить Тогда + Результат = _Поделка.НайтиЖелудь( + "РезультатВыполненияТеста", + Массивы.ИзЭлементов( + СостоянияВыполненияТестов.Пропущен, + Списки.ИзЭлементов(РезультатПропустить.РезультатВыполненияМетода.Причина), + "" + ) + ); + _ПубликаторСобытий.ОпубликоватьСобытие( Определение, - СобытиеПропуск, - Массивы.ИзЭлементов(РезультатПропустить.РезультатВыполненияМетода.Причина) + ИмяСобытия, + Массивы.ИзЭлементов(Результат) ); КонецЕсли; @@ -333,10 +352,10 @@ Результат = Новый Структура("Пропустить, Причина", Ложь, ""); - Если РезультатВыполненияНабора.Результат <> РезультатыВыполненияТестов.Успех Тогда + Если РезультатВыполненияНабора.Состояние <> СостоянияВыполненияТестов.Успех Тогда Результат.Пропустить = Истина; - Результат.Причина = "Пропущен из-за состояния набора " + РезультатВыполненияНабора.Результат; + Результат.Причина = "Пропущен из-за состояния набора " + РезультатВыполненияНабора.Состояние; КонецЕсли; @@ -361,15 +380,64 @@ Процедура ОбъединитьРезультатыВыполнения(Первый, Второй) - Если Второй.Результат = РезультатыВыполненияТестов.Ошибка Тогда - Первый.Результат = РезультатыВыполненияТестов.Ошибка; - Первый.Причины.ДобавитьВсе(Второй.Причины); - КонецЕсли; + Первый.Состояние = СостоянияВыполненияТестов.НаихудшееСостояние( + Первый.Состояние, + Второй.Состояние + ); + Первый.Причины.ДобавитьВсе(Второй.Причины); Первый.Вывод = Первый.Вывод + Второй.Вывод; КонецПроцедуры +Функция ПроверитьСозданиеНабора(Набор) Экспорт + + Результат = ВыполнитьМетод(Набор, "ТестНабор", Новый Массив(Массивы.ИзЭлементов()), 0); + + Если Результат.Состояние <> СостоянияВыполненияТестов.Успех Тогда + + Результат = _Поделка.НайтиЖелудь( + "РезультатВыполненияТеста", + Массивы.ИзЭлементов( + Результат.Состояние, + Результат.Причины, + Результат.Вывод + ) + ); + + _ПубликаторСобытий.ОпубликоватьСобытие( + Набор, + "ИсполнениеТестНаборКонец", + Массивы.ИзЭлементов(Результат) + ); + + Возврат Ложь; + + ИначеЕсли Результат.РезультатВыполненияМетода = Неопределено Тогда + + Результат = _Поделка.НайтиЖелудь( + "РезультатВыполненияТеста", + Массивы.ИзЭлементов( + СостоянияВыполненияТестов.Сломан, + Списки.ИзЭлементов(), + Результат.Вывод + ) + ); + + _ПубликаторСобытий.ОпубликоватьСобытие( + Набор, + "ИсполнениеТестНаборКонец", + Массивы.ИзЭлементов(Результат) + ); + + Возврат Ложь; + + КонецЕсли; + + Возврат Истина; + +КонецФункции + &Желудь &Прозвище("ИсполнительТестов") Процедура ПриСозданииОбъекта( diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\320\276\321\202\320\276\320\262\320\272\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\320\276\321\202\320\276\320\262\320\272\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.os" index fb72707..91c4632 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\320\276\321\202\320\276\320\262\320\272\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\320\276\321\202\320\276\320\262\320\272\320\260\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.os" @@ -38,18 +38,13 @@ Исключение - Ошибка = Новый ИнформацияОбОшибке( - СтрШаблон( - "Ошибка подключения тестового набора %1 - |%2", - Путь, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ), - ИнформацияОбОшибке() - ); + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Если ЗначениеЗаполнено(ИнформацияОбОшибке.Причина) Тогда + ИнформацияОбОшибке = ИнформацияОбОшибке.Причина; + КонецЕсли; ПостроительДекоратора = Новый ПостроительДекоратора() - .Поле(Новый Поле("Ошибка").ЗначениеПоУмолчанию(Ошибка)) + .Поле(Новый Поле("Ошибка").ЗначениеПоУмолчанию(ИнформацияОбОшибке)) .Метод(Новый Метод("ПередВсеми") .Аннотация(Новый Аннотация("ПередВсеми")) .ТелоМетода("ВызватьИсключение Ошибка;") diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\237\321\200\320\265\321\200\320\262\320\260\320\275.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\237\321\200\320\265\321\200\320\262\320\260\320\275.os" new file mode 100644 index 0000000..f16099f --- /dev/null +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\321\201\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\237\321\200\320\265\321\200\320\262\320\260\320\275.os" @@ -0,0 +1,8 @@ +Перем Тип; + +Процедура ОбработкаПолученияПредставления(Представление, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Представление = СтрШаблон("{Тип = %1}", Тип); +КонецПроцедуры + +Тип = "Тест прерван"; diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260.os" index 16f259c..fdd070e 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\260.os" @@ -1,12 +1,12 @@ #Использовать "../../../shared" -Перем _Результат; +Перем _Состояние; Перем _Причины; Перем _Вывод; Перем _ОписанияПричин; -Функция Результат() Экспорт - Возврат _Результат; +Функция Состояние() Экспорт + Возврат _Состояние; КонецФункции Функция Причины() Экспорт @@ -23,18 +23,24 @@ Процедура ОбработкаПолученияПредставления(Представление, СтандартнаяОбработка) // BSLLS:UnusedLocalMethod-off СтандартнаяОбработка = Ложь; - Представление = СтрШаблон("%1 %2", Результат(), ОписанияПричин()); + Представление = СтрШаблон("%1 %2", Состояние(), ОписанияПричин()); КонецПроцедуры &Желудь &Характер("Компанейский") -Процедура ПриСозданииОбъекта(&Блестяшка Результат, &Блестяшка Причины, &Блестяшка Вывод) +Процедура ПриСозданииОбъекта(&Блестяшка Состояние, &Блестяшка Причины, &Блестяшка Вывод) - _Результат = Результат; - _Причины = Причины; - _Вывод = Вывод; + _Состояние = Состояние; + _Причины = Причины; + _Вывод = Вывод; _ОписанияПричин = Новый СписокМассив(_Причины); - _ОписанияПричин.ЗаменитьВсе("Причина -> ТестированиеСлужебный.КраткоеОписаниеОшибки(Причина);"); + _ОписанияПричин.ЗаменитьВсе("Причина -> { + | Если ТипЗнч(Причина) = Тип(""Строка"") Тогда + | Возврат Причина; + | Иначе + | Возврат ТестированиеСлужебный.КраткоеОписаниеОшибки(Причина); + | КонецЕсли; + |}"); КонецПроцедуры diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200GenericExecution.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200GenericExecution.os" index 04b7d6c..3a67661 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200GenericExecution.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200GenericExecution.os" @@ -1,7 +1,7 @@ Перем _ПутьКОтчету; Перем ЗаписьXML; -Перем ВремяНачалаТеста; +Перем _РепортерСтатистика; &ПодпискаНаСобытие("ИсполнениеТестПланНачало") Процедура ИсполнениеТестПланНачало(ТестПлан) Экспорт @@ -16,40 +16,19 @@ &ПодпискаНаСобытие("ИсполнениеТестПланКонец") Процедура ИсполнениеТестПланКонец(ТестПлан) Экспорт - ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.Закрыть(); - КонецПроцедуры &ПодпискаНаСобытие("ИсполнениеТестНаборНачало") Процедура ИсполнениеТестНаборНачало(ТестНабор) Экспорт - ЗаписьXML.ЗаписатьНачалоЭлемента("file"); ЗаписьXML.ЗаписатьАтрибут("path", ТестНабор.Путь()); - КонецПроцедуры &ПодпискаНаСобытие("ИсполнениеТестНаборКонец") Процедура ИсполнениеТестНаборКонец(ТестНабор, Результат) Экспорт - ЗаписьXML.ЗаписатьКонецЭлемента(); - -КонецПроцедуры - -&ПодпискаНаСобытие("ИсполнениеТестНаборПропущен") -Процедура ИсполнениеТестНаборПропущен(ТестНабор, Причина) Экспорт - - ЗаписьXML.ЗаписатьНачалоЭлемента("file"); - ЗаписьXML.ЗаписатьАтрибут("path", ТестНабор.Путь()); - - ЗаписьXML.ЗаписатьКонецЭлемента(); - -КонецПроцедуры - -&ПодпискаНаСобытие("ИсполнениеТестНачало") -Процедура ИсполнениеТестНачало(Тест) Экспорт - ВремяНачалаТеста = ТекущаяУниверсальнаяДатаВМиллисекундах(); КонецПроцедуры &ПодпискаНаСобытие("ИсполнениеТестКонец") @@ -61,32 +40,31 @@ ЗаписьXML.ЗаписатьНачалоЭлемента("testCase"); ЗаписьXML.ЗаписатьАтрибут("name", Тест.ПолноеИмя()); - ЗаписьXML.ЗаписатьАтрибут("duration", ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачалаТеста); - - Если Результат.Результат() = РезультатыВыполненияТестов.Ошибка Тогда + ЗаписьXML.ЗаписатьАтрибут( + "duration", + _РепортерСтатистика.СтатистикаТеста(Тест).ПолучитьИлиУмолчание("ВремяВыполнения", 0) + ); + + Если Результат.Состояние() = СостоянияВыполненияТестов.Пропущен + Или Результат.Состояние() = СостоянияВыполненияТестов.Прерван Тогда + ЗаписьXML.ЗаписатьНачалоЭлемента("skipped"); + ЗаписьXML.ЗаписатьКонецЭлемента(); + ИначеЕсли Результат.Состояние() = СостоянияВыполненияТестов.Ошибка Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("failure"); ЗаписьXML.ЗаписатьКонецЭлемента(); + ИначеЕсли Результат.Состояние() = СостоянияВыполненияТестов.Сломан Тогда + ЗаписьXML.ЗаписатьНачалоЭлемента("error"); + ЗаписьXML.ЗаписатьКонецЭлемента(); + Иначе + // no-op КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); КонецПроцедуры -&ПодпискаНаСобытие("ИсполнениеТестПропущен") -Процедура ИсполнениеТестПропущен(Тест, Причина) Экспорт - - ЗаписьXML.ЗаписатьНачалоЭлемента("testCase"); - ЗаписьXML.ЗаписатьАтрибут("name", Тест.ПолноеИмя()); - ЗаписьXML.ЗаписатьАтрибут("duration", 0); - - ЗаписьXML.ЗаписатьНачалоЭлемента("skipped"); - ЗаписьXML.ЗаписатьКонецЭлемента(); - - ЗаписьXML.ЗаписатьКонецЭлемента(); - -КонецПроцедуры - &Желудь -Процедура ПриСозданииОбъекта(&Блестяшка ПутьКОтчетуGenericExecution) +Процедура ПриСозданииОбъекта(&Блестяшка ПутьКОтчетуGenericExecution, &Пластилин РепортерСтатистика) _ПутьКОтчету = ПутьКОтчетуGenericExecution; + _РепортерСтатистика = РепортерСтатистика; КонецПроцедуры diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200JUnit.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200JUnit.os" index 6ec0335..1efd228 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200JUnit.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200JUnit.os" @@ -28,10 +28,11 @@ ЗаписьXML.ЗаписатьАтрибут("name", "Test run"); - ЗаписьXML.ЗаписатьАтрибут("tests", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовОбнаружено", 0)); - ЗаписьXML.ЗаписатьАтрибут("failures", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовОшибка", 0)); - ЗаписьXML.ЗаписатьАтрибут("errors", 0); - ЗаписьXML.ЗаписатьАтрибут("skipped", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовПропущено", 0)); + ЗаписьXML.ЗаписатьАтрибут("tests", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовОбнаружено", 0)); + ЗаписьXML.ЗаписатьАтрибут("skipped", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовПропущено", 0) + + СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовПрервано", 0)); + ЗаписьXML.ЗаписатьАтрибут("failures", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовОшибка", 0)); + ЗаписьXML.ЗаписатьАтрибут("errors", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовСломано", 0)); ЗаписьXML.ЗаписатьАтрибут("assertions", 0); ЗаписьXML.ЗаписатьАтрибут( @@ -84,45 +85,42 @@ Процедура ВывестиТестНабор(ЗаписьXML, ТестНабор) Экспорт Если ТипЗнч(ТестНабор) = Тип("ОпределениеТестНабора") Тогда - ЗавершенныеНаборы = _РепортерСтатистика.ЗавершенныеНаборы(); - ПропущенныеНаборы = _РепортерСтатистика.ПропущенныеНаборы(); - СтатистикаНабора = _РепортерСтатистика.СтатистикаНабора(ТестНабор); + Статистика = _РепортерСтатистика.СтатистикаНабора(ТестНабор); Иначе - ЗавершенныеНаборы = _РепортерСтатистика.ЗавершенныеТесты(); - ПропущенныеНаборы = _РепортерСтатистика.ПропущенныеТесты(); - СтатистикаНабора = _РепортерСтатистика.СтатистикаТеста(ТестНабор); + Статистика = _РепортерСтатистика.СтатистикаТеста(ТестНабор); КонецЕсли; ЗаписьXML.ЗаписатьНачалоЭлемента("testsuite"); - ЗаписьXML.ЗаписатьАтрибут("name", ТестНабор.Имя()); - ЗаписьXML.ЗаписатьАтрибут("tests", СтатистикаНабора.ПолучитьИлиУмолчание("ТестовОбнаружено", 0)); - ЗаписьXML.ЗаписатьАтрибут("failures", СтатистикаНабора.ПолучитьИлиУмолчание("ТестовОшибка", 0)); - ЗаписьXML.ЗаписатьАтрибут("errors", 0); - ЗаписьXML.ЗаписатьАтрибут("skipped", СтатистикаНабора.ПолучитьИлиУмолчание("ТестовПропущено", 0)); + ЗаписьXML.ЗаписатьАтрибут("name", ТестНабор.Имя()); + ЗаписьXML.ЗаписатьАтрибут("tests", Статистика.ПолучитьИлиУмолчание("ТестовОбнаружено", 0)); + ЗаписьXML.ЗаписатьАтрибут("skipped", Статистика.ПолучитьИлиУмолчание("ТестовПропущено", 0) + + Статистика.ПолучитьИлиУмолчание("ТестовПрервано", 0)); + ЗаписьXML.ЗаписатьАтрибут("failures", Статистика.ПолучитьИлиУмолчание("ТестовОшибка", 0)); + ЗаписьXML.ЗаписатьАтрибут("errors", Статистика.ПолучитьИлиУмолчание("ТестовСломано", 0)); ЗаписьXML.ЗаписатьАтрибут("assertions", 0); ЗаписьXML.ЗаписатьАтрибут("time", - (СтатистикаНабора.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - - СтатистикаНабора.ПолучитьИлиУмолчание("ВремяНачала", 0)) + (Статистика.ПолучитьИлиУмолчание("ВремяЗавершения", 0) + - Статистика.ПолучитьИлиУмолчание("ВремяНачала", 0)) / 1000 ); ЗаписьXML.ЗаписатьАтрибут( "timestamp", - XMLСтрока(СтатистикаНабора.ПолучитьИлиУмолчание("ДатаЗавершения", '00010101')) + XMLСтрока(Статистика.ПолучитьИлиУмолчание("ДатаЗавершения", '00010101')) ); ЗаписьXML.ЗаписатьАтрибут("file", ТестНабор.Путь()); - Вывод = ""; - Причины = ""; - - Если ЗавершенныеНаборы.СодержитКлюч(ТестНабор) Тогда + Результат = _РепортерСтатистика.Результат(ТестНабор); - Результат = ЗавершенныеНаборы.Получить(ТестНабор).Получить(); + Вывод = Результат.Вывод(); + Причины = ""; + ПричинаПропуска = ""; - Вывод = Результат.Вывод(); + Если Результат.Состояние() = СостоянияВыполненияТестов.Ошибка + Или Результат.Состояние() = СостоянияВыполненияТестов.Сломан Тогда Причины = Результат.Причины() .ПроцессорКоллекции() @@ -131,6 +129,11 @@ КонецЕсли; + Если Результат.Состояние() = СостоянияВыполненияТестов.Пропущен + Или Результат.Состояние() = СостоянияВыполненияТестов.Прерван Тогда + ПричинаПропуска = СтрСоединить(Результат.Причины().ВМассив(), Символы.ПС); + КонецЕсли; + ЗаписьXML.ЗаписатьНачалоЭлемента("properties"); ЗаписьXML.ЗаписатьНачалоЭлемента("property"); @@ -138,8 +141,6 @@ ЗаписьXML.ЗаписатьАтрибут("value", СтрСоединить(ТестНабор.Теги().ВМассив(), ",")); ЗаписьXML.ЗаписатьКонецЭлемента(); - ПричинаПропуска = ПропущенныеНаборы.Получить(ТестНабор).Иначе_(""); - Если Не ПустаяСтрока(ПричинаПропуска) Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("property"); @@ -172,7 +173,7 @@ ЗаписьXML.ЗаписатьКонецЭлемента(); // TODO: Выводить ли детей если пропущен? - Если ЗавершенныеНаборы.СодержитКлюч(ТестНабор) Тогда + Если Результат.Состояние() = СостоянияВыполненияТестов.Успех Тогда Для Каждого Тест Из ТестНабор.Дети() Цикл @@ -192,8 +193,6 @@ Процедура ВывестиТест(ЗаписьXML, Тест) Экспорт - ЗавершенныеТесты = _РепортерСтатистика.ЗавершенныеТесты(); - ПропущенныеТесты = _РепортерСтатистика.ПропущенныеТесты(); СтатистикаТеста = _РепортерСтатистика.СтатистикаТеста(Тест); ЗаписьXML.ЗаписатьНачалоЭлемента("testcase"); @@ -217,40 +216,39 @@ ЗаписьXML.ЗаписатьАтрибут("file", Тест.Путь()); ЗаписьXML.ЗаписатьАтрибут("line", 0); - Вывод = ""; - - Если ЗавершенныеТесты.СодержитКлюч(Тест) Тогда - - Результат = ЗавершенныеТесты.Получить(Тест).Получить(); + Результат = _РепортерСтатистика.Результат(Тест); - Вывод = Результат.Вывод(); + Вывод = Результат.Вывод(); - Если Результат.Результат() = РезультатыВыполненияТестов.Ошибка Тогда + Если Результат.Состояние() = СостоянияВыполненияТестов.Ошибка + Или Результат.Состояние() = СостоянияВыполненияТестов.Сломан Тогда + Если Результат.Состояние() = СостоянияВыполненияТестов.Ошибка Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("failure"); - ЗаписьXML.ЗаписатьАтрибут("message", Результат.ОписанияПричин()); - ЗаписьXML.ЗаписатьАтрибут("type", ""); - - ЗаписьXML.ЗаписатьТекст(Символы.ПС); + Иначе + ЗаписьXML.ЗаписатьНачалоЭлемента("error"); + КонецЕсли; - Причины = Результат.Причины() - .ПроцессорКоллекции() - .Обработать("Причина -> ТестированиеСлужебный.ПодробноеОписаниеОшибки(""Причина"", Причина)") - .ВСтроку(Символы.ПС); + ЗаписьXML.ЗаписатьАтрибут("message", Результат.ОписанияПричин()); + ЗаписьXML.ЗаписатьАтрибут("type", ""); - ЗаписьXML.ЗаписатьСекциюCDATA(Причины); - ЗаписьXML.ЗаписатьТекст(Символы.ПС); + ЗаписьXML.ЗаписатьТекст(Символы.ПС); - ЗаписьXML.ЗаписатьКонецЭлемента(); + Причины = Результат.Причины() + .ПроцессорКоллекции() + .Обработать("Причина -> ТестированиеСлужебный.ПодробноеОписаниеОшибки(""Причина"", Причина)") + .ВСтроку(Символы.ПС); - КонецЕсли; + ЗаписьXML.ЗаписатьСекциюCDATA(Причины); + ЗаписьXML.ЗаписатьТекст(Символы.ПС); - Иначе + ЗаписьXML.ЗаписатьКонецЭлемента(); - Причина = ПропущенныеТесты.Получить(Тест).Иначе_(""); + ИначеЕсли Результат.Состояние() = СостоянияВыполненияТестов.Пропущен + Или Результат.Состояние() = СостоянияВыполненияТестов.Прерван Тогда ЗаписьXML.ЗаписатьНачалоЭлемента("skipped"); - ЗаписьXML.ЗаписатьАтрибут("message", Причина); + ЗаписьXML.ЗаписатьАтрибут("message", СтрСоединить(Результат.Причины().ВМассив(), Символы.ПС)); ЗаписьXML.ЗаписатьКонецЭлемента(); КонецЕсли; diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200OpenTestReport.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200OpenTestReport.os" index f1cbe03..43cdc50 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200OpenTestReport.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200OpenTestReport.os" @@ -10,6 +10,7 @@ Перем СчетчикИдентификаторов; Перем ИдентификаторыСобытий; +Перем СтатусыПоСостояниям; &ПодпискаНаСобытие("ИсполнениеТестПланНачало") Процедура ИсполнениеТестПланНачало(ТестПлан) Экспорт @@ -64,33 +65,6 @@ ВывестиКонец(ТестНабор, Результат); КонецПроцедуры -&ПодпискаНаСобытие("ИсполнениеТестНаборПропущен") -Процедура ИсполнениеТестНаборПропущен(ТестНабор, Причина) Экспорт - - ВывестиНачало(ТестНабор); - - Статистика = _РепортерСтатистика.СтатистикаНабора(ТестНабор); - - ЗаписьXML.ЗаписатьНачалоЭлемента("finished", СобытияURI); - ЗаписьXML.ЗаписатьАтрибут("id", ИдентификаторыСобытий.Получить(ТестНабор).Получить()); - ЗаписьXML.ЗаписатьАтрибут( - "time", - XMLСтрока(Статистика.ПолучитьИлиУмолчание("ДатаЗавершения", '00010101')) + "Z" - ); - - ЗаписьXML.ЗаписатьНачалоЭлемента("result", ЯдроURI); - ЗаписьXML.ЗаписатьАтрибут("status", "SKIPPED"); - - ЗаписьXML.ЗаписатьНачалоЭлемента("reason", ЯдроURI); - ЗаписьXML.ЗаписатьСекциюCDATA(Причина); - ЗаписьXML.ЗаписатьКонецЭлемента(); // reason - - ЗаписьXML.ЗаписатьКонецЭлемента(); // result - - ЗаписьXML.ЗаписатьКонецЭлемента(); // finished - -КонецПроцедуры - &ПодпискаНаСобытие("ИсполнениеТестНачало") Процедура ИсполнениеТестНачало(Тест) Экспорт ВывестиНачало(Тест); @@ -101,33 +75,6 @@ ВывестиКонец(Тест, Результат); КонецПроцедуры -&ПодпискаНаСобытие("ИсполнениеТестПропущен") -Процедура ИсполнениеТестПропущен(Тест, Причина) Экспорт - - ВывестиНачало(Тест); - - Статистика = _РепортерСтатистика.СтатистикаНабора(Тест); - - ЗаписьXML.ЗаписатьНачалоЭлемента("finished", СобытияURI); - ЗаписьXML.ЗаписатьАтрибут("id", ИдентификаторыСобытий.Получить(Тест).Получить()); - ЗаписьXML.ЗаписатьАтрибут( - "time", - XMLСтрока(Статистика.ПолучитьИлиУмолчание("ДатаЗавершения", '00010101')) + "Z" - ); - - ЗаписьXML.ЗаписатьНачалоЭлемента("result", ЯдроURI); - ЗаписьXML.ЗаписатьАтрибут("status", "SKIPPED"); - - ЗаписьXML.ЗаписатьНачалоЭлемента("reason", ЯдроURI); - ЗаписьXML.ЗаписатьСекциюCDATA(Причина); - ЗаписьXML.ЗаписатьКонецЭлемента(); // reason - - ЗаписьXML.ЗаписатьКонецЭлемента(); // result - - ЗаписьXML.ЗаписатьКонецЭлемента(); // finished - -КонецПроцедуры - Процедура ВывестиНачало(Определение) СчетчикИдентификаторов = СчетчикИдентификаторов + 1; @@ -237,7 +184,9 @@ Для каждого Причина Из Результат.Причины() Цикл - ИнформацияОбОшибке = Причина; + Если ТипЗнч(Причина) <> Тип("ИнформацияОбОшибке") Тогда + Продолжить; + КонецЕсли; ЗаписьXML.ЗаписатьНачалоЭлемента("output", ЯдроURI); @@ -247,9 +196,7 @@ "time", XMLСтрока(Статистика.ПолучитьИлиУмолчание("ДатаЗавершения", '00010101')) + "Z" ); - ЗаписьXML.ЗаписатьСекциюCDATA( - ТестированиеСлужебный.ПодробноеОписаниеОшибки("Причина", ИнформацияОбОшибке) - ); + ЗаписьXML.ЗаписатьСекциюCDATA(ТестированиеСлужебный.ПодробноеОписаниеОшибки("Причина", Причина)); ЗаписьXML.ЗаписатьКонецЭлемента(); // output КонецЦикла; @@ -266,11 +213,22 @@ ЗаписьXML.ЗаписатьНачалоЭлемента("result", ЯдроURI); - Если Результат.Результат() = РезультатыВыполненияТестов.Ошибка - Или Статистика.ПолучитьИлиУмолчание("ТестовОшибка", 0) > 0 Тогда - ЗаписьXML.ЗаписатьАтрибут("status", "FAILED"); + Если Статистика.ПолучитьИлиУмолчание("ТестовСломано", 0) > 0 Тогда + Состояние = СостоянияВыполненияТестов.Сломан; + ИначеЕсли Статистика.ПолучитьИлиУмолчание("ТестовОшибка", 0) > 0 Тогда + Состояние = СостоянияВыполненияТестов.Ошибка; Иначе - ЗаписьXML.ЗаписатьАтрибут("status", "SUCCESSFUL"); + Состояние = СостоянияВыполненияТестов.Успех; + КонецЕсли; + + ЗаписьXML.ЗаписатьАтрибут("status", СтатусыПоСостояниям.Получить( + СостоянияВыполненияТестов.НаихудшееСостояние(Результат.Состояние(), Состояние) + ).Получить()); + + Если Не Результат.ОписанияПричин().Пусто() Тогда + ЗаписьXML.ЗаписатьНачалоЭлемента("reason", ЯдроURI); + ЗаписьXML.ЗаписатьСекциюCDATA(Результат.ОписанияПричин()); + ЗаписьXML.ЗаписатьКонецЭлемента(); // reason КонецЕсли; ЗаписьXML.ЗаписатьКонецЭлемента(); // result @@ -291,4 +249,11 @@ СчетчикИдентификаторов = 0; ИдентификаторыСобытий = Новый КартаСоответствие(); + СтатусыПоСостояниям = Новый КартаСоответствие(); + СтатусыПоСостояниям.Вставить(СостоянияВыполненияТестов.Успех, "SUCCESSFUL"); + СтатусыПоСостояниям.Вставить(СостоянияВыполненияТестов.Пропущен, "SKIPPED"); + СтатусыПоСостояниям.Вставить(СостоянияВыполненияТестов.Прерван, "ABORTED"); + СтатусыПоСостояниям.Вставить(СостоянияВыполненияТестов.Ошибка, "FAILED"); + СтатусыПоСостояниям.Вставить(СостоянияВыполненияТестов.Сломан, "ERRORED"); + КонецПроцедуры diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\224\320\265\321\200\320\265\320\262\320\276.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\224\320\265\321\200\320\265\320\262\320\276.os" index 00571fc..d0d19a4 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\224\320\265\321\200\320\265\320\262\320\276.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\224\320\265\321\200\320\265\320\262\320\276.os" @@ -2,11 +2,12 @@ Перем _Лог; Перем _РепортерСтатистика; -Перем _КодировкиUTF; Перем Префикс; Перем ТекущийКонтейнер; +Перем ЗапаркованныйКонтейнер; + Процедура ВывестиТестПлан(ТестПлан) Экспорт ИсполнениеТестПланНачало(ТестПлан); @@ -55,20 +56,13 @@ &ПодпискаНаСобытие("ИсполнениеТестНаборНачало") Процедура ИсполнениеТестНаборНачало(ТестНабор) Экспорт - ВыводКонтейнера(ТестНабор); + ЗапаркованныйКонтейнер = ТестНабор; КонецПроцедуры &ПодпискаНаСобытие("ИсполнениеТестНаборКонец") Процедура ИсполнениеТестНаборКонец(ТестНабор, Результат) Экспорт - Префикс.Удалить(Префикс.Получить(Префикс.ВГраница())); - ТекущийКонтейнер = ТестНабор.Родитель(); -КонецПроцедуры - -&ПодпискаНаСобытие("ИсполнениеТестНаборПропущен") -Процедура ИсполнениеТестНаборПропущен(ТестНабор, Причина) Экспорт - - ВыводКонтейнера(ТестНабор, Причина); + РаспарковатьКонтейнер(Результат); Префикс.Удалить(Префикс.Получить(Префикс.ВГраница())); ТекущийКонтейнер = ТестНабор.Родитель(); @@ -76,6 +70,7 @@ &ПодпискаНаСобытие("ИсполнениеТестНачало") Процедура ИсполнениеТестНачало(Тест) Экспорт + РаспарковатьКонтейнер(); Если Тест.ТипОпределения() = ТипыОпределенийТестов.Контейнер Тогда ВыводКонтейнера(Тест); КонецЕсли; @@ -111,27 +106,6 @@ КонецПроцедуры -&ПодпискаНаСобытие("ИсполнениеТестПропущен") -Процедура ИсполнениеТестПропущен(Тест, Причина) Экспорт - - ЭтоПоследний = ТекущийКонтейнер.Дети().Индекс(Тест) = ТекущийКонтейнер.Дети().ВГраница(); - - Если ЭтоПоследний Тогда - Префикс.Добавить("└─"); - Иначе - Префикс.Добавить("├─"); - КонецЕсли; - - ТекущийКонтейнер = Тест; - - ВывестиВЛог(Причина); - - Префикс.Удалить(Префикс.Получить(Префикс.ВГраница())); - - ТекущийКонтейнер = Тест.Родитель(); - -КонецПроцедуры - Процедура ВыводКонтейнера(Контейнер, РезультатВыполнения = Неопределено) Экспорт ЭтоПоследний = ТекущийКонтейнер.Дети().Индекс(Контейнер) = ТекущийКонтейнер.Дети().ВГраница(); @@ -154,19 +128,15 @@ КонецПроцедуры -Процедура ВывестиВЛог(РезультатВыполнения = Неопределено) +Процедура ВывестиВЛог(РезультатВыполнения) Поля = Новый КартаСоответствие(); Поля.Вставить("УровеньДерева", СтрСоединить(Префикс.ВМассив(), "")); Поля.Вставить("ИмяТеста", ТекущийКонтейнер); - Уровень = УровниЛога.Информация; + Если РезультатВыполнения <> Неопределено Тогда - Если ТипЗнч(РезультатВыполнения) = Тип("РезультатВыполненияТеста") Тогда - - Если РезультатВыполнения.Результат() = РезультатыВыполненияТестов.Ошибка Тогда - Уровень = УровниЛога.Ошибка; - КонецЕсли; + Уровень = СостоянияВыполненияТестов.УровеньЛогаСостояния(РезультатВыполнения.Состояние()); Причины = РезультатВыполнения.ОписанияПричин(); Если Не Причины.Пусто() Тогда @@ -175,19 +145,14 @@ Статистика = _РепортерСтатистика.СтатистикаТеста(ТекущийКонтейнер); - Поля.Вставить("Результат", РезультатДляВывода(РезультатВыполнения.Результат())); + Поля.Вставить("Результат", СостоянияВыполненияТестов.СимволСостояния(РезультатВыполнения.Состояние())); Поля.Вставить( "ВремяВыполнения", - Статистика.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - - Статистика.ПолучитьИлиУмолчание("ВремяНачала", 0) + Статистика.ПолучитьИлиУмолчание("ВремяВыполнения", 0) ); - ИначеЕсли ТипЗнч(РезультатВыполнения) = Тип("Строка") Тогда - Уровень = УровниЛога.Предупреждение; - Поля.Вставить("Причина", РезультатВыполнения); - Поля.Вставить("Результат", РезультатДляВывода(Неопределено)); Иначе - // no-op + Уровень = УровниЛога.Информация; КонецЕсли; _Лог.ПоляИз(Поля.КлючиИЗначения()) @@ -195,41 +160,17 @@ КонецПроцедуры -Функция РезультатДляВывода(Результат) - - Если _КодировкиUTF.Содержит(Консоль.КодировкаВходногоПотока) Тогда - Успех = "✔"; - Ошибка = "✘"; - Пропуск = "↷"; - Иначе - Успех = "V"; - Ошибка = "X"; - Пропуск = "О"; +Процедура РаспарковатьКонтейнер(РезультатВыполнения = Неопределено) + Если ЗначениеЗаполнено(ЗапаркованныйКонтейнер) Тогда + ВыводКонтейнера(ЗапаркованныйКонтейнер, РезультатВыполнения); + ЗапаркованныйКонтейнер = Неопределено; КонецЕсли; - - Если Результат = РезультатыВыполненияТестов.Успех Тогда - Возврат Успех; - ИначеЕсли Результат = РезультатыВыполненияТестов.Ошибка Тогда - Возврат Ошибка; - Иначе - Возврат Пропуск; - КонецЕсли; - -КонецФункции +КонецПроцедуры &Желудь Процедура ПриСозданииОбъекта( &Лог("oscript.lib.oneunit.core") Лог, &Пластилин РепортерСтатистика) - _Лог = Лог; - _РепортерСтатистика = РепортерСтатистика; - - _КодировкиUTF = Списки.ИзЭлементов( - КодировкаТекста.UTF8, - КодировкаТекста.UTF8NoBOM, - КодировкаТекста.UTF16 - ); - КонецПроцедуры diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" index 2195dac..67956c9 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" @@ -22,11 +22,6 @@ КонецПроцедуры -&ПодпискаНаСобытие("ИсполнениеТестНаборПропущен") -Процедура ИсполнениеТестНаборПропущен(ТестНабор, Причина) Экспорт - ВывестиВЛог(ТестНабор, Причина); -КонецПроцедуры - &ПодпискаНаСобытие("ИсполнениеТестКонец") Процедура ИсполнениеТестКонец(Тест, Результат) Экспорт @@ -36,73 +31,32 @@ КонецПроцедуры -&ПодпискаНаСобытие("ИсполнениеТестПропущен") -Процедура ИсполнениеТестПропущен(Тест, Причина) Экспорт - ВывестиВЛог(Тест, Причина); -КонецПроцедуры - -Процедура ВывестиВЛог(Определение, РезультатВыполнения = Неопределено) +Процедура ВывестиВЛог(Определение, РезультатВыполнения) Поля = Новый КартаСоответствие; Поля.Вставить("ИмяТеста", Определение.ПолноеИмя()); - Уровень = УровниЛога.Информация; + Уровень = СостоянияВыполненияТестов.УровеньЛогаСостояния(РезультатВыполнения.Состояние()); - Если ТипЗнч(РезультатВыполнения) = Тип("РезультатВыполненияТеста") Тогда - - Если РезультатВыполнения.Результат() = РезультатыВыполненияТестов.Ошибка Тогда - Уровень = УровниЛога.Ошибка; - КонецЕсли; - - Причины = РезультатВыполнения.ОписанияПричин(); - Если Не Причины.Пусто() Тогда - Поля.Вставить("Причина", Причины); - КонецЕсли; - - Статистика = _РепортерСтатистика.СтатистикаТеста(Определение); + Причины = РезультатВыполнения.ОписанияПричин(); + Если Не Причины.Пусто() Тогда + Поля.Вставить("Причина", Причины); + КонецЕсли; - Поля.Вставить("Результат", РезультатДляВывода(РезультатВыполнения.Результат())); - Поля.Вставить( - "ВремяВыполнения", - Статистика.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - - Статистика.ПолучитьИлиУмолчание("ВремяНачала", 0) - ); + Статистика = _РепортерСтатистика.СтатистикаТеста(Определение); - ИначеЕсли ТипЗнч(РезультатВыполнения) = Тип("Строка") Тогда - Уровень = УровниЛога.Предупреждение; - Поля.Вставить("Причина", РезультатВыполнения); - Поля.Вставить("Результат", РезультатДляВывода(Неопределено)); - Иначе - // no-op - КонецЕсли; + Поля.Вставить("Результат", СостоянияВыполненияТестов.СимволСостояния(РезультатВыполнения.Состояние())); + Поля.Вставить( + "ВремяВыполнения", + Статистика.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - + Статистика.ПолучитьИлиУмолчание("ВремяНачала", 0) + ); _Лог.ПоляИз(Поля.КлючиИЗначения()) .Вывести("", Уровень); КонецПроцедуры -Функция РезультатДляВывода(Результат) - - Если _КодировкиUTF.Содержит(Консоль.КодировкаВходногоПотока) Тогда - Успех = "✔"; - Ошибка = "✘"; - Пропуск = "↷"; - Иначе - Успех = "V"; - Ошибка = "X"; - Пропуск = "О"; - КонецЕсли; - - Если Результат = РезультатыВыполненияТестов.Успех Тогда - Возврат Успех; - ИначеЕсли Результат = РезультатыВыполненияТестов.Ошибка Тогда - Возврат Ошибка; - Иначе - Возврат Пропуск; - КонецЕсли; - -КонецФункции - &Желудь Процедура ПриСозданииОбъекта( &Лог("oscript.lib.oneunit.core") Лог, diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260.os" index 5a4dff3..609f210 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260.os" @@ -10,13 +10,7 @@ Перем СтатистикаТестНаборов; Перем СтатистикаТестов; -Перем ЗавершенныеТесты; -Перем ПропущенныеТесты; - -Перем ЗавершенныеНаборы; -Перем ПропущенныеНаборы; - -Перем Ошибки; +Перем Результаты; #КонецОбласти @@ -46,20 +40,9 @@ КонецФункции -Функция ЗавершенныеНаборы() Экспорт - Возврат ЗавершенныеНаборы; -КонецФункции - -Функция ПропущенныеНаборы() Экспорт - Возврат ПропущенныеНаборы; -КонецФункции - -Функция ЗавершенныеТесты() Экспорт - Возврат ЗавершенныеТесты; -КонецФункции - -Функция ПропущенныеТесты() Экспорт - Возврат ПропущенныеТесты; +Функция Результат(Определение) Экспорт + Возврат Результаты.Получить(Определение) + .Получить(); КонецФункции #КонецОбласти @@ -73,13 +56,7 @@ СтатистикаТестНаборов = Новый КартаСоответствие(); СтатистикаТестов = Новый КартаСоответствие(); - ЗавершенныеТесты = Новый КартаСоответствие(); - ПропущенныеТесты = Новый КартаСоответствие(); - - ЗавершенныеНаборы = Новый КартаСоответствие(); - ПропущенныеНаборы = Новый КартаСоответствие(); - - Ошибки = Новый КартаСоответствие; + Результаты = Новый КартаСоответствие; СтатистикаТестПлана.Вставить("ВремяНачала", ТекущаяУниверсальнаяДатаВМиллисекундах()); СтатистикаТестПлана.Вставить("ДатаНачала", МестноеВремя('00010101' + (ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000))); @@ -92,13 +69,8 @@ СтатистикаТестПлана.Вставить("ВремяЗавершения", ТекущаяУниверсальнаяДатаВМиллисекундах()); СтатистикаТестПлана.Вставить("ДатаЗавершения", МестноеВремя('00010101' + (ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000))); - Если Не Ошибки.Пусто() Тогда - ВывестиОшибки(); - КонецЕсли; - - Если Не Ошибки.Пусто() Или _РежимВыводаЛога <> РежимыВыводаЛога.Ничего Тогда - ВывестиСтатистику(); - КонецЕсли; + ВывестиОшибки(); + ВывестиСтатистику(); КонецПроцедуры @@ -115,39 +87,32 @@ СтатистикаНабора(ТестНабор).Вставить("ВремяЗавершения", ТекущаяУниверсальнаяДатаВМиллисекундах()); СтатистикаНабора(ТестНабор).Вставить("ДатаЗавершения", МестноеВремя('00010101' + (ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000))); - ЗавершенныеНаборы.Вставить(ТестНабор, Результат); + Результаты.Вставить(ТестНабор, Результат); - Если Результат.Результат() = РезультатыВыполненияТестов.Ошибка Тогда - Ошибки.Вставить(ТестНабор, Результат); - СтатистикаТестПлана.Слить("НаборовОшибка", 1, "Было, Добавлено -> Было + Добавлено"); + // Проверим есть ли упавшие дети + Если СтатистикаНабора(ТестНабор).ПолучитьИлиУмолчание("ТестовСломано", 0) > 0 Тогда + Состояние = СостоянияВыполненияТестов.Сломан; + ИначеЕсли СтатистикаНабора(ТестНабор).ПолучитьИлиУмолчание("ТестовОшибка", 0) > 0 Тогда + Состояние = СостоянияВыполненияТестов.Ошибка; Иначе - - // Проверим есть ли упавшие дети, если есть то набор для статистики ошибочный - Если СтатистикаНабора(ТестНабор).ПолучитьИлиУмолчание("ТестовОшибка", 0) > 0 Тогда - СтатистикаТестПлана.Слить("НаборовОшибка", 1, "Было, Добавлено -> Было + Добавлено"); - Иначе - СтатистикаТестПлана.Слить("НаборовУспешно", 1, "Было, Добавлено -> Было + Добавлено"); - КонецЕсли; - + Состояние = СостоянияВыполненияТестов.Успех; КонецЕсли; -КонецПроцедуры - -&ПодпискаНаСобытие("ИсполнениеТестНаборПропущен") -Процедура ИсполнениеТестНаборПропущен(ТестНабор, Причина) Экспорт - - Время = ТекущаяУниверсальнаяДатаВМиллисекундах(); - Дата = МестноеВремя('00010101' + (ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000)); - - СтатистикаНабора(ТестНабор).Вставить("ВремяНачала", Время); - СтатистикаНабора(ТестНабор).Вставить("ДатаНачала", Дата); - СтатистикаНабора(ТестНабор).Вставить("ВремяЗавершения", Время); - СтатистикаНабора(ТестНабор).Вставить("ДатаЗавершения", Дата); + Состояние = СостоянияВыполненияТестов.НаихудшееСостояние(Состояние, Результат.Состояние()); - ПропущенныеНаборы.Вставить(ТестНабор, Причина); + Если Состояние = СостоянияВыполненияТестов.Пропущен Тогда + Ключ = "НаборовПропущено"; + ИначеЕсли Состояние = СостоянияВыполненияТестов.Прерван Тогда + Ключ = "НаборовПрервано"; + ИначеЕсли Состояние = СостоянияВыполненияТестов.Ошибка Тогда + Ключ = "НаборовОшибка"; + ИначеЕсли Состояние = СостоянияВыполненияТестов.Сломан Тогда + Ключ = "НаборовСломано"; + Иначе + Ключ = "НаборовУспешно"; + КонецЕсли; - СтатистикаТестПлана.Слить("НаборовОбнаружено", 1, "Было, Добавлено -> Было + Добавлено"); - СтатистикаТестПлана.Слить("НаборовПропущено", 1, "Было, Добавлено -> Было + Добавлено"); + СтатистикаТестПлана.Слить(Ключ, 1, "Было, Добавлено -> Было + Добавлено"); КонецПроцедуры @@ -170,36 +135,44 @@ &ПодпискаНаСобытие("ИсполнениеТестКонец") Процедура ИсполнениеТестКонец(Тест, Результат) Экспорт - СтатистикаТеста(Тест).Вставить("ВремяЗавершения", ТекущаяУниверсальнаяДатаВМиллисекундах()); - СтатистикаТеста(Тест).Вставить("ДатаЗавершения", МестноеВремя('00010101' + (ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000))); + СтатистикаТеста(Тест).Вставить( + "ВремяЗавершения", + ТекущаяУниверсальнаяДатаВМиллисекундах() + ); + + СтатистикаТеста(Тест).Вставить( + "ДатаЗавершения", + МестноеВремя('00010101' + (ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000)) + ); + + СтатистикаТеста(Тест).Вставить( + "ВремяВыполнения", + СтатистикаТеста(Тест).ПолучитьИлиУмолчание("ВремяЗавершения", 0) + - СтатистикаТеста(Тест).ПолучитьИлиУмолчание("ВремяНачала", 0) + ); - ЗавершенныеТесты.Вставить(Тест, Результат); + Результаты.Вставить(Тест, Результат); Если Тест.ТипОпределения() = ТипыОпределенийТестов.Тест Тогда - Если Результат.Результат() = РезультатыВыполненияТестов.Ошибка Тогда - СтатистикаТестПлана.Слить("ТестовОшибка", 1, "Было, Добавлено -> Было + Добавлено"); - СтатистикаНабора(Тест).Слить("ТестовОшибка", 1, "Было, Добавлено -> Было + Добавлено"); - Ошибки.Вставить(Тест, Результат); + Если Результат.Состояние() = СостоянияВыполненияТестов.Успех Тогда + Ключ = "ТестовУспешно"; + ИначеЕсли Результат.Состояние() = СостоянияВыполненияТестов.Пропущен Тогда + Ключ = "ТестовПропущено"; + ИначеЕсли Результат.Состояние() = СостоянияВыполненияТестов.Прерван Тогда + Ключ = "ТестовПрервано"; + ИначеЕсли Результат.Состояние() = СостоянияВыполненияТестов.Ошибка Тогда + Ключ = "ТестовОшибка"; + ИначеЕсли Результат.Состояние() = СостоянияВыполненияТестов.Сломан Тогда + Ключ = "ТестовСломано"; Иначе - СтатистикаТестПлана.Слить("ТестовУспешно", 1, "Было, Добавлено -> Было + Добавлено"); - СтатистикаНабора(Тест).Слить("ТестовУспешно", 1, "Было, Добавлено -> Было + Добавлено"); + ВызватьИсключение "Неизвестное состояние выполнения теста"; КонецЕсли; - КонецЕсли; - -КонецПроцедуры - -&ПодпискаНаСобытие("ИсполнениеТестПропущен") -Процедура ИсполнениеТестПропущен(Тест, Причина) Экспорт - - ПропущенныеТесты.Вставить(Тест, Причина); + СтатистикаТестПлана.Слить(Ключ, 1, "Было, Добавлено -> Было + Добавлено"); + СтатистикаНабора(Тест).Слить(Ключ, 1, "Было, Добавлено -> Было + Добавлено"); - СтатистикаТестПлана.Слить("ТестовОбнаружено", 1, "Было, Добавлено -> Было + Добавлено"); - СтатистикаТестПлана.Слить("ТестовПропущено", 1, "Было, Добавлено -> Было + Добавлено"); - - СтатистикаНабора(Тест).Слить("ТестовОбнаружено", 1, "Было, Добавлено -> Было + Добавлено"); - СтатистикаНабора(Тест).Слить("ТестовПропущено", 1, "Было, Добавлено -> Было + Добавлено"); + КонецЕсли; КонецПроцедуры @@ -209,7 +182,15 @@ Процедура ВывестиОшибки() - Для Каждого ТестИРезультат Из Ошибки.КлючиИЗначения() Цикл + Ошибки = Результаты.КлючиИЗначения() + .ПроцессорКоллекции() + .Фильтровать( + "(КиЗ) -> Возврат КиЗ.Значение.Состояние() = СостоянияВыполненияТестов.Ошибка + | Или КиЗ.Значение.Состояние() = СостоянияВыполненияТестов.Сломан" + ) + .ВМассив(); + + Для Каждого ТестИРезультат Из Ошибки Цикл Тест = ТестИРезультат.Ключ; РезультатВыполнения = ТестИРезультат.Значение; @@ -251,54 +232,79 @@ Процедура ВывестиСтатистику() + ЕстьОшибки = Результаты.Значения() + .ПроцессорКоллекции() + .ЛюбойСоответствует( + "(З) -> З.Состояние() = СостоянияВыполненияТестов.Ошибка Или З.Состояние() = СостоянияВыполненияТестов.Сломан" + ); + + Если Не ЕстьОшибки И _РежимВыводаЛога = РежимыВыводаЛога.Ничего Тогда + Возврат; + КонецЕсли; + ВремяНачала = СтатистикаТестПлана.ПолучитьИлиУмолчание("ВремяНачала", 0); ВремяЗавершения = СтатистикаТестПлана.ПолучитьИлиУмолчание("ВремяЗавершения", 0); НаборовОбнаружено = СтатистикаТестПлана.ПолучитьИлиУмолчание("НаборовОбнаружено", 0); НаборовПропущено = СтатистикаТестПлана.ПолучитьИлиУмолчание("НаборовПропущено", 0); + НаборовПрервано = СтатистикаТестПлана.ПолучитьИлиУмолчание("НаборовПрервано", 0); НаборовУспешно = СтатистикаТестПлана.ПолучитьИлиУмолчание("НаборовУспешно", 0); - НаборовОшибка = СтатистикаТестПлана.ПолучитьИлиУмолчание("НаборовОшибка", 0); + НаборовОшибка = СтатистикаТестПлана.ПолучитьИлиУмолчание("НаборовОшибка", 0) + + СтатистикаТестПлана.ПолучитьИлиУмолчание("НаборовСломано", 0); ТестовОбнаружено = СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовОбнаружено", 0); ТестовПропущено = СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовПропущено", 0); + ТестовПрервано = СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовПрервано", 0); ТестовУспешно = СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовУспешно", 0); - ТестовОшибка = СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовОшибка", 0); + ТестовОшибка = СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовОшибка", 0) + + СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовСломано", 0); - МаксимумРазрядов = Макс(НаборовОбнаружено, НаборовПропущено); - МаксимумРазрядов = Макс(МаксимумРазрядов, НаборовУспешно); - МаксимумРазрядов = Макс(МаксимумРазрядов, НаборовОшибка); - МаксимумРазрядов = Макс(МаксимумРазрядов, ТестовОбнаружено); - МаксимумРазрядов = Макс(МаксимумРазрядов, ТестовПропущено); - МаксимумРазрядов = Макс(МаксимумРазрядов, ТестовУспешно); - МаксимумРазрядов = Макс(МаксимумРазрядов, ТестовОшибка); + МаксимумРазрядов = Макс( + НаборовОбнаружено, НаборовПропущено, НаборовПрервано, НаборовУспешно, НаборовОшибка, + ТестовОбнаружено, ТестовПропущено, ТестовПрервано, ТестовУспешно, ТестовОшибка + ); МаксимумРазрядов = СтрДлина(МаксимумРазрядов); - _Лог.Информация( - " - | Запуск тестов завершился за %1 мс - | - |[ %2 Наборов обнаружено ] - |[ %3 Наборов пропущено ] + СообщениеСтатистикаНаборов = СтрШаблон( + "[ %1 Наборов обнаружено ] + |[ %2 Наборов пропущено ] + |[ %3 Наборов прервано ] |[ %4 Наборов успешных ] - |[ %5 Наборов ошибочных ] - | - |[ %6 Тестов обнаружено ] - |[ %7 Тестов пропущено ] - |[ %8 Тестов успешных ] - |[ %9 Тестов ошибочных ] - |", - ВремяЗавершения - ВремяНачала, + |[ %5 Наборов ошибочных ]", ПривестиКДлине(НаборовОбнаружено, МаксимумРазрядов), ПривестиКДлине(НаборовПропущено, МаксимумРазрядов), + ПривестиКДлине(НаборовПрервано, МаксимумРазрядов), ПривестиКДлине(НаборовУспешно, МаксимумРазрядов), - ПривестиКДлине(НаборовОшибка, МаксимумРазрядов), + ПривестиКДлине(НаборовОшибка, МаксимумРазрядов) + ); + + СообщениеСтатистикаТестов = СтрШаблон( + "[ %1 Тестов обнаружено ] + |[ %2 Тестов пропущено ] + |[ %3 Тестов прервано ] + |[ %4 Тестов успешных ] + |[ %5 Тестов ошибочных ]", ПривестиКДлине(ТестовОбнаружено, МаксимумРазрядов), ПривестиКДлине(ТестовПропущено, МаксимумРазрядов), + ПривестиКДлине(ТестовПрервано, МаксимумРазрядов), ПривестиКДлине(ТестовУспешно, МаксимумРазрядов), ПривестиКДлине(ТестовОшибка, МаксимумРазрядов) ); + _Лог.Информация( + " + | Запуск тестов завершился за %1 мс + | + |%2 + | + |%3 + |", + ВремяЗавершения - ВремяНачала, + СообщениеСтатистикаНаборов, + СообщениеСтатистикаТестов + ); + КонецПроцедуры Функция ПривестиКДлине(Знач Значение, Длина) diff --git "a/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\321\213\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" "b/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\321\213\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" deleted file mode 100644 index 02d954d..0000000 --- "a/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202\321\213\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" +++ /dev/null @@ -1,5 +0,0 @@ -Перем Успех Экспорт; -Перем Ошибка Экспорт; - -Успех = "Успех"; -Ошибка = "Ошибка"; diff --git "a/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" "b/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" new file mode 100644 index 0000000..e7f443c --- /dev/null +++ "b/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" @@ -0,0 +1,93 @@ +#Использовать collectionos + +Перем Успех Экспорт; +Перем Пропущен Экспорт; +Перем Прерван Экспорт; +Перем Ошибка Экспорт; +Перем Сломан Экспорт; + +Перем _КодировкиUTF; +Перем ПриоритетыСостояний; +Перем СостоянияПриоритетов; + +Функция СимволСостояния(Состояние) Экспорт + + Если _КодировкиUTF.Содержит(Консоль.КодировкаВходногоПотока) Тогда + СимволУспех = "✔"; + СимволПропуск = "↷"; + СимволПрерван = "⊚"; + СимволОшибка = "✘"; + СимволСломан = "⊝"; + Иначе + СимволУспех = "V"; + СимволПропуск = "О"; + СимволПрерван = "0"; + СимволОшибка = "X"; + СимволСломан = "-"; + КонецЕсли; + + Если Состояние = Успех Тогда + Возврат СимволУспех; + ИначеЕсли Состояние = Пропущен Тогда + Возврат СимволПропуск; + ИначеЕсли Состояние = Прерван Тогда + Возврат СимволПрерван; + ИначеЕсли Состояние = Ошибка Тогда + Возврат СимволОшибка; + Иначе + Возврат СимволСломан; + КонецЕсли; + +КонецФункции + +Функция УровеньЛогаСостояния(Состояние) Экспорт + + Если Состояние = Ошибка Или Состояние = Сломан Тогда + Уровень = УровниЛога.Ошибка; + ИначеЕсли Состояние = Пропущен Или Состояние = Прерван Тогда + Уровень = УровниЛога.Предупреждение; + Иначе + Уровень = УровниЛога.Информация; + КонецЕсли; + + Возврат Уровень; + +КонецФункции + +Функция НаихудшееСостояние(Первое, Второе) Экспорт + Возврат СостояниеПриоритета(Макс(ПриоритетСостояния(Первое), ПриоритетСостояния(Второе))); +КонецФункции + +Функция ПриоритетСостояния(Состояние) + Возврат ПриоритетыСостояний.Получить(Состояние).Получить(); +КонецФункции + +Функция СостояниеПриоритета(Приоритет) + Возврат СостоянияПриоритетов.Получить(Приоритет).Получить(); +КонецФункции + +_КодировкиUTF = Списки.ИзЭлементов( + КодировкаТекста.UTF8, + КодировкаТекста.UTF8NoBOM, + КодировкаТекста.UTF16 +); + +Успех = "Успех"; +Пропущен = "Пропущен"; +Прерван = "Прерван"; +Ошибка = "Ошибка"; +Сломан = "Сломан"; + +ПриоритетыСостояний = Новый КартаСоответствие(); +ПриоритетыСостояний.Вставить("Успех", 0); +ПриоритетыСостояний.Вставить("Пропущен", 1); +ПриоритетыСостояний.Вставить("Прерван", 2); +ПриоритетыСостояний.Вставить("Ошибка", 3); +ПриоритетыСостояний.Вставить("Сломан", 4); + +СостоянияПриоритетов = Новый КартаСоответствие(); +СостоянияПриоритетов.Вставить(0, "Успех"); +СостоянияПриоритетов.Вставить(1, "Пропущен"); +СостоянияПриоритетов.Вставить(2, "Прерван"); +СостоянияПриоритетов.Вставить(3, "Ошибка"); +СостоянияПриоритетов.Вставить(4, "Сломан"); diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\260\320\263\320\260\320\265\320\274.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\260\320\263\320\260\320\265\320\274.os" new file mode 100644 index 0000000..1c4764b --- /dev/null +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\260\320\263\320\260\320\265\320\274.os" @@ -0,0 +1,45 @@ +// Проверяет что переданное предположение истинно, +// если это не так, прерывает выполнение теста с сообщением +// +// Параметры: +// Предположение - Булево - Проверяемое предположение +// Сообщение - Строка - Сообщение, с которым будет прерван тест +// +// Пример: +// &Тест +// Процедура Тест() Экспорт +//   Предполагаем.ЧтоИстинно(ПолучитьПеременнуюСреды("ENV") = "CI", "Выполняется только на CI"); +// КонецПроцедуры +// +Процедура ЧтоИстинно(Предположение, Сообщение) Экспорт + + Если Предположение <> Истина Тогда + ПрерватьТест(Сообщение); + КонецЕсли; + +КонецПроцедуры + +// Проверяет что переданное предположение ложно, +// если это не так, прерывает выполнение теста с сообщением +// +// Параметры: +// Предположение - Булево - Проверяемое предположение +// Сообщение - Строка - Сообщение, с которым будет прерван тест +// +// Пример: +// &Тест +// Процедура Тест() Экспорт +//   Предполагаем.ЧтоЛожно(ПолучитьПеременнуюСреды("ENV") = "PROD", "Только не на проде"); +// КонецПроцедуры +// +Процедура ЧтоЛожно(Предположение, Сообщение) Экспорт + + Если Предположение <> Ложь Тогда + ПрерватьТест(Сообщение); + КонецЕсли; + +КонецПроцедуры + +Процедура ПрерватьТест(Сообщение) + ВызватьИсключение Новый ИнформацияОбОшибке(Сообщение, Новый ИсключениеТестПрерван); +КонецПроцедуры diff --git "a/src/shared/\320\234\320\276\320\264\321\203\320\273\320\270/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" "b/src/shared/\320\234\320\276\320\264\321\203\320\273\320\270/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" index 61f2d7d..d95d77b 100644 --- "a/src/shared/\320\234\320\276\320\264\321\203\320\273\320\270/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" +++ "b/src/shared/\320\234\320\276\320\264\321\203\320\273\320\270/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.os" @@ -23,7 +23,6 @@ Функция КраткоеОписаниеОшибки(ИнформацияОбОшибке) Экспорт // Уберём артефакты которые приезжают из asserts - ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); ОписаниеОшибки = СтрЗаменить(ОписаниеОшибки, "[Failed] ", ""); diff --git "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\232\321\200\320\260\321\201\320\275\321\213\321\205\320\242\320\265\321\201\321\202\320\276\320\262.os" "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\232\321\200\320\260\321\201\320\275\321\213\321\205\320\242\320\265\321\201\321\202\320\276\320\262.os" new file mode 100644 index 0000000..4b3f0de --- /dev/null +++ "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\232\321\200\320\260\321\201\320\275\321\213\321\205\320\242\320\265\321\201\321\202\320\276\320\262.os" @@ -0,0 +1,17 @@ +#Использовать asserts + +&Тест +Процедура СостояниеОшибка() Экспорт + Ожидаем.Что(Истина, "Ошибка утверждения") + .ЭтоЛожь(); +КонецПроцедуры + +&Тест +Процедура СостояниеСломан() Экспорт + ВызватьИсключение "Сломано"; +КонецПроцедуры + +&ТестовыйНабор +&Порядок(12) +Процедура ПриСозданииОбъекта() +КонецПроцедуры diff --git "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\320\260\320\264\320\260\321\216\321\211\320\270\320\271\320\222\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\265.os" "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\320\260\320\264\320\260\321\216\321\211\320\270\320\271\320\222\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\265.os" new file mode 100644 index 0000000..6dea01e --- /dev/null +++ "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\320\260\320\264\320\260\321\216\321\211\320\270\320\271\320\222\320\232\320\276\320\275\321\201\321\202\321\200\321\203\320\272\321\202\320\276\321\200\320\265.os" @@ -0,0 +1,17 @@ +&Тест +Процедура ЯПроигнорирован1() Экспорт +КонецПроцедуры + +&Тест +Процедура ЯПроигнорирован2() Экспорт +КонецПроцедуры + +&Тест +Процедура ЯПроигнорирован3() Экспорт +КонецПроцедуры + +&ТестовыйНабор +&Порядок(11) +Процедура ПриСозданииОбъекта() + ВызватьИсключение "Я упал в конструкторе"; +КонецПроцедуры diff --git "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" new file mode 100644 index 0000000..1cc33d7 --- /dev/null +++ "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" @@ -0,0 +1,16 @@ +#Использовать oneunit + +&ПередВсеми +Процедура Прерваться() Экспорт + Предполагаем.ЧтоИстинно(Ложь, "Я прервался"); +КонецПроцедуры + +&Тест +Процедура НеДолженВыполнятьВПрерванномНаборе() Экспорт + ВызватьИсключение "Я не должен был быть выполнен"; +КонецПроцедуры + +&ТестовыйНабор +&Порядок(9) +Процедура ПриСозданииОбъекта() +КонецПроцедуры diff --git "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\222\321\213\320\272\320\273\321\216\321\207\320\265\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\222\321\213\320\272\320\273\321\216\321\207\320\265\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" index 97e64dc..0375bf8 100644 --- "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\222\321\213\320\272\320\273\321\216\321\207\320\265\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" +++ "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\222\321\213\320\272\320\273\321\216\321\207\320\265\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" @@ -64,7 +64,7 @@ КонецПроцедуры &Тест -&ВыключенДляOneScript("~2.0") +&ВыключенДляOneScript("~2.0.0-rc") Процедура ВыключенДляOneScriptСтаршеДвойки() Экспорт Ожидаем.Что( @@ -120,7 +120,7 @@ КонецПроцедуры &Тест -&ВключенДляOneScript("<2") +&ВключенДляOneScript("<2.0.0-rc") Процедура ВключенДляOneScriptМладшеДвойки() Экспорт ВызватьИсключение "Я не должен был выполнится никогда, т.к приложение не работает на версиях младше 2"; КонецПроцедуры diff --git "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" new file mode 100644 index 0000000..70dffc6 --- /dev/null +++ "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" @@ -0,0 +1,26 @@ +#Использовать oneunit + +Перем Сч; + +&Тест +Процедура ПрерванныйТест() Экспорт + Предполагаем.ЧтоИстинно(Ложь, "Я прервался"); +КонецПроцедуры + +&ПовторяемыйТест(4) +Процедура ПрерванныйТестПовторяемый() Экспорт + Сч = Сч + 1; + Предполагаем.ЧтоИстинно(Сч <= 2, "Я прервался тоже по счётчику"); +КонецПроцедуры + +&ПараметризованныйТест +&ИсточникJSON("[ {""Значение"": 1}, {""Значение"": 2}, {""Значение"": 3}, {""Значение"": 4} ]") +Процедура ПрерванныйТестПараметризованный(Значение) Экспорт + Предполагаем.ЧтоИстинно(Значение <= 2, "Я прервался тоже по значению параметра"); +КонецПроцедуры + +&ТестовыйНабор(Характер = "Одиночка") +&Порядок(10) +Процедура ПриСозданииОбъекта() + Сч = 0; +КонецПроцедуры diff --git "a/tests/fixtures/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\242\320\265\321\201\321\202.os" "b/tests/fixtures/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\242\320\265\321\201\321\202.os" index 238acdd..3eadaa6 100644 --- "a/tests/fixtures/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\242\320\265\321\201\321\202.os" +++ "b/tests/fixtures/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\320\270\320\267\320\276\320\262\320\260\320\275\320\275\321\213\320\271\320\242\320\265\321\201\321\202.os" @@ -55,12 +55,15 @@ КонецПроцедуры &ПараметризованныйТест -&ИсточникПеречисление("РезультатыВыполненияТестов") +&ИсточникПеречисление("СостоянияВыполненияТестов") Процедура ИсточникПеречислениеПользовательское(ЗначениеПеречисления) Экспорт Значения = Списки.ИзЭлементов( - РезультатыВыполненияТестов.Ошибка, - РезультатыВыполненияТестов.Успех + СостоянияВыполненияТестов.Ошибка, + СостоянияВыполненияТестов.Успех, + СостоянияВыполненияТестов.Прерван, + СостоянияВыполненияТестов.Пропущен, + СостоянияВыполненияТестов.Сломан ); Ожидаем.Что(Значения.Содержит(ЗначениеПеречисления)).ЭтоИстина(); @@ -86,7 +89,7 @@ Ожидаем.Что(ВспомогательныйМодуль.КоличествоВызововМетодов .ПолучитьИлиУмолчание("ИсточникПеречислениеПользовательское", 0)) - .Равно(2); + .Равно(5); КонецПроцедуры diff --git "a/tests/\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\270\321\202\320\265\320\273\321\214.os" "b/tests/\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\270\321\202\320\265\320\273\321\214.os" index 1fad14e..beb880a 100644 --- "a/tests/\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\270\321\202\320\265\320\273\321\214.os" +++ "b/tests/\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\270\321\202\320\265\320\273\321\214.os" @@ -808,7 +808,7 @@ "ПараметризованныйТест.ИсточникПеречислениеПользовательское.[Успех]", ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), 0, - Списки.ИзЭлементов(РезультатыВыполненияТестов.Успех), + Списки.ИзЭлементов(СостоянияВыполненияТестов.Успех), Списки.ИзЭлементов("Параметризованный"), 0 ); @@ -821,7 +821,7 @@ "ПараметризованныйТест.ИсточникПеречислениеПользовательское.[Ошибка]", ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), 0, - Списки.ИзЭлементов(РезультатыВыполненияТестов.Ошибка), + Списки.ИзЭлементов(СостоянияВыполненияТестов.Ошибка), Списки.ИзЭлементов("Параметризованный"), 0 ); diff --git "a/tests/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/tests/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" new file mode 100644 index 0000000..ac3589a --- /dev/null +++ "b/tests/\320\237\321\200\320\265\320\264\320\277\320\276\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -0,0 +1,66 @@ +#Использовать ".." + +&ПараметризованныйТест +&ИсточникЗначение(Истина) +&ИсточникЗначение(Ложь) +Процедура ЧтоИстинно(Значение) Экспорт + + // Когда + + Попытка + Предполагаем.ЧтоИстинно(Значение, "ЯИсключение"); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + КонецПопытки; + + // Тогда + + Если Значение Тогда + + Ожидаем.Что(ИнформацияОбОшибке) + .ЭтоНеопределено(); + + Иначе + ПроверитьИсключение(ИнформацияОбОшибке); + КонецЕсли; + +КонецПроцедуры + +&ПараметризованныйТест +&ИсточникЗначение(Истина) +&ИсточникЗначение(Ложь) +Процедура ЧтоЛожно(Значение) Экспорт + + // Когда + + Попытка + Предполагаем.ЧтоЛожно(Не Значение, "ЯИсключение"); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + КонецПопытки; + + // Тогда + + Если Значение Тогда + + Ожидаем.Что(ИнформацияОбОшибке) + .ЭтоНеопределено(); + + Иначе + ПроверитьИсключение(ИнформацияОбОшибке); + КонецЕсли; + +КонецПроцедуры + +Процедура ПроверитьИсключение(ИнформацияОбОшибке) + + Ожидаем.Что(ИнформацияОбОшибке) + .ИмеетТип(Тип("ИнформацияОбОшибке")); + + Ожидаем.Что(ИнформацияОбОшибке.Описание) + .Равно("ЯИсключение"); + + Ожидаем.Что(ИнформацияОбОшибке.Параметры) + .ИмеетТип(Тип("ИсключениеТестПрерван")); + +КонецПроцедуры From 92179b5dd8e2b7861c9d17e81347057bc7373801 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Wed, 19 Nov 2025 22:48:31 +1000 Subject: [PATCH 2/6] =?UTF-8?q?*=20=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20*=20=D0=97=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BA=D1=80=D0=BE=D0=BB=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\265\321\201\321\202\320\276\320\262.os" | 46 +- ...20\277\320\270\321\201\320\276\320\272.os" | 30 +- ...20\265\321\201\321\202\320\276\320\262.os" | 20 +- ...20\270\321\202\320\265\320\273\321\214.os" | 756 +++++++++--------- 4 files changed, 414 insertions(+), 438 deletions(-) diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" index 992dddb..76b3c6c 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" @@ -18,7 +18,7 @@ РезультатПропустить = ВыполнитьМетод( ЭтотОбъект, - "ПропуститьНабор", + "ПропуститьОпределение", Новый Массив(Массивы.ИзЭлементов(Набор)), 0 ); @@ -112,8 +112,8 @@ РезультатПропустить = ВыполнитьМетод( ЭтотОбъект, - "ПропуститьТест", - Новый Массив(Массивы.ИзЭлементов(Тест, ОпределениеТестНабора, РезультатВыполненияНабора)), + "ПропуститьОпределение", + Новый Массив(Массивы.ИзЭлементов(Тест)), 0 ); @@ -166,7 +166,7 @@ КонецЦикла; - Если РезультатВыполнения.Состояние <> СостоянияВыполненияТестов.Ошибка Тогда + Если РезультатВыполнения.Состояние = СостоянияВыполненияТестов.Успех Тогда ОбъединитьРезультатыВыполнения( РезультатВыполнения, @@ -325,44 +325,20 @@ КонецФункции -Функция ПропуститьНабор(ОпределениеТестНабора) Экспорт +Функция ПропуститьОпределение(Определение) Экспорт - Результат = Новый Структура("Пропустить, Причина", Ложь, ""); - - Причина = ОпределениеТестНабора.Условия() - .ПроцессорКоллекции() - .Обработать("Условие -> Условие.Выполнять(ТестНабор)", - Новый Структура("ТестНабор", ОпределениеТестНабора.ТестНабор())) - .Фильтровать("Выполнять -> Выполнять.Результат = Ложь") - .Обработать("Выполнять -> Выполнять.Причина") - .ПолучитьПервый(); - - Если ЗначениеЗаполнено(Причина) Тогда - - Результат.Пропустить = Истина; - Результат.Причина = Причина; + ОпределениеНабора = Определение; - КонецЕсли; - - Возврат Результат; - -КонецФункции - -Функция ПропуститьТест(ОпределениеТеста, ОпределениеТестНабора, РезультатВыполненияНабора) Экспорт + Пока ТипЗнч(ОпределениеНабора) <> Тип("ОпределениеТестНабора") Цикл + ОпределениеНабора = ОпределениеНабора.Родитель(); + КонецЦикла; Результат = Новый Структура("Пропустить, Причина", Ложь, ""); - Если РезультатВыполненияНабора.Состояние <> СостоянияВыполненияТестов.Успех Тогда - - Результат.Пропустить = Истина; - Результат.Причина = "Пропущен из-за состояния набора " + РезультатВыполненияНабора.Состояние; - - КонецЕсли; - - Причина = ОпределениеТеста.Условия() + Причина = Определение.Условия() .ПроцессорКоллекции() .Обработать("Условие -> Условие.Выполнять(ТестНабор)", - Новый Структура("ТестНабор", ОпределениеТестНабора.ТестНабор())) + Новый Структура("ТестНабор", ОпределениеНабора.ТестНабор())) .Фильтровать("Выполнять -> Выполнять.Результат = Ложь") .Обработать("Выполнять -> Выполнять.Причина") .ПолучитьПервый(); diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" index 67956c9..55c3173 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" @@ -36,21 +36,27 @@ Поля = Новый КартаСоответствие; Поля.Вставить("ИмяТеста", Определение.ПолноеИмя()); - Уровень = СостоянияВыполненияТестов.УровеньЛогаСостояния(РезультатВыполнения.Состояние()); + Если РезультатВыполнения = Неопределено Тогда + Уровень = УровниЛога.Информация; + Иначе - Причины = РезультатВыполнения.ОписанияПричин(); - Если Не Причины.Пусто() Тогда - Поля.Вставить("Причина", Причины); - КонецЕсли; + Уровень = СостоянияВыполненияТестов.УровеньЛогаСостояния(РезультатВыполнения.Состояние()); - Статистика = _РепортерСтатистика.СтатистикаТеста(Определение); + Причины = РезультатВыполнения.ОписанияПричин(); + Если Не Причины.Пусто() Тогда + Поля.Вставить("Причина", Причины); + КонецЕсли; - Поля.Вставить("Результат", СостоянияВыполненияТестов.СимволСостояния(РезультатВыполнения.Состояние())); - Поля.Вставить( - "ВремяВыполнения", - Статистика.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - - Статистика.ПолучитьИлиУмолчание("ВремяНачала", 0) - ); + Статистика = _РепортерСтатистика.СтатистикаТеста(Определение); + + Поля.Вставить("Результат", СостоянияВыполненияТестов.СимволСостояния(РезультатВыполнения.Состояние())); + Поля.Вставить( + "ВремяВыполнения", + Статистика.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - + Статистика.ПолучитьИлиУмолчание("ВремяНачала", 0) + ); + + КонецЕсли; _Лог.ПоляИз(Поля.КлючиИЗначения()) .Вывести("", Уровень); diff --git "a/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" "b/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" index e7f443c..55e3405 100644 --- "a/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" +++ "b/src/core/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\321\217\320\242\320\265\321\201\321\202\320\276\320\262.os" @@ -79,15 +79,15 @@ _КодировкиUTF = Списки.ИзЭлементов( Сломан = "Сломан"; ПриоритетыСостояний = Новый КартаСоответствие(); -ПриоритетыСостояний.Вставить("Успех", 0); -ПриоритетыСостояний.Вставить("Пропущен", 1); -ПриоритетыСостояний.Вставить("Прерван", 2); -ПриоритетыСостояний.Вставить("Ошибка", 3); -ПриоритетыСостояний.Вставить("Сломан", 4); +ПриоритетыСостояний.Вставить(Успех, 0); +ПриоритетыСостояний.Вставить(Пропущен, 1); +ПриоритетыСостояний.Вставить(Прерван, 2); +ПриоритетыСостояний.Вставить(Ошибка, 3); +ПриоритетыСостояний.Вставить(Сломан, 4); СостоянияПриоритетов = Новый КартаСоответствие(); -СостоянияПриоритетов.Вставить(0, "Успех"); -СостоянияПриоритетов.Вставить(1, "Пропущен"); -СостоянияПриоритетов.Вставить(2, "Прерван"); -СостоянияПриоритетов.Вставить(3, "Ошибка"); -СостоянияПриоритетов.Вставить(4, "Сломан"); +СостоянияПриоритетов.Вставить(0, Успех); +СостоянияПриоритетов.Вставить(1, Пропущен); +СостоянияПриоритетов.Вставить(2, Прерван); +СостоянияПриоритетов.Вставить(3, Ошибка); +СостоянияПриоритетов.Вставить(4, Сломан); diff --git "a/tests/\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\270\321\202\320\265\320\273\321\214.os" "b/tests/\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\270\321\202\320\265\320\273\321\214.os" index beb880a..88cbf8b 100644 --- "a/tests/\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\270\321\202\320\265\320\273\321\214.os" +++ "b/tests/\320\236\320\261\320\275\320\260\321\200\321\203\320\266\320\270\321\202\320\265\320\273\321\214.os" @@ -16,7 +16,7 @@ // Тогда - Ожидаем.Что(ТестПлан.Дети().Количество()).Равно(10); + Ожидаем.Что(ТестПлан.Дети().Количество()).Равно(14); #Область НаборБезКонструктора @@ -225,44 +225,22 @@ Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети()).ИмеетДлину(3); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ЯПроигнорирован1", - "ЯПроигнорирован1", - "НаборПадающий.ЯПроигнорирован1", - ОбъединитьПути(".", "tests", "fixtures", "НаборПадающий.os"), - 0, - Списки.ИзЭлементов(), - Списки.ИзЭлементов(), - 0 - ); - - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ЯПроигнорирован2", - "ЯПроигнорирован2", - "НаборПадающий.ЯПроигнорирован2", - ОбъединитьПути(".", "tests", "fixtures", "НаборПадающий.os"), - 0, - Списки.ИзЭлементов(), - Списки.ИзЭлементов(), - 0 - ); + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + СтрШаблон("ЯПроигнорирован%1", Сч), + СтрШаблон("ЯПроигнорирован%1", Сч), + СтрШаблон("НаборПадающий.ЯПроигнорирован%1", Сч), + ОбъединитьПути(".", "tests", "fixtures", "НаборПадающий.os"), + 0, + Списки.ИзЭлементов(), + Списки.ИзЭлементов(), + 0 + ); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2), - ТипыОпределенийТестов.Тест, - "ЯПроигнорирован3", - "ЯПроигнорирован3", - "НаборПадающий.ЯПроигнорирован3", - ОбъединитьПути(".", "tests", "fixtures", "НаборПадающий.os"), - 0, - Списки.ИзЭлементов(), - Списки.ИзЭлементов(), - 0 - ); + КонецЦикла; #КонецОбласти @@ -497,44 +475,22 @@ Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети()).ИмеетДлину(3); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ИсточникЗначение", - "[1, 2]", - "ПараметризованныйТест.ИсточникЗначение.[1, 2]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(1 , 2), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ИсточникЗначение", + СтрШаблон("[%1, %2]", Сч * 2 - 1, Сч * 2), + СтрШаблон("ПараметризованныйТест.ИсточникЗначение.[%1, %2]", Сч * 2 - 1, Сч * 2), + ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), + 0, + Списки.ИзЭлементов(Сч * 2 - 1, Сч * 2), + Списки.ИзЭлементов("Параметризованный"), + 0 + ); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ИсточникЗначение", - "[3, 4]", - "ПараметризованныйТест.ИсточникЗначение.[3, 4]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(3 , 4), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); - - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети().Получить(2), - ТипыОпределенийТестов.Тест, - "ИсточникЗначение", - "[5, 6]", - "ПараметризованныйТест.ИсточникЗначение.[5, 6]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(5 , 6), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + КонецЦикла; #КонецОбласти @@ -587,44 +543,22 @@ Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети()).ИмеетДлину(3); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ИсточникJSONЗначение", - "[1, 2]", - "ПараметризованныйТест.ИсточникJSONЗначение.[1, 2]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(1 , 2), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ИсточникJSONЗначение", + СтрШаблон("[%1, %2]", Сч * 2 - 1, Сч * 2), + СтрШаблон("ПараметризованныйТест.ИсточникJSONЗначение.[%1, %2]", Сч * 2 - 1, Сч * 2), + ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), + 0, + Списки.ИзЭлементов(Сч * 2 - 1, Сч * 2), + Списки.ИзЭлементов("Параметризованный"), + 0 + ); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ИсточникJSONЗначение", - "[3, 4]", - "ПараметризованныйТест.ИсточникJSONЗначение.[3, 4]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(3, 4), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); - - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(2), - ТипыОпределенийТестов.Тест, - "ИсточникJSONЗначение", - "[5, 6]", - "ПараметризованныйТест.ИсточникJSONЗначение.[5, 6]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(5, 6), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + КонецЦикла; #КонецОбласти @@ -645,44 +579,22 @@ Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(3).Дети()).ИмеетДлину(3); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(3).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ИсточникJSONФайл", - "[1, 2]", - "ПараметризованныйТест.ИсточникJSONФайл.[1, 2]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(1 , 2), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(3).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ИсточникJSONФайл", + СтрШаблон("[%1, %2]", Сч * 2 - 1, Сч * 2), + СтрШаблон("ПараметризованныйТест.ИсточникJSONФайл.[%1, %2]", Сч * 2 - 1, Сч * 2), + ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), + 0, + Списки.ИзЭлементов(Сч * 2 - 1, Сч * 2), + Списки.ИзЭлементов("Параметризованный"), + 0 + ); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(3).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ИсточникJSONФайл", - "[3, 4]", - "ПараметризованныйТест.ИсточникJSONФайл.[3, 4]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(3, 4), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); - - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(3).Дети().Получить(2), - ТипыОпределенийТестов.Тест, - "ИсточникJSONФайл", - "[5, 6]", - "ПараметризованныйТест.ИсточникJSONФайл.[5, 6]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(5, 6), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + КонецЦикла; #КонецОбласти @@ -703,83 +615,26 @@ Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(4).Дети()).ИмеетДлину(6); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(4).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ИсточникПеречислениеСистемное", - СтрШаблон("[%1]", СтатусСообщения.БезСтатуса), - "ПараметризованныйТест.ИсточникПеречислениеСистемное." + СтрШаблон("[%1]", СтатусСообщения.БезСтатуса), - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(СтатусСообщения.БезСтатуса), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Сч = 0; - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(4).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ИсточникПеречислениеСистемное", - СтрШаблон("[%1]", СтатусСообщения.Важное), - "ПараметризованныйТест.ИсточникПеречислениеСистемное." + СтрШаблон("[%1]", СтатусСообщения.Важное), - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(СтатусСообщения.Важное), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Для Каждого Статус Из СтатусСообщения Цикл - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(4).Дети().Получить(2), - ТипыОпределенийТестов.Тест, - "ИсточникПеречислениеСистемное", - СтрШаблон("[%1]", СтатусСообщения.Внимание), - "ПараметризованныйТест.ИсточникПеречислениеСистемное." + СтрШаблон("[%1]", СтатусСообщения.Внимание), - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(СтатусСообщения.Внимание), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(4).Дети().Получить(Сч), + ТипыОпределенийТестов.Тест, + "ИсточникПеречислениеСистемное", + СтрШаблон("[%1]", Статус), + "ПараметризованныйТест.ИсточникПеречислениеСистемное." + СтрШаблон("[%1]", Статус), + ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), + 0, + Списки.ИзЭлементов(Статус), + Списки.ИзЭлементов("Параметризованный"), + 0 + ); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(4).Дети().Получить(3), - ТипыОпределенийТестов.Тест, - "ИсточникПеречислениеСистемное", - СтрШаблон("[%1]", СтатусСообщения.Информация), - "ПараметризованныйТест.ИсточникПеречислениеСистемное." + СтрШаблон("[%1]", СтатусСообщения.Информация), - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(СтатусСообщения.Информация), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Сч = Сч + 1; - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(4).Дети().Получить(4), - ТипыОпределенийТестов.Тест, - "ИсточникПеречислениеСистемное", - СтрШаблон("[%1]", СтатусСообщения.Обычное), - "ПараметризованныйТест.ИсточникПеречислениеСистемное." + СтрШаблон("[%1]", СтатусСообщения.Обычное), - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(СтатусСообщения.Обычное), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); - - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(4).Дети().Получить(5), - ТипыОпределенийТестов.Тест, - "ИсточникПеречислениеСистемное", - СтрШаблон("[%1]", СтатусСообщения.ОченьВажное), - "ПараметризованныйТест.ИсточникПеречислениеСистемное." + СтрШаблон("[%1]", СтатусСообщения.ОченьВажное), - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(СтатусСообщения.ОченьВажное), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + КонецЦикла; #КонецОбласти @@ -798,33 +653,30 @@ 0 ); - Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(5).Дети()).ИмеетДлину(2); + Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(5).Дети()).ИмеетДлину(5); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(5).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ИсточникПеречислениеПользовательское", - "[Успех]", - "ПараметризованныйТест.ИсточникПеречислениеПользовательское.[Успех]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(СостоянияВыполненияТестов.Успех), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Сч = 0; - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(5).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ИсточникПеречислениеПользовательское", - "[Ошибка]", - "ПараметризованныйТест.ИсточникПеречислениеПользовательское.[Ошибка]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(СостоянияВыполненияТестов.Ошибка), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Для каждого Свойство Из Рефлектор.ПолучитьТаблицуСвойств(СостоянияВыполненияТестов) Цикл + + Значение = Рефлектор.ПолучитьСвойство(СостоянияВыполненияТестов, Свойство.Имя); + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(5).Дети().Получить(Сч), + ТипыОпределенийТестов.Тест, + "ИсточникПеречислениеПользовательское", + СтрШаблон("[%1]", Значение), + СтрШаблон("ПараметризованныйТест.ИсточникПеречислениеПользовательское.[%1]", Значение), + ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), + 0, + Списки.ИзЭлементов(Значение), + Списки.ИзЭлементов("Параметризованный"), + 0 + ); + + Сч = Сч + 1; + + КонецЦикла; #КонецОбласти @@ -845,44 +697,22 @@ Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(6).Дети()).ИмеетДлину(3); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(6).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ИсточникВыражение", - "[1, 2]", - "ПараметризованныйТест.ИсточникВыражение.[1, 2]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(1 , 2), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); - - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(6).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ИсточникВыражение", - "[3, 4]", - "ПараметризованныйТест.ИсточникВыражение.[3, 4]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(3, 4), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(6).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ИсточникВыражение", + СтрШаблон("[%1, %2]", Сч * 2 - 1, Сч * 2), + СтрШаблон("ПараметризованныйТест.ИсточникВыражение.[%1, %2]", Сч * 2 - 1, Сч * 2), + ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), + 0, + Списки.ИзЭлементов(Сч * 2 - 1, Сч * 2), + Списки.ИзЭлементов("Параметризованный"), + 0 + ); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(6).Дети().Получить(2), - ТипыОпределенийТестов.Тест, - "ИсточникВыражение", - "[5, 6]", - "ПараметризованныйТест.ИсточникВыражение.[5, 6]", - ОбъединитьПути(".", "tests", "fixtures", "ПараметризованныйТест.os"), - 0, - Списки.ИзЭлементов(5, 6), - Списки.ИзЭлементов("Параметризованный"), - 0 - ); + КонецЦикла; #КонецОбласти @@ -925,44 +755,22 @@ Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети()).ИмеетДлину(3); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ТриРаза", - "Повторение 1 из 3", - "ПовторяемыйТест.ТриРаза.Повторение 1 из 3", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), - 0, - Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый"), - 0 - ); - - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ТриРаза", - "Повторение 2 из 3", - "ПовторяемыйТест.ТриРаза.Повторение 2 из 3", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), - 0, - Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый"), - 0 - ); + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ТриРаза", + СтрШаблон("Повторение %1 из 3", Сч), + СтрШаблон("ПовторяемыйТест.ТриРаза.Повторение %1 из 3", Сч), + ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + 0, + Списки.ИзЭлементов(), + Списки.ИзЭлементов("Повторяемый"), + 0 + ); - ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0).Дети().Получить(2), - ТипыОпределенийТестов.Тест, - "ТриРаза", - "Повторение 3 из 3", - "ПовторяемыйТест.ТриРаза.Повторение 3 из 3", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), - 0, - Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый"), - 0 - ); + КонецЦикла; #КонецОбласти @@ -983,112 +791,292 @@ Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1).Дети()).ИмеетДлину(3); + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ТриРазаИменной", + СтрШаблон("ТриРазаИменной №%1", Сч), + СтрШаблон("ПовторяемыйТест.ТриРазаИменной.ТриРазаИменной №%1", Сч), + ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + 0, + Списки.ИзЭлементов(), + Списки.ИзЭлементов("Повторяемый"), + 0 + ); + + КонецЦикла; + +#КонецОбласти + +#Область ТриРазаИменнойИменованный + ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1).Дети().Получить(0), - ТипыОпределенийТестов.Тест, - "ТриРазаИменной", - "ТриРазаИменной №1", - "ПовторяемыйТест.ТриРазаИменной.ТриРазаИменной №1", + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2), + ТипыОпределенийТестов.Контейнер, + "ТриРазаИменнойИменованный", + "Я именованный", + "ПовторяемыйТест.Я именованный", ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), 0, Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый"), + Списки.ИзЭлементов("Повторяемый", "ОтображаемоеИмя"), 0 ); + Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети()).ИмеетДлину(3); + + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ТриРазаИменнойИменованный", + СтрШаблон("Я именованный №%1", Сч), + СтрШаблон("ПовторяемыйТест.Я именованный.Я именованный №%1", Сч), + ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + 0, + Списки.ИзЭлементов(), + Списки.ИзЭлементов("Повторяемый", "ОтображаемоеИмя"), + 0 + ); + + КонецЦикла; + +#КонецОбласти + +#Область Тест + + ИндексНабора = 9; + + ПроверитьТестНабор( + ТестПлан.Дети().Получить(ИндексНабора), + "Тест", + Списки.ИзЭлементов(), + 0, + 0, + Карты.ИзЭлементов( + "ПередВсеми", Списки.ИзЭлементов(), + "ПередКаждым", Списки.ИзЭлементов(), + "ПослеВсех", Списки.ИзЭлементов(), + "ПослеКаждого", Списки.ИзЭлементов() + ) + ); + + Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети()).ИмеетДлину(2); + ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1).Дети().Получить(1), + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0), ТипыОпределенийТестов.Тест, - "ТриРазаИменной", - "ТриРазаИменной №2", - "ПовторяемыйТест.ТриРазаИменной.ТриРазаИменной №2", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + "Тест1", + "Тест1", + "Тест.Тест1", + ОбъединитьПути(".", "tests", "fixtures", "Тест.os"), 0, Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый"), + Списки.ИзЭлементов(), 0 ); ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1).Дети().Получить(2), + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1), ТипыОпределенийТестов.Тест, - "ТриРазаИменной", - "ТриРазаИменной №3", - "ПовторяемыйТест.ТриРазаИменной.ТриРазаИменной №3", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + "Тест2", + "Я тест 2", + "Тест.Я тест 2", + ОбъединитьПути(".", "tests", "fixtures", "Тест.os"), 0, Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый"), + Списки.ИзЭлементов(), 0 ); #КонецОбласти -#Область ТриРазаИменнойИменованный +#Область НаборПрерванный + + ИндексНабора = 10; + + ПроверитьТестНабор( + ТестПлан.Дети().Получить(ИндексНабора), + "НаборПрерванный", + Списки.ИзЭлементов(), + 0, + 0, + Карты.ИзЭлементов( + "ПередВсеми", Списки.ИзЭлементов("Прерваться"), + "ПередКаждым", Списки.ИзЭлементов(), + "ПослеВсех", Списки.ИзЭлементов(), + "ПослеКаждого", Списки.ИзЭлементов() + ) + ); + + Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети()).ИмеетДлину(1); ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2), - ТипыОпределенийТестов.Контейнер, - "ТриРазаИменнойИменованный", - "Я именованный", - "ПовторяемыйТест.Я именованный", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0), + ТипыОпределенийТестов.Тест, + "НеДолженВыполнятьВПрерванномНаборе", + "НеДолженВыполнятьВПрерванномНаборе", + "НаборПрерванный.НеДолженВыполнятьВПрерванномНаборе", + ОбъединитьПути(".", "tests", "fixtures", "НаборПрерванный.os"), 0, Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый", "ОтображаемоеИмя"), + Списки.ИзЭлементов(), 0 ); - Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети()).ИмеетДлину(3); +#КонецОбласти + +#Область НаборСПрерваннымиТестами + + ИндексНабора = 11; + + ПроверитьТестНабор( + ТестПлан.Дети().Получить(ИндексНабора), + "НаборСПрерваннымиТестами", + Списки.ИзЭлементов(), + 0, + 0, + Карты.ИзЭлементов( + "ПередВсеми", Списки.ИзЭлементов(), + "ПередКаждым", Списки.ИзЭлементов(), + "ПослеВсех", Списки.ИзЭлементов(), + "ПослеКаждого", Списки.ИзЭлементов() + ), + Истина + ); + + Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети()).ИмеетДлину(3); ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(0), + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0), ТипыОпределенийТестов.Тест, - "ТриРазаИменнойИменованный", - "Я именованный №1", - "ПовторяемыйТест.Я именованный.Я именованный №1", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + "ПрерванныйТест", + "ПрерванныйТест", + "НаборСПрерваннымиТестами.ПрерванныйТест", + ОбъединитьПути(".", "tests", "fixtures", "НаборСПрерваннымиТестами.os"), 0, Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый", "ОтображаемоеИмя"), + Списки.ИзЭлементов(), 0 ); ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(1), - ТипыОпределенийТестов.Тест, - "ТриРазаИменнойИменованный", - "Я именованный №2", - "ПовторяемыйТест.Я именованный.Я именованный №2", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1), + ТипыОпределенийТестов.Контейнер, + "ПрерванныйТестПовторяемый", + "ПрерванныйТестПовторяемый", + "НаборСПрерваннымиТестами.ПрерванныйТестПовторяемый", + ОбъединитьПути(".", "tests", "fixtures", "НаборСПрерваннымиТестами.os"), 0, Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый", "ОтображаемоеИмя"), + Списки.ИзЭлементов(), 0 ); + Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1).Дети()).ИмеетДлину(4); + + Для Сч = 1 По 4 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ПрерванныйТестПовторяемый", + СтрШаблон("Повторение %1 из 4", Сч), + СтрШаблон("НаборСПрерваннымиТестами.ПрерванныйТестПовторяемый.Повторение %1 из 4", Сч), + ОбъединитьПути(".", "tests", "fixtures", "НаборСПрерваннымиТестами.os"), + 0, + Списки.ИзЭлементов(), + Списки.ИзЭлементов(), + 0 + ); + + КонецЦикла; + ПроверитьТест( - ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(2), - ТипыОпределенийТестов.Тест, - "ТриРазаИменнойИменованный", - "Я именованный №3", - "ПовторяемыйТест.Я именованный.Я именованный №3", - ОбъединитьПути(".", "tests", "fixtures", "ПовторяемыйТест.os"), + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2), + ТипыОпределенийТестов.Контейнер, + "ПрерванныйТестПараметризованный", + "ПрерванныйТестПараметризованный", + "НаборСПрерваннымиТестами.ПрерванныйТестПараметризованный", + ОбъединитьПути(".", "tests", "fixtures", "НаборСПрерваннымиТестами.os"), 0, Списки.ИзЭлементов(), - Списки.ИзЭлементов("Повторяемый", "ОтображаемоеИмя"), + Списки.ИзЭлементов(), 0 ); + Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети()).ИмеетДлину(4); + + Для Сч = 1 По 4 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(2).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + "ПрерванныйТестПараметризованный", + СтрШаблон("[%1]", Сч), + СтрШаблон("НаборСПрерваннымиТестами.ПрерванныйТестПараметризованный.[%1]", Сч), + ОбъединитьПути(".", "tests", "fixtures", "НаборСПрерваннымиТестами.os"), + 0, + Списки.ИзЭлементов(Сч), + Списки.ИзЭлементов(), + 0 + ); + + КонецЦикла; + #КонецОбласти -#Область Тест +#Область НаборПадающийВКонструкторе - ИндексНабора = 9; + ИндексНабора = 12; ПроверитьТестНабор( ТестПлан.Дети().Получить(ИндексНабора), - "Тест", + "НаборПадающийВКонструкторе", + Списки.ИзЭлементов(), + 0, + 0, + Карты.ИзЭлементов( + "ПередВсеми", Списки.ИзЭлементов(), + "ПередКаждым", Списки.ИзЭлементов(), + "ПослеВсех", Списки.ИзЭлементов(), + "ПослеКаждого", Списки.ИзЭлементов() + ), + Истина, + Ложь + ); + + Ожидаем.Что(ТестПлан.Дети().Получить(ИндексНабора).Дети()).ИмеетДлину(3); + + Для Сч = 1 По 3 Цикл + + ПроверитьТест( + ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(Сч - 1), + ТипыОпределенийТестов.Тест, + СтрШаблон("ЯПроигнорирован%1", Сч), + СтрШаблон("ЯПроигнорирован%1", Сч), + СтрШаблон("НаборПадающийВКонструкторе.ЯПроигнорирован%1", Сч), + ОбъединитьПути(".", "tests", "fixtures", "НаборПадающийВКонструкторе.os"), + 0, + Списки.ИзЭлементов(), + Списки.ИзЭлементов(), + 0 + ); + + КонецЦикла; + +#КонецОбласти + +#Область НаборКрасныхТестов + + ИндексНабора = 13; + + ПроверитьТестНабор( + ТестПлан.Дети().Получить(ИндексНабора), + "НаборКрасныхТестов", Списки.ИзЭлементов(), 0, 0, @@ -1105,10 +1093,10 @@ ПроверитьТест( ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(0), ТипыОпределенийТестов.Тест, - "Тест1", - "Тест1", - "Тест.Тест1", - ОбъединитьПути(".", "tests", "fixtures", "Тест.os"), + "СостояниеОшибка", + "СостояниеОшибка", + "НаборКрасныхТестов.СостояниеОшибка", + ОбъединитьПути(".", "tests", "fixtures", "НаборКрасныхТестов.os"), 0, Списки.ИзЭлементов(), Списки.ИзЭлементов(), @@ -1118,10 +1106,10 @@ ПроверитьТест( ТестПлан.Дети().Получить(ИндексНабора).Дети().Получить(1), ТипыОпределенийТестов.Тест, - "Тест2", - "Я тест 2", - "Тест.Я тест 2", - ОбъединитьПути(".", "tests", "fixtures", "Тест.os"), + "СостояниеСломан", + "СостояниеСломан", + "НаборКрасныхТестов.СостояниеСломан", + ОбъединитьПути(".", "tests", "fixtures", "НаборКрасныхТестов.os"), 0, Списки.ИзЭлементов(), Списки.ИзЭлементов(), @@ -1134,7 +1122,8 @@ КонецПроцедуры -Процедура ПроверитьТестНабор(ТестНабор, Имя, Теги, Таймаут, Условия, ЖизненныйЦикл, ЭтоОдиночка = Ложь) +Процедура ПроверитьТестНабор(ТестНабор, Имя, Теги, Таймаут, Условия, ЖизненныйЦикл, + ЭтоОдиночка = Ложь, ПроверятьТестНабор = Истина) Путь = ОбъединитьПути(".", "tests", "fixtures", Имя + ".os"); @@ -1144,7 +1133,12 @@ Ожидаем.Что(ТестНабор.ПолноеИмя()).Равно(Имя); Ожидаем.Что(ТестНабор.Путь()).Равно(Путь); Ожидаем.Что(Строка(ТестНабор)).Равно(Имя + " (" + Путь + ")"); - Ожидаем.Что(ТестНабор.ТестНабор()).ИмеетТип("oneunit_testcase_" + Имя); + + Если ПроверятьТестНабор Тогда + Ожидаем.Что(ТестНабор.ТестНабор()).ИмеетТип("oneunit_testcase_" + Имя); + Иначе + Ожидаем.Что(ТестНабор.ТестНабор()).ЭтоНеопределено(); + КонецЕсли; Если ЭтоОдиночка Тогда Ожидаем.Что(ТестНабор.ТестНабор()).Равно(ТестНабор.ТестНабор()); From c32537ae2a472dae0ee0235e7b43409ed7f2ef54 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Wed, 19 Nov 2025 23:09:31 +1000 Subject: [PATCH 3/6] =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BA=D1=80=D0=BE=D0=BB=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\265\321\201\321\202\320\276\320\262.os" | 8 ++++++- ...6\321\200\321\202\320\265\321\200JUnit.os" | 22 +++---------------- ...20\277\320\270\321\201\320\276\320\272.os" | 6 +---- ...21\201\321\202\320\270\320\272\320\260.os" | 12 ++++++++++ 4 files changed, 23 insertions(+), 25 deletions(-) diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" index 76b3c6c..5e60263 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\321\201\320\270\320\275\321\205\321\200\320\276\320\275\320\275\321\213\320\271\320\230\321\201\320\277\320\276\320\273\320\275\320\270\321\202\320\265\320\273\321\214\320\242\320\265\321\201\321\202\320\276\320\262.os" @@ -391,11 +391,17 @@ ИначеЕсли Результат.РезультатВыполненияМетода = Неопределено Тогда + Попытка + ВызватьИсключение "Не удаётся инстанцировать тестовый набор"; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + КонецПопытки; + Результат = _Поделка.НайтиЖелудь( "РезультатВыполненияТеста", Массивы.ИзЭлементов( СостоянияВыполненияТестов.Сломан, - Списки.ИзЭлементов(), + Списки.ИзЭлементов(ИнформацияОбОшибке), Результат.Вывод ) ); diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200JUnit.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200JUnit.os" index 1efd228..8d61ea5 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200JUnit.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200JUnit.os" @@ -34,13 +34,7 @@ ЗаписьXML.ЗаписатьАтрибут("failures", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовОшибка", 0)); ЗаписьXML.ЗаписатьАтрибут("errors", СтатистикаТестПлана.ПолучитьИлиУмолчание("ТестовСломано", 0)); ЗаписьXML.ЗаписатьАтрибут("assertions", 0); - - ЗаписьXML.ЗаписатьАтрибут( - "time", - (СтатистикаТестПлана.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - - СтатистикаТестПлана.ПолучитьИлиУмолчание("ВремяНачала", 0)) - / 1000 - ); + ЗаписьXML.ЗаписатьАтрибут("time", СтатистикаТестПлана.ПолучитьИлиУмолчание("ВремяВыполнения", 0) / 1000); ЗаписьXML.ЗаписатьАтрибут( "timestamp", @@ -99,12 +93,7 @@ ЗаписьXML.ЗаписатьАтрибут("failures", Статистика.ПолучитьИлиУмолчание("ТестовОшибка", 0)); ЗаписьXML.ЗаписатьАтрибут("errors", Статистика.ПолучитьИлиУмолчание("ТестовСломано", 0)); ЗаписьXML.ЗаписатьАтрибут("assertions", 0); - - ЗаписьXML.ЗаписатьАтрибут("time", - (Статистика.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - - Статистика.ПолучитьИлиУмолчание("ВремяНачала", 0)) - / 1000 - ); + ЗаписьXML.ЗаписатьАтрибут("time", Статистика.ПолучитьИлиУмолчание("ВремяВыполнения", 0) / 1000); ЗаписьXML.ЗаписатьАтрибут( "timestamp", @@ -206,12 +195,7 @@ ЗаписьXML.ЗаписатьАтрибут("classname", Родитель.Имя()); ЗаписьXML.ЗаписатьАтрибут("assertions", 0); - - ЗаписьXML.ЗаписатьАтрибут("time", - (СтатистикаТеста.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - - СтатистикаТеста.ПолучитьИлиУмолчание("ВремяНачала", 0)) - / 1000 - ); + ЗаписьXML.ЗаписатьАтрибут("time", СтатистикаТеста.ПолучитьИлиУмолчание("ВремяВыполнения", 0) / 1000); ЗаписьXML.ЗаписатьАтрибут("file", Тест.Путь()); ЗаписьXML.ЗаписатьАтрибут("line", 0); diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" index 55c3173..cdbd92c 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\233\320\276\320\263\320\237\320\273\320\276\321\201\320\272\320\270\320\271\320\241\320\277\320\270\321\201\320\276\320\272.os" @@ -50,11 +50,7 @@ Статистика = _РепортерСтатистика.СтатистикаТеста(Определение); Поля.Вставить("Результат", СостоянияВыполненияТестов.СимволСостояния(РезультатВыполнения.Состояние())); - Поля.Вставить( - "ВремяВыполнения", - Статистика.ПолучитьИлиУмолчание("ВремяЗавершения", 0) - - Статистика.ПолучитьИлиУмолчание("ВремяНачала", 0) - ); + Поля.Вставить("ВремяВыполнения", Статистика.ПолучитьИлиУмолчание("ВремяВыполнения", 0)); КонецЕсли; diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260.os" index 609f210..4915617 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\321\200\321\202\320\265\321\200\320\241\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\260.os" @@ -69,6 +69,12 @@ СтатистикаТестПлана.Вставить("ВремяЗавершения", ТекущаяУниверсальнаяДатаВМиллисекундах()); СтатистикаТестПлана.Вставить("ДатаЗавершения", МестноеВремя('00010101' + (ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000))); + СтатистикаТестПлана.Вставить( + "ВремяВыполнения", + СтатистикаТестПлана.ПолучитьИлиУмолчание("ВремяЗавершения", 0) + - СтатистикаТестПлана.ПолучитьИлиУмолчание("ВремяНачала", 0) + ); + ВывестиОшибки(); ВывестиСтатистику(); @@ -87,6 +93,12 @@ СтатистикаНабора(ТестНабор).Вставить("ВремяЗавершения", ТекущаяУниверсальнаяДатаВМиллисекундах()); СтатистикаНабора(ТестНабор).Вставить("ДатаЗавершения", МестноеВремя('00010101' + (ТекущаяУниверсальнаяДатаВМиллисекундах() / 1000))); + СтатистикаНабора(ТестНабор).Вставить( + "ВремяВыполнения", + СтатистикаНабора(ТестНабор).ПолучитьИлиУмолчание("ВремяЗавершения", 0) + - СтатистикаНабора(ТестНабор).ПолучитьИлиУмолчание("ВремяНачала", 0) + ); + Результаты.Вставить(ТестНабор, Результат); // Проверим есть ли упавшие дети From 720e63feb1cc2148d92e2684c5a1f05b1cd9f9c9 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Fri, 21 Nov 2025 08:51:17 +1000 Subject: [PATCH 4/6] =?UTF-8?q?*=20=D0=9F=D0=BE=D0=B4=D0=BD=D1=8F=D0=BB=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=BE=D1=82=20asserts=20*=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=B4=D0=B5=D1=82=D0=B5=D0=B9=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=20=D0=BD=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 4 ++-- ...21\202\320\235\320\260\320\261\320\276\321\200\320\260.os" | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packagedef b/packagedef index 1a99f8c..faf2d6f 100644 --- a/packagedef +++ b/packagedef @@ -19,7 +19,7 @@ .ЗависитОт("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") @@ -27,7 +27,7 @@ .ЗависитОт("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") diff --git "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\235\320\260\320\261\320\276\321\200\320\260.os" "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\235\320\260\320\261\320\276\321\200\320\260.os" index 0360f05..d76086f 100644 --- "a/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\235\320\260\320\261\320\276\321\200\320\260.os" +++ "b/src/core/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\277\321\200\320\265\320\264\320\265\320\273\320\265\320\275\320\270\320\265\320\242\320\265\321\201\321\202\320\235\320\260\320\261\320\276\321\200\320\260.os" @@ -31,6 +31,9 @@ | КонецЕсли; |" ); + + ДетиОтсортированы = Истина; + КонецЕсли; Возврат Новый ФиксированныйСписок(_Дети); From 2fc21f91d154fd36c376056e845bee8c3477906a Mon Sep 17 00:00:00 2001 From: sfaqer Date: Fri, 21 Nov 2025 11:38:29 +1000 Subject: [PATCH 5/6] =?UTF-8?q?*=20=D0=97=D0=B0=D0=B1=D1=8B=D1=82=D1=8B?= =?UTF-8?q?=D0=B9=20lib.config=20*=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B4=D0=BB=D1=8F=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20bslls?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .bsl-language-server.json | 12 ++++++++++++ lib.config | 2 ++ 2 files changed, 14 insertions(+) create mode 100644 .bsl-language-server.json diff --git a/.bsl-language-server.json b/.bsl-language-server.json new file mode 100644 index 0000000..ad623f5 --- /dev/null +++ b/.bsl-language-server.json @@ -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", + "getTestsResultPattern": "^[^.]+\\.([^\\s]+).*$" + } + } +} diff --git a/lib.config b/lib.config index 71846e5..b963195 100644 --- a/lib.config +++ b/lib.config @@ -25,4 +25,6 @@ + + From bbeb7ef87bc6ed881c81d9eb40958a6e26538288 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Fri, 21 Nov 2025 12:50:29 +1000 Subject: [PATCH 6/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=BC=D0=BF=D0=BE=D1=80=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" | 2 +- ...\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" index 1cc33d7..f55ae61 100644 --- "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" +++ "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\271.os" @@ -1,4 +1,4 @@ -#Использовать oneunit +#Использовать ".." &ПередВсеми Процедура Прерваться() Экспорт diff --git "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" index 70dffc6..b5feef0 100644 --- "a/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" +++ "b/tests/fixtures/\320\235\320\260\320\261\320\276\321\200\320\241\320\237\321\200\320\265\321\200\320\262\320\260\320\275\320\275\321\213\320\274\320\270\320\242\320\265\321\201\321\202\320\260\320\274\320\270.os" @@ -1,4 +1,4 @@ -#Использовать oneunit +#Использовать ".." Перем Сч;