Skip to content

Миграция тестов на oneunit - #143

Merged
nixel2007 merged 1 commit into
masterfrom
feature/migrate-to-oneunit
Jul 16, 2026
Merged

Миграция тестов на oneunit#143
nixel2007 merged 1 commit into
masterfrom
feature/migrate-to-oneunit

Conversation

@sfaqer

@sfaqer sfaqer commented Jul 15, 2026

Copy link
Copy Markdown
Member

Summary

  • Заменили 1testrunner на oneunit как тестовый движок (packagedef, .github/workflows/*.yml).
  • Тесты, отравляющие общий прогон (конфликты желудей, падающие импорты, мутация процесс-глобального состояния), теперь помечены аннотацией &Изолированный вместо ручного вынесения в отдельную папку tests/ИзолированныеТесты/ с отдельным task-скриптом на процесс — папка объединена в один файл tests/ИзолированныеТесты.os.
  • Убрали ручное Поделка = Новый Поделка(); Поделка.ЗапуститьПриложение(); в начале почти каждого теста — теперь общая Поделка внедряется через &Пластилин.
  • Удалили tasks/coverage.os, tasks/test.os, tasks/testIsolated.os — раннер тестов и покрытие теперь берёт на себя oneunit через переиспользуемый workflow (test_engine: oneunit).

Test plan

  • CI (qa.yml/testing.yml) проходит на oneunit

@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@sfaqer, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 25 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3294ef0d-861f-4443-ab87-dc305e6d8d4e

📥 Commits

Reviewing files that changed from the base of the PR and between c0352b6 and 95d65b2.

⛔ Files ignored due to path filters (4)
  • .github/workflows/qa.yml is excluded by !**/*.yml
  • .github/workflows/testing.yml is excluded by !**/*.yml
  • tests/oscript.cfg is excluded by !**/*.cfg
  • tests/ИзолированныеТесты/oscript.cfg is excluded by !**/*.cfg
📒 Files selected for processing (17)
  • packagedef
  • src/internal/Классы/ФабрикаЖелудей.os
  • src/Модули/ТипыПрилепляемыхЖелудей.os
  • tasks/coverage.os
  • tasks/test.os
  • tasks/testIsolated.os
  • tests/ВнешнееПриложение.os
  • tests/ИзолированныеТесты.os
  • tests/ИзолированныеТесты/ВЗаготовкуНельзяПрилепитьПластилин.os
  • tests/ИзолированныеТесты/ДваЖелудяСОднимИменемКонфликтуют.os
  • tests/ИзолированныеТесты/ДвухВерховныхЖелудейБытьНеМожет.os
  • tests/ИзолированныеТесты/ДубСНекорректнойЗавязью.os
  • tests/ИзолированныеТесты/ПадениеРогаткиДолжноБытьЗалогировано.os
  • tests/ИзолированныеТесты/ПовторениеНеповторяемыхПараметровКидаетИсключение.os
  • tests/ИзолированныеТесты/ПроверкаИнтерфейсаНапильника.os
  • tests/ИзолированныеТесты/ПроверкаНекорректногоХарактера.os
  • tests/Поделка.os

Walkthrough

Обновлены зависимости пакета, удалены старые сценарии запуска тестов, а тесты переведены на общий контекст и изолированные проверки ошибок.

Changes

Тестовый контур и зависимости

Layer / File(s) Summary
Обновление зависимостей
packagedef
Обновлены runtime- и dev-зависимости, добавлена разработческая зависимость oneunit.
Общий контекст тестов
tests/ВнешнееПриложение.os, tests/Поделка.os, tasks/*
Удалены повторяющиеся локальные запуски Поделка, добавлена общая фикстура, отдельные сценарии изолированы, прежние сценарии запуска тестов удалены.
Изолированные проверки ошибок
tests/ИзолированныеТесты.os, tests/ИзолированныеТесты/*
Добавлены проверки ошибок создания, запуска и логирования Поделка; прежние отдельные тестовые файлы удалены.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

  • autumn-library/autumn#116: затрагивает те же зависимости и тестовый код Поделки.

Poem

Я, кролик, тесты усадил
В единый контекст и оградил.
Ошибки — в изоляцию,
Зависимостям — ревизию.
Теперь проверки скачут ловко!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed Заголовок кратко и точно отражает основное изменение: миграцию тестов на oneunit.
Description check ✅ Passed Описание прямо соответствует изменениям в PR и перечисляет миграцию раннера, изоляцию тестов и удаление task-скриптов.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/migrate-to-oneunit

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packagedef`:
- Around line 28-33: Исправьте объявление зависимости oneunit в конфигурации
пакета, указав версию 0.4.0 строковым значением вместо числового литерала, и
удалите устаревшую зависимость 1testrunner из блока РазработкаЗависитОт.

In `@tests/ВнешнееПриложение.os`:
- Around line 28-34: В tests/ВнешнееПриложение.os:28-34 восстановите в процедуре
ЗаготовкиВСтатическийИнициализаторДобавляютсяТолькоОдинРаз() двойное добавление
ТестовыйИнициализатор и проверку единственной регистрации в свежей изолированной
Поделке. В tests/ВнешнееПриложение.os:56-67 добавьте &Изолированный к сценарию с
таймером рогатки, чтобы он запускался непосредственно перед утверждениями.

In `@tests/ИзолированныеТесты.os`:
- Around line 1-2: Добавьте явное подключение пакета logos рядом с директивами
зависимостей в начале tests/ИзолированныеТесты.os, чтобы классы Логирование и
УровниЛога использовались из явно объявленной зависимости, аналогично
подключению asserts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0966d83c-0c18-4ccc-ab45-ca57b014103d

📥 Commits

Reviewing files that changed from the base of the PR and between 02f761f and 8be6978.

⛔ Files ignored due to path filters (4)
  • .github/workflows/qa.yml is excluded by !**/*.yml
  • .github/workflows/testing.yml is excluded by !**/*.yml
  • tests/oscript.cfg is excluded by !**/*.cfg
  • tests/ИзолированныеТесты/oscript.cfg is excluded by !**/*.cfg
📒 Files selected for processing (15)
  • packagedef
  • tasks/coverage.os
  • tasks/test.os
  • tasks/testIsolated.os
  • tests/ВнешнееПриложение.os
  • tests/ИзолированныеТесты.os
  • tests/ИзолированныеТесты/ВЗаготовкуНельзяПрилепитьПластилин.os
  • tests/ИзолированныеТесты/ДваЖелудяСОднимИменемКонфликтуют.os
  • tests/ИзолированныеТесты/ДвухВерховныхЖелудейБытьНеМожет.os
  • tests/ИзолированныеТесты/ДубСНекорректнойЗавязью.os
  • tests/ИзолированныеТесты/ПадениеРогаткиДолжноБытьЗалогировано.os
  • tests/ИзолированныеТесты/ПовторениеНеповторяемыхПараметровКидаетИсключение.os
  • tests/ИзолированныеТесты/ПроверкаИнтерфейсаНапильника.os
  • tests/ИзолированныеТесты/ПроверкаНекорректногоХарактера.os
  • tests/Поделка.os
💤 Files with no reviewable changes (11)
  • tests/ИзолированныеТесты/ПроверкаНекорректногоХарактера.os
  • tests/ИзолированныеТесты/ДвухВерховныхЖелудейБытьНеМожет.os
  • tasks/coverage.os
  • tests/ИзолированныеТесты/ПовторениеНеповторяемыхПараметровКидаетИсключение.os
  • tests/ИзолированныеТесты/ДваЖелудяСОднимИменемКонфликтуют.os
  • tasks/testIsolated.os
  • tests/ИзолированныеТесты/ПроверкаИнтерфейсаНапильника.os
  • tasks/test.os
  • tests/ИзолированныеТесты/ПадениеРогаткиДолжноБытьЗалогировано.os
  • tests/ИзолированныеТесты/ДубСНекорректнойЗавязью.os
  • tests/ИзолированныеТесты/ВЗаготовкуНельзяПрилепитьПластилин.os

Comment thread packagedef Outdated
Comment on lines +28 to +33
.РазработкаЗависитОт("1testrunner")
.РазработкаЗависитОт("asserts")
.РазработкаЗависитОт("coverage")
.РазработкаЗависитОт("fs")
.РазработкаЗависитОт("decorator", "1.7.1")
.РазработкаЗависитОт("decorator", "2.0.8")
.РазработкаЗависитОт("oneunit", 0.4.0)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Исправьте синтаксическую ошибку и удалите устаревшую зависимость.

Пайплайн падает при парсинге конфигурации пакета. Версия oneunit указана как число с двумя точками (0.4.0), что вызывает синтаксическую ошибку. Значение версии должно быть строкой "0.4.0".
Кроме того, поскольку PR мигрирует тестовый контур на oneunit (согласно описанию), зависимость от 1testrunner больше не используется и её следует удалить.

🛠 Предлагаемое исправление
-        .РазработкаЗависитОт("1testrunner")
         .РазработкаЗависитОт("asserts")
         .РазработкаЗависитОт("coverage")
         .РазработкаЗависитОт("fs")
         .РазработкаЗависитОт("decorator", "2.0.8")
-        .РазработкаЗависитОт("oneunit", 0.4.0)
+        .РазработкаЗависитОт("oneunit", "0.4.0")
🧰 Tools
🪛 GitHub Actions: Контроль качества / 2_sonar _ test.txt

[error] 33-33: opm install failed: Ошибка в строке: 33,44 — Некорректно указана десятичная точка в числе

🪛 GitHub Actions: Контроль качества / sonar _ test

[error] 33-33: Ошибка в строке: 33,44. Некорректно указана десятичная точка в числе.

🪛 GitHub Actions: Производительность / 0_test (default) _ build (ubuntu-latest, default, 1testrunner).txt

[error] 33-33: opm install failed while processing module: Ошибка в строке 33,44 — некорректно указана десятичная точка в числе.

🪛 GitHub Actions: Производительность / 3_test (default) _ build (macos-latest, default, 1testrunner).txt

[error] 33-33: Ошибка в строке: 33,44. Некорректно указана десятичная точка в числе.

🪛 GitHub Actions: Производительность / test (default) _ build (macos-latest, default, 1testrunner)

[error] 33-33: Ошибка в строке 33,44: Некорректно указана десятичная точка в числе.

🪛 GitHub Actions: Производительность / test (default) _ build (ubuntu-latest, default, 1testrunner)

[error] 33-33: Ошибка в строке: 33,44. Некорректно указана десятичная точка в числе

🪛 GitHub Actions: Производительность / test (dev) _ build (windows-latest, dev, 1testrunner)

[error] 33-33: During CI step opm install -l --dev: incorrect decimal point in number (Ошибка в строке: 33,44). Code: .РазработкаЗависитОт("oneunit", 0.4.<<?>>0)

🪛 GitHub Actions: Тестирование / 0_test (default) _ build (macos-latest, default, oneunit).txt

[error] 33-33: Module error: incorrect decimal point in a number (Ошибка в строке: 33,44).

🪛 GitHub Actions: Тестирование / 3_test (default) _ build (windows-latest, default, oneunit).txt

[error] 33-33: Package definition error: Ошибка в строке 33,44 / Некорректно указана десятичная точка в числе (incorrect decimal point in a number) while processing D:\a\autumn\autumn\packagedef.

🪛 GitHub Actions: Тестирование / 4_test (dev) _ build (macos-latest, dev, oneunit).txt

[error] 33-33: Compilation error in packagedef at column 44: invalid decimal point in number (triggered by code like ".РазработкаЗависитОт("oneunit", 0.4.<<?>>0)").

🪛 GitHub Actions: Тестирование / test (default) _ build (macos-latest, default, oneunit)

[error] 33-33: Ошибка в строке 33,44: Некорректно указана десятичная точка в числе (парсинг/валидация packagedef). Процесс завершился с exit code 1.

🪛 GitHub Actions: Тестирование / test (default) _ build (ubuntu-latest, default, oneunit)

[error] 33-33: opm/package definition parsing failed: incorrect decimal point in number at line 33,44. Step failed during 'opm install -l --dev' (Process completed with exit code 1).

🪛 GitHub Actions: Тестирование / test (default) _ build (windows-latest, default, oneunit)

[error] 33-33: packagedef: Некорректно указана десятичная точка в числе. {Модуль D:\a\autumn\autumn\packagedef / Ошибка в строке: 33,44}

🪛 GitHub Actions: Тестирование / test (dev) _ build (macos-latest, dev, oneunit)

[error] 33-33: opm install failed: invalid decimal point in number. (line 33,44) Offending expression: .РазработкаЗависитОт("oneunit", 0.4.<<?>>0)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packagedef` around lines 28 - 33, Исправьте объявление зависимости oneunit в
конфигурации пакета, указав версию 0.4.0 строковым значением вместо числового
литерала, и удалите устаревшую зависимость 1testrunner из блока
РазработкаЗависитОт.

Source: Pipeline failures

Comment on lines 28 to 34
Процедура ЗаготовкиВСтатическийИнициализаторДобавляютсяТолькоОдинРаз() Экспорт

// Дано
Осень.ДобавитьЗаготовкуДляАвтоИнициализации("ТестовыйИнициализатор");
Осень.ДобавитьЗаготовкуДляАвтоИнициализации("ТестовыйИнициализатор");

// Когда
Заготовки = Осень.ПолучитьЗаготовкиДляАвтоИнициализации();

// Тогда
Ожидаем.Что(Заготовки, "Заготовки задублированы").ИмеетДлину(0); // Не используется

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Сценариям жизненного цикла запуска нужна свежая изолированная Поделка. После перехода на общий контекст один тест утратил подготовку, а другой стал зависеть от времени запуска.

  • tests/ВнешнееПриложение.os#L28-L34: восстановите двойное добавление ТестовыйИнициализатор и проверку единственной регистрации в изолированной среде.
  • tests/ВнешнееПриложение.os#L56-L67: добавьте &Изолированный, чтобы таймер рогатки запускался непосредственно перед утверждениями.
📍 Affects 1 file
  • tests/ВнешнееПриложение.os#L28-L34 (this comment)
  • tests/ВнешнееПриложение.os#L56-L67
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/ВнешнееПриложение.os` around lines 28 - 34, В
tests/ВнешнееПриложение.os:28-34 восстановите в процедуре
ЗаготовкиВСтатическийИнициализаторДобавляютсяТолькоОдинРаз() двойное добавление
ТестовыйИнициализатор и проверку единственной регистрации в свежей изолированной
Поделке. В tests/ВнешнееПриложение.os:56-67 добавьте &Изолированный к сценарию с
таймером рогатки, чтобы он запускался непосредственно перед утверждениями.

Comment on lines +1 to +2
#Использовать asserts
#Использовать "../src"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Укажите явную зависимость от logos.

В тестах (например, в строках 82-83) используются классы Логирование и УровниЛога, которые предоставляются пакетом logos. Рекомендуется явно импортировать этот пакет для надежности контекста, аналогично пакету asserts.

🛠 Предлагаемое исправление
 `#Использовать` asserts
+#Использовать logos
 `#Использовать` "../src"
📝 Committable suggestion

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

Suggested change
#Использовать asserts
#Использовать "../src"
`#Использовать` asserts
`#Использовать` logos
`#Использовать` "../src"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/ИзолированныеТесты.os` around lines 1 - 2, Добавьте явное подключение
пакета logos рядом с директивами зависимостей в начале
tests/ИзолированныеТесты.os, чтобы классы Логирование и УровниЛога
использовались из явно объявленной зависимости, аналогично подключению asserts.

@sfaqer
sfaqer force-pushed the feature/migrate-to-oneunit branch 2 times, most recently from c0352b6 to c70434f Compare July 16, 2026 00:21
@coveralls

coveralls commented Jul 16, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 29461772706

Coverage increased (+0.9%) to 89.445%

Details

  • Coverage increased (+0.9%) from the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • 25 coverage regressions across 4 files.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

25 previously-covered lines in 4 files lost coverage.

File Lines Losing Coverage Coverage
src/internal/Классы/ФабрикаЖелудей.os 12 96.23%
src/Модули/ТипыПрилепляемыхЖелудей.os 8 7.69%
src/Модули/Осень.os 4 50.0%
src/internal/Классы/ЗапускательПриложения.os 1 93.33%

Coverage Stats

Coverage Status
Relevant Lines: 1279
Covered Lines: 1144
Line Coverage: 89.44%
Coverage Strength: 1476.79 hits per line

💛 - Coveralls

Заменили 1testrunner на oneunit: process-level изоляция для тестов,
отравляющих общий прогон (конфликты желудей, падающие импорты,
мутация процесс-глобального состояния), теперь делается аннотацией
&Изолированный вместо ручного вынесения в отдельную папку с тестами
и отдельным task-скриптом на процесс.
@sfaqer
sfaqer force-pushed the feature/migrate-to-oneunit branch from c70434f to 95d65b2 Compare July 16, 2026 00:33
@sonar-openbsl-ru-qa-bot

Copy link
Copy Markdown

@nixel2007
nixel2007 merged commit f709ed2 into master Jul 16, 2026
34 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