Skip to content

Extract the compliance library as source-only NuGet JasperFx.Events.ComplianceTests (P3.3) #5116

Description

@jeremydmiller

Part of #5110. Blocked by P3.1a/b/c proving the seam in Marten (and ideally P3.2a so the shared sources can use the generic registry forms). Target repo: JasperFx/jasperfx for the package; a Marten PR switches consumption.

Move Marten.Testing/Compliance/ (seam types + abstract suites + shared aggregate/event fixture types) to the jasperfx repo, packaged as a source-only NuGet: contentFiles C# sources, no compiled assembly.

Why source-only is forced, not preferred:

  • JasperFx.Events.SourceGenerator emits aggregate dispatchers per consuming assembly and binds each product's own session type (param matching by type-name suffix) — aggregates in a compiled DLL cannot dispatch correctly for both stores.
  • Compiling in the consumer also sidesteps JasperFx/Weasel version skew between the repos and the LangVersion/ImplicitUsings differences (sources are authored to the C#13 / explicit-usings floor).

Package requirements:

  • Declares compile-time expectations (JasperFx.Events, xunit.v3.extensibility.core) as documentation/dependency floor, not binary refs
  • No Main, no xunit.runner.json, no runner packages — runner/parallelization config stays repo-owned
  • Greenfield in jasperfx: every existing test project there is IsPackable=false; this becomes the repo's first packable test asset
  • Versioned like the other JasperFx packages so consumers pin and roll forward deliberately

Marten side: EventSourcingTests drops the local Compile-links and references the package; the concrete Marten fixture and subclasses stay in the Marten repo. Verify the full ES suite is unchanged before/after the switch.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions