Skip to content

Общее описание жизненного цикла и явные операции фабрики - #41

Merged
sfaqer merged 1 commit into
masterfrom
refactor/lifecycle-instance-factory
Nov 7, 2026
Merged

sfaqer merged 1 commit into
masterfrom
refactor/lifecycle-instance-factory

Conversation

@sfaqer

@sfaqer sfaqer commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

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

Фабрика разделена на операции СоздатьДляИсполнения, СоздатьДляВычисления и СоздатьДляУсловийИзоляции. Результат создания явно различает состояния Создан, НеСоздавался и ОшибкаСоздания, сохраняя экземпляр, вывод и причину ошибки. Потребителям больше не нужно определять исход по сочетанию двух Опциональный.

Новые описания и результат создания — компанейские желуди с блестяшками, создаваемые через табакерки. Сохранены порядок этапов, владение ресурсами, создание одиночки на прогон, проверка условий и получение значений через события.

Проверено: полный локальный прогон 313/313, 12/12 наборов, без ошибок и пропусков; временный каталог OneUnit пуст, git diff --check проходит. Дополнены сценарии пропуска создания, отдельных экземпляров для вычислений, кэширования одиночки и подготовки полей при единственном этапе ПослеВсех.

Summary by CodeRabbit

  • Новые возможности
    • Добавлена более гибкая обработка этапов жизненного цикла тестовых наборов: подготовка экземпляра выполняется только на этапах, где она необходима.
    • Проверки условий изоляции теперь используют экземпляр набора, когда это требуется.
  • Исправления
    • Ошибки создания экземпляра корректно отражаются в результате выполнения с указанием причины и собранного вывода.
    • Исправлена обработка значений поставщиков для этапа ПослеВсех; проверка регистрации поставщиков учитывает необходимость подготовки набора.

@coderabbitai

coderabbitai Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

Изменение вводит объекты для описания этапов жизненного цикла набора и типизированные результаты создания экземпляров. Фабрика, обнаружитель, проверки условий изоляции и исполнитель используют новые интерфейсы. Тесты охватывают создание экземпляров, подготовку и методы ПослеВсех.

Changes

Жизненный цикл и создание экземпляров

Layer / File(s) Summary
Модель жизненного цикла и обнаружение методов
src/core/internal/Классы/ЭтапЖизненногоЦикла.os, src/core/internal/Классы/ЖизненныйЦиклНабора.os, src/core/internal/Классы/ОпределениеТестНабора.os, src/core/internal/Классы/ОбнаружительТестов.os
Добавлены объекты этапа и жизненного цикла. Определение набора предоставляет описание цикла, а обнаружитель получает из него методы этапов для проверок сигнатур и регистрации параметров.
Типизированный результат и способы создания
src/core/internal/Модули/СостоянияСозданияЭкземпляра.os, src/core/internal/Классы/РезультатСозданияЭкземпляра.os, src/core/internal/Классы/ФабрикаЭкземпляров.os, src/core/internal/Классы/ПроверкаУсловийИзоляции.os, tests/ПоставщикиЗначений.os, tests/Обнаружитель.os
Фабрика возвращает результат с состоянием, экземпляром, выводом и причиной ошибки. Добавлены способы создания для условий изоляции и вычисления; тесты проверяют эти способы и использование нового интерфейса.
Исполнение этапов и проверки поставщиков
src/core/internal/Классы/АсинхронныйИсполнительТестов.os, tests/Исполнитель.os, tests/ПоставщикиЗначений.os, tests/fixtures/resolvers/*
Исполнитель получает методы из жизненного цикла и вызывает подготовку только для этапов, которым она требуется. Тесты и фикстуры проверяют выполнение ПослеВсех, порядок вызовов, передачу значений поставщика и обработку ошибок создания.

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

Change: Refactor

Sequence Diagram(s)

sequenceDiagram
  participant Исполнитель as АсинхронныйИсполнительТестов
  participant Фабрика as ФабрикаЭкземпляров
  participant Результат as РезультатСозданияЭкземпляра
  participant Определение as ОпределениеТестНабора
  participant Цикл as ЖизненныйЦиклНабора
  Исполнитель->>Фабрика: СоздатьДляИсполнения
  Фабрика->>Результат: формирует типизированный результат
  Фабрика-->>Исполнитель: возвращает результат создания
  Исполнитель->>Определение: ЖизненныйЦикл()
  Определение-->>Исполнитель: возвращает описание цикла
  Исполнитель->>Цикл: получает методы этапа
  Исполнитель->>Исполнитель: выполняет подготовку и методы этапа
Loading

Возможные связанные PR

  • sfaqer/OneUnit#37: этот PR меняет фабрику и исполнение, добавленные в PR #37, включая API создания экземпляров и контракт жизненного цикла.
  • sfaqer/OneUnit#39: оба PR меняют проверку регистрации поставщиков и обработку полей для этапов ПередВсеми и ПослеВсех.
Merge Risk: Minimal · up to 89691

No merge-blocking defect is established for the lifecycle and instance-creation refactor. Merge after normal build and test checks.

Pre-merge checks: Passed 5

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed Заголовок «Общее описание жизненного цикла и явные операции фабрики» соответствует основным изменениям. Добавлен класс ЖизненныйЦиклНабора, общий для обнаружителя и исполнителя. Фабрика получила явные…
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
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.
Full details: Title check

Explanation

Заголовок «Общее описание жизненного цикла и явные операции фабрики» соответствует основным изменениям. Добавлен класс ЖизненныйЦиклНабора, общий для обнаружителя и исполнителя. Фабрика получила явные операции СоздатьДляИсполнения, СоздатьДляВычисления и СоздатьДляУсловийИзоляции, а также тип РезультатСозданияЭкземпляра с состояниями Создан, НеСоздавался и ОшибкаСоздания. Заголовок называет обе части изменений и не содержит шума, например списка файлов.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (14 skipped: 14 unsupported.)

Finishing Touches

Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

Я, кролик, встречаю этапы в ряд,
И новый результат храню я рад.
Подготовка — только там, где нужно,
Тест и ПослеВсех идут послушно.
Поставщик шуршит: «Значения готовы!»
А я несу морковку на проверку снова.

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 62bc7dff-1410-40f8-9427-94f4aebe6905
Commits

Reviewing files that changed from the base of the PR and between a254e5d and 896918a.

Files selected for processing: 14

  • src/core/internal/Классы/АсинхронныйИсполнительТестов.os
  • src/core/internal/Классы/ЖизненныйЦиклНабора.os
  • src/core/internal/Классы/ОбнаружительТестов.os
  • src/core/internal/Классы/ОпределениеТестНабора.os
  • src/core/internal/Классы/ПроверкаУсловийИзоляции.os
  • src/core/internal/Классы/РезультатСозданияЭкземпляра.os
  • src/core/internal/Классы/ФабрикаЭкземпляров.os
  • src/core/internal/Классы/ЭтапЖизненногоЦикла.os
  • src/core/internal/Модули/СостоянияСозданияЭкземпляра.os
  • tests/fixtures/resolvers/НаборСНезарегистрированнымПоставщикомПоляИПослеВсех.os
  • tests/fixtures/resolvers/НаборСПолемОтПоставщикаИПослеВсех.os
  • tests/Исполнитель.os
  • tests/Обнаружитель.os
  • tests/ПоставщикиЗначений.os

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

@sfaqer
sfaqer merged commit 270b56c into master Nov 7, 2026
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

Development

Successfully merging this pull request may close these issues.

1 participant