Skip to content

Run specs on Specifications 5 and xUnit v3 as executables #762

Open

Description

@woksin

Move every spec project to Cratis.Specifications.XUnit.v3 5.0.0 and xunit.v3, built as executables (OutputType Exe) and run as executables in CI instead of dotnet test, following the Fundamentals template (Cratis/Fundamentals#1214).

  • Spec projects stay on net10.0. Production library target frameworks do not change.
  • The package pins that Stage scaffolds into generated applications are a separate, deliberate decision and are not changed as a side effect.
  • Discovered test counts and outcomes must match exactly before and after, per project.
  • Test-only change; no release.

Status

State: Paused — Sequenced after L13's active #853 Specifications5.1.0 foundation; L13 sole migration writer, L33 read-only runner planner (confirmed with L51). No #762 implementation started; preserved spec5-xunit3@94892b2f must not be merged wholesale (714main-only commits/40overlapping paths). Runner slice: all11
Branch: stage-839-composite-diagnostic
Scope: L33 fix-and-close evaluation
Delivered: Nothing yet.
Remaining: To be confirmed.
Follow-ups: None.

Activity

  1. self-assigned this
    on Oct 23, 2026
  2. changed the issue type fromtoon Oct 25, 2026
  3. woksin commented on Oct 29, 2026

    @woksin
    ContributorAuthor

    Analysis and proposed solution

    Current behavior
    Central package pins still select Specifications 4.1.1 and xUnit 2.9.3. Shared source configuration adds test dependencies to Debug builds of ordinary source projects. CI also invokes dotnet test directly for renderer and Host probes in dotnet-build.yml.

    Root cause / gap
    Tests are not confined to dedicated spec projects: inline specs share production projects. Migrating only package names or dedicated projects would leave inconsistent discovery and execution paths. Existing executable entry points also need explicit compatibility checks.

    Proposed change
    Inventory every project and CI invocation, recording discovered test identities, counts and outcomes per project before migration. Update central testing pins and shared Debug configuration to Specifications 5/xUnit v3 executable execution, handling projects that already own an entry point separately. Update dedicated spec projects, CI helpers and direct probe invocations together. Preserve filters and nonzero-test guards. Add runner regression specs under for_SpecRunner/when_running_executable_specs for exit-code propagation, filtering and zero-discovery rejection. Compare identities, counts and outcomes per project afterward, not just aggregate totals. Update the C# spec guidance to match the new packages.

    Size, risk and release intent
    L; test-discovery and runner compatibility risk; no-release. Keep net10.0 and production library output unchanged outside test configuration.

    Dependencies and blockers
    Use Cratis/Fundamentals#1214 as the compatibility reference; verify its final executable-runner conventions. Generated-application scaffold pins are explicitly excluded and must remain unchanged. No upstream implementation blocker is established by this reading.

  4. removed their assignment
    on Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions