Skip to content

feat: add reactive plugin shim project#258

Merged
ChrisPulman merged 1 commit into
mainfrom
CP_reactive-shim-projects
Jul 5, 2026
Merged

feat: add reactive plugin shim project#258
ChrisPulman merged 1 commit into
mainfrom
CP_reactive-shim-projects

Conversation

@ChrisPulman

@ChrisPulman ChrisPulman commented Jul 5, 2026

Copy link
Copy Markdown
Member

What kind of change does this PR introduce?

Adds a reactive plugin shim project and supporting test coverage for the shared Extensions.Hosting.Plugins codebase.

What is the new behavior?

  • Extensions.Hosting.Plugins.Reactive builds from the same source as Extensions.Hosting.Plugins using linked compile items and REACTIVE_SHIM.
  • Shared plugin source exposes ReactiveMarbles.Extensions.Hosting.Reactive.Plugins namespaces when the shim symbol is defined.
  • Coverage is scoped to production Extensions.Hosting.* assemblies and includes the new reactive plugin assembly.
  • Plugin, reactive shim, assembly loading, hosted service, resource mutex, and SingleInstance host-builder paths have broader TUnit coverage.

What is the current behavior?

Extensions.Hosting.Plugins only builds a single non-reactive package surface, and the test coverage configuration does not include a reactive sibling assembly.

Checklist

  • Tests have been added or updated (for bug fixes / features)
  • Docs have been added or updated (for bug fixes / features)
  • Changes target the main branch
  • PR title follows Conventional Commits

Additional information

Validation performed locally:

  • dotnet test --solution Extensions.Hosting.slnx -c Release --coverage --coverage-output-format cobertura --results-directory .\TestResults -- --output Detailed
  • dotnet build Extensions.Hosting.slnx -c Release -warnaserror --no-restore /m:1 '/clp:ErrorsOnly;Summary'

MTP coverage summary: 100.00% line coverage for configured Extensions.Hosting.* modules; Extensions.Hosting.Plugins, Extensions.Hosting.Plugins.Reactive, and Extensions.Hosting.SingleInstance all report no missed source lines.

GitHub CI: BuildOnly / windows-latest passed on amended commit 9c59e6b.

Projects:

- Add Extensions.Hosting.Plugins.Reactive as a linked-source project over Extensions.Hosting.Plugins with REACTIVE_SHIM defined.

- Add the ReactiveUI.Primitives.Reactive central package version and include the reactive project in the solution and test project references.

- Add conditional namespaces for the shared plugin source so non-reactive and reactive assemblies expose distinct API surfaces.

Quality:

- Expand TUnit coverage for plugin scanning, assembly loading, hosted service disposal, plugin builder behavior, reactive shim contracts, and SingleInstance mutex fault paths.

- Scope coverage configuration to Extensions.Hosting.* production assemblies while excluding examples, logging, tests, and runner artifacts.

- Add a narrow internal ResourceMutex test seam so timeout, unauthorized acquisition, and release-failure paths are covered without suppressions.

- Resolve analyzer findings in platform/example code and plugin internals so Release builds pass with warnings as errors.
@ChrisPulman ChrisPulman force-pushed the CP_reactive-shim-projects branch from 2e5fc8c to 9c59e6b Compare July 5, 2026 19:12
@ChrisPulman ChrisPulman marked this pull request as ready for review July 5, 2026 19:46
@ChrisPulman ChrisPulman merged commit 94828e8 into main Jul 5, 2026
1 check passed
@ChrisPulman ChrisPulman deleted the CP_reactive-shim-projects branch July 5, 2026 19:46
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