Skip to content

OneUnit testing #100

Merged
nixel2007 merged 7 commits intomasterfrom
feature/OneUnitTestingWorkflow
Nov 27, 2025
Merged

OneUnit testing #100
nixel2007 merged 7 commits intomasterfrom
feature/OneUnitTestingWorkflow

Conversation

@sfaqer
Copy link
Member

@sfaqer sfaqer commented Mar 31, 2025

Этот коммит улучшает конвейер CI/CD и интеграцию с SonarQube.

В частности:

  • Обновляет рабочий процесс qa.yml для использования повторно используемого рабочего процесса для анализа SonarQube.
  • Обновляет рабочий процесс testing.yml для использования повторно используемого рабочего процесса тестирования.
  • Добавляет sonar.testExecutionReportPaths в sonar-project.properties для отчетности о выполнении тестов.
  • Добавляет &ВыключенДляOneScript(">=2") к тестам, которые не проходят на OneScript >= 2.

@coderabbitai
Copy link

coderabbitai bot commented Mar 31, 2025

Walkthrough

Добавлено свойство sonar.testExecutionReportPaths=out/genericExecution.xml в sonar-project.properties. В tests/alltest.os добавлена директива &ПередКаждым перед Процедура ПередЗапускомТеста() Экспорт и префикс &ВыключенДляOneScript(">=2.0.0-rc") для восьми тестовых процедур.

Changes

Cohort / File(s) Изменение
Sonar конфигурация
sonar-project.properties
Добавлено свойство: sonar.testExecutionReportPaths=out/genericExecution.xml
Тестовый файл — директивы и отключения
tests/alltest.os
Добавлена директива &ПередКаждым перед Процедура ПередЗапускомТеста() Экспорт. Добавлен префикс &ВыключенДляOneScript(">=2.0.0-rc") к восьми экспортируемым процедурам: Должен_ПроверитьРукопожатиеВебСокета, ССЕКлиентПодключился, СCЕОтправитьВсем, СCЕОтправитьВсемКастомныйТип, СCЕОтправитьТолько, СCЕОтправитьКроме, СCЕПодпискаНаЗакрытие (именования приведены в теле файла). Небольшая корректировка форматирования в конце файла.

Sequence Diagram(s)

sequenceDiagram
    participant Runner as Тестовый раннер
    participant Setup as ПередЗапускомТеста()
    participant Test as Тестовая процедура
    participant Sonar as SonarScanner

    Runner->>Setup: вызвать подготовку (&ПередКаждым)
    note right of Setup `#DDEBF7`: выполняется перед каждым тестом
    Runner->>Test: запрос на запуск теста
    alt OneScript < 2.0.0-rc
        Test->>Runner: выполняется
    else OneScript >= 2.0.0-rc
        Note over Test: тест отключён через &ВыключенДляOneScript(">=2.0.0-rc")
    end
    Runner->>Sonar: запуск анализа (включая отчёт тестов)
    Sonar->>Sonar: читает out/genericExecution.xml (sonar.testExecutionReportPaths)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Обратить внимание на правильность синтаксиса директив в tests/alltest.os и соответствие точных имён процедур.
  • Проверить путь и формат файла отчёта out/genericExecution.xml и корректность свойства в sonar-project.properties.
  • Убедиться, что отключение тестов для >=2.0.0-rc не ломает последовательность зависимостей между тестами.

Poem

Я заяц в коде — чуть шустрый и ловок,
Добавил sonar-мост и тестовый поводок.
Перед каждым стартом тихо шепчу: «Готовься!»,
А старым тестам — знак: «Отдыхай, прощайся».
Прыг-скок — и в репозитории снова порядок! 🐇

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive Название слишком общее и расплывчатое; не отражает конкретные изменения в коде (конфигурация SonarQube, отключение тестов для OneScript 2.0). Уточните название, указав основные изменения, например: 'Configure SonarQube test reporting and disable tests for OneScript 2.0+' или аналогичное на русском языке.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed Описание связано с изменениями в PR и содержит конкретные детали о добавленных свойствах SonarQube и директивах отключения тестов.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/OneUnitTestingWorkflow

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sfaqer sfaqer changed the title OneUnit testing draft: OneUnit testing Mar 31, 2025
@sfaqer sfaqer marked this pull request as draft March 31, 2025 23:58
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
tests/alltest.os (1)

393-707: Общая рекомендация по исключенным тестам.

Все тесты с аннотацией &ВыключенДляOneScript(">=2") относятся к функциональности веб-сокетов и SSE. Было бы полезно добавить комментарий с объяснением причины несовместимости этих тестов с OneScript 2.0+, а также план по их адаптации или альтернативному тестированию этой функциональности в будущем.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4fd173f and 0c12901.

⛔ Files ignored due to path filters (2)
  • .github/workflows/qa.yml is excluded by !**/*.yml
  • .github/workflows/testing.yml is excluded by !**/*.yml
📒 Files selected for processing (2)
  • sonar-project.properties (1 hunks)
  • tests/alltest.os (9 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: sonar / test
  • GitHub Check: test (dev) / build (macos-latest, dev)
🔇 Additional comments (9)
sonar-project.properties (1)

7-7: Отличное добавление для интеграции с SonarQube.

Добавление свойства sonar.testExecutionReportPaths=out/genericExecution.xml позволит SonarQube получать информацию о выполненных тестах, что улучшит анализ качества кода и повысит отслеживаемость тестового покрытия.

tests/alltest.os (8)

7-7: Правильное использование аннотации &ПередКаждым.

Добавление аннотации &ПередКаждым для процедуры ПередЗапускомТеста соответствует лучшим практикам тестирования, обеспечивая запуск подготовительного кода перед каждым тестом.


393-394: Корректное исключение несовместимых тестов.

Аннотация &ВыключенДляOneScript(">=2") правильно исключает тест, который не проходит в OneScript версии 2.0 и выше.


565-566: Корректное исключение несовместимых тестов.

Аннотация &ВыключенДляOneScript(">=2") правильно отключает тест ССЕКлиентПодключился, который не работает в OneScript версии 2.0 и выше.


581-582: Корректное исключение несовместимых тестов.

Аннотация &ВыключенДляOneScript(">=2") правильно отключает тест ССЕОтправитьВсем, который не работает в OneScript версии 2.0 и выше.


609-610: Корректное исключение несовместимых тестов.

Аннотация &ВыключенДляOneScript(">=2") правильно отключает тест ССЕОтправитьВсемКастомныйТип, который не работает в OneScript версии 2.0 и выше.


633-634: Корректное исключение несовместимых тестов.

Аннотация &ВыключенДляOneScript(">=2") правильно отключает тест ССЕОтправитьТолько, который не работает в OneScript версии 2.0 и выше.


659-660: Корректное исключение несовместимых тестов.

Аннотация &ВыключенДляOneScript(">=2") правильно отключает тест ССЕОтправитьКроме, который не работает в OneScript версии 2.0 и выше.


689-690: Корректное исключение несовместимых тестов.

Аннотация &ВыключенДляOneScript(">=2") правильно отключает тест ССЕПодпискаНаЗакрытие, который не работает в OneScript версии 2.0 и выше.

@sfaqer sfaqer changed the title draft: OneUnit testing OneUnit testing Apr 1, 2025
@sfaqer sfaqer force-pushed the feature/OneUnitTestingWorkflow branch 4 times, most recently from db00c2e to d23691e Compare April 1, 2025 06:44
@Nivanchenko
Copy link
Member

@sfaqer Привет. Ты будешь еще что-то делать? висит в драфте. Яб смержил

@sfaqer
Copy link
Member Author

sfaqer commented Apr 22, 2025

@sfaqer Привет. Ты будешь еще что-то делать? висит в драфте. Яб смержил

Привет, там синхронный реквест в воркфлоу висит на ревью у @nixel2007 надо финализироваться по структуре этих самых воркфлоу, и я тогда драфт сниму.)

@sfaqer sfaqer force-pushed the feature/OneUnitTestingWorkflow branch from d23691e to b78a9a5 Compare November 22, 2025 04:27
Этот коммит улучшает конвейер CI/CD и интеграцию с SonarQube.

В частности:

* Обновляет рабочий процесс qa.yml для использования повторно используемого рабочего процесса для анализа SonarQube.
* Обновляет рабочий процесс testing.yml для использования повторно используемого рабочего процесса тестирования.
* Добавляет sonar.testExecutionReportPaths в sonar-project.properties для отчетности о выполнении тестов.
* Добавляет &ВыключенДляOneScript(">=2") к тестам, которые не проходят на OneScript >= 2.
@sfaqer sfaqer force-pushed the feature/OneUnitTestingWorkflow branch from b78a9a5 to aa408e0 Compare November 22, 2025 04:33
@sonar-openbsl-ru-qa-bot
Copy link

@sfaqer sfaqer marked this pull request as ready for review November 26, 2025 22:32
@sfaqer
Copy link
Member Author

sfaqer commented Nov 26, 2025

@Nivanchenko Готово!)

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
tests/alltest.os (1)

410-412: Деактивация нестабильных WebSocket/SSE‑тестов через &ВыключенДляOneScript(">=2.0.0-rc") оправдана, но стоит задокументировать причину и перепроверить условие версии

Добавление &ВыключенДляOneScript(">=2.0.0-rc") к тестам Должен_ПроверитьРукопожатиеВебСокета и всем SSE‑сценариям понятным образом стабилизирует прогоны на OneScript 2.x, но есть несколько моментов, которые лучше прояснить:

  1. Документация причины отключения. Сейчас по коду не видно, чем именно версия >=2.x ломает эти тесты (изменение поведения TCP/СSE, тайминги, протокол и т.п.). Рекомендуется:

    • добавить короткий комментарий над первой такой директивой (или ссылку на issue/PR в трекере), чтобы позже было понятно, когда и при каких условиях эти тесты стоит вернуть;
    • по возможности, описать ожидаемое поведение на 2.x, чтобы в будущем можно было переписать тесты под новую реализацию, а не просто держать их вечно выключенными.
  2. Проверка семантики сравнения версии. Формат ">=2.0.0-rc" выглядит разумным, но важно убедиться, что конкретный раннер/фреймворк корректно:

    • воспринимает суффикс -rc и сравнивает такие версии по ожидаемым правилам (включая будущие 2.0.0, 2.1.0 и т.д.);
    • не имеет неожиданных эффектов для версий вроде 2.0.0-beta или nightly‑сборок.
  3. Время выполнения одного из отключённых тестов. В ССЕПодпискаНаЗакрытие() остаётся Приостановить(20000), что даёт до 20 секунд ожидания в одном тесте. Это может быть болезненно даже на тех версиях OneScript, где тест включён. Когда будете возвращать его в общий прогон, имеет смысл подумать о более коротком ожидании или механизме опроса состояния, чтобы уменьшить время CI.

В остальном идея изолировать проблемные сценарии по версии интерпретатора выглядит корректной и вписывается в цель стабилизировать конвейер.

Also applies to: 583-600, 627-652, 677-708

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0c12901 and 63e3310.

⛔ Files ignored due to path filters (2)
  • .github/workflows/qa.yml is excluded by !**/*.yml
  • .github/workflows/testing.yml is excluded by !**/*.yml
📒 Files selected for processing (2)
  • sonar-project.properties (1 hunks)
  • tests/alltest.os (9 hunks)
🔇 Additional comments (3)
sonar-project.properties (1)

7-7: Путь к отчёту о выполнении тестов выглядит согласованным, но важно проверить соответствие с CI-артефактами

sonar.testExecutionReportPaths=out/genericExecution.xml логично дополняет sonar.coverageReportPaths и выглядит корректно для Generic Test Execution. Проверьте, что пайплайн действительно сохраняет XML отчёт именно под этим путём и в ожидаемом формате, иначе SonarQube просто проигнорирует данные по запуску тестов.

tests/alltest.os (2)

7-10: Инициализация сервера через &ПередКаждым выглядит разумно, но убедитесь в согласованности с тест‑фреймворком

Перенос вызова ВключитьСервер() в процедуру с атрибутом &ПередКаждым хорошо решает проблему отсутствия инициализации перед отдельными тестами; внутри уже есть защита через проверку Поделка = Неопределено, так что лишние перезапуски сервера не появятся. Проверьте, что именно этот атрибут и такое имя процедуры корректно подхватываются вашим тест‑раннером как хук «before each», и что нет параллельного механизма (например, другого набора фикстур), который теперь станет дублирующим.


748-748: Изменение хвоста файла не влияет на поведение

Отметка изменения у КонецПроцедуры в конце файла выглядит как правка только форматирования/конца файла и на выполнение тестов не влияет. Можно оставить как есть.

@nixel2007 nixel2007 merged commit 47638ca into master Nov 27, 2025
36 of 37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants