Skip to content

Conversation

@sfaqer
Copy link
Owner

@sfaqer sfaqer commented Nov 21, 2025

closes: #13

Summary by CodeRabbit

  • Bug Fixes

    • Пустые наборы тестов теперь корректно отмечаются как «Пропущён» с явной причиной ("В наборе не найдены тесты").
    • Исправлена последовательность публикации результатов для корректного отображения статусов пропущенных тестов.
  • Tests

    • Добавлены тестовые данные и проверка для сценария с пустым набором тестов.

✏️ Tip: You can customize this high-level summary in your review settings.

…мечен пропущенным, с указанием соответствующей причины
@coderabbitai
Copy link

coderabbitai bot commented Nov 21, 2025

Walkthrough

Переработана логика обработки пропущенных тестов в асинхронном исполнителе и добавлена пост-агрегационная проверка: пустые наборы конвертируются в состояние "Пропущен" с причиной "В наборе не найдены тесты". Переупорядочена публикация событий в соответствии с новой ветвью вычисления Пропустить.

Changes

Cohort / File(s) Summary
Основная логика исполнителя
src/core/internal/Классы/АсинхронныйИсполнительТестов.os
Упрощена/переписана ветвление обработки Пропустить: удалено начальное присваивание, добавлена ветка при РезультатПропустить.РезультатВыполненияМетода.Пропустить = Истина, перемещена и переорганизована публикация событий, добавлена обработка пустых наборов — если нет дочерних тестов, результат набора меняется на Пропущен с причиной "В наборе не найдены тесты".
Тестовые данные и проверка
tests/fixtures/НаборБезТестов.os, tests/Обнаружитель.os
Добавлен fixture с пустым набором тестов; в тесте Обнаружитель.os увеличен ожидаемый индекс/количество наборов и добавлен регион для проверки набора без тестов (проверка длины дочерних элементов = 0).

Sequence Diagram

sequenceDiagram
    participant Exec as АсинхронныйИсполнитель
    participant Plan as План/НаборТестов
    participant SkipLogic as ЛогикаПропусков
    participant Events as СистемаСобытий

    Exec->>Plan: Начать выполнение набора
    Plan->>Plan: Агрегировать результаты дочерних тестов

    alt Набор пуст (дочерних тестов нет)
        Plan->>SkipLogic: Установить результат = Пропущен\n(Причина: "В наборе не найдены тесты")
        SkipLogic->>Events: Опубликовать результат набора (Пропущен)
    else Набор содержит тесты
        Plan->>SkipLogic: Проверка РезультатПропустить
        alt РезультатПропустить = Пропустить
            SkipLogic->>Events: Опубликовать результат теста/набора (Пропущен + Причина)
        else
            SkipLogic->>Events: Опубликовать результат теста/набора (обычный статус)
        end
    end

    Events->>Exec: Событие конец выполнения теста/набора
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Обратить внимание на ветвления в АсинхронныйИсполнительТестов.os: корректность условий по РезультатПропустить и отсутствие повторной/противоречивой публикации событий.
  • Проверить корректность формирования причины "В наборе не найдены тесты" и её попадание в итоговый объект результата.
  • Убедиться, что тесты в tests/Обнаружитель.os корректно отражают новый индекс/количество и что новый fixture используется ожидаемо.

Possibly related PRs

Poem

🐰 Я кролик в коде, нос по ветру,
Пустой набор — теперь не беду,
Помечен как "Пропущен" с ясной строкой,
Событие летит вправду домой,
Скок вперёд: порядок в логике мой. 🥕

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title check ⚠️ Warning Заголовок PR описывает решение (набор помечен пропущенным), но не упоминает целевую проблему - обнаружение метода ПолучитьСписокТестов в модуле тестов. Переформулировать заголовок, чтобы отразить основную цель: выдавать предупреждение при обнаружении метода ПолучитьСписокТестов в модуле тестов.
Linked Issues check ⚠️ Warning PR реализует автоматическую пометку пустых наборов как пропущенных, но не реализует основное требование #13: выдавать предупреждение при обнаружении метода ПолучитьСписокТестов на фазе разбора файлов. Добавить функциональность обнаружения метода ПолучитьСписокТестов при парсировании файлов тестов и вывод соответствующего предупреждения.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Out of Scope Changes check ✅ Passed Все изменения (обработка пустых наборов тестов, переработка логики пропуска, добавление тестового файла) являются защитной мерой, связанной с проблемой из issue #13, хотя не решают её полностью.
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/13

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e51afba and 1a41476.

📒 Files selected for processing (1)
  • tests/Обнаружитель.os (2 hunks)
🔇 Additional comments (2)
tests/Обнаружитель.os (2)

19-19: Корректное обновление ожидаемого количества наборов тестов.

Увеличение ожидаемого количества дочерних элементов с 15 до 16 соответствует добавлению нового тестового набора "НаборБезТестов".


1159-1179: Тест корректно реализован и фикстура согласована.

Проверка подтвердила, что:

  • Файл фикстуры tests/fixtures/НаборБезТестов.os существует и правильно структурирован
  • Номер порядка (14) соответствует индексу (15) в последовательности тестов
  • Пустой набор тестов корректно обозначен маркером &ТестовыйНабор
  • Тест корректно проверяет отсутствие дочерних элементов (0 детей)

Тестовая область хорошо реализована и соответствует всем требованиям.


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 merged commit 114cbac into master Nov 21, 2025
7 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

2 participants