Skip to content

Verify netcoreapp3.1/net5.0 test discovery isn't silently zero (spot-check vs ETL-FixedWidth #336 / ETL-Csv #255) #177

Description

@Chris-Wolfgang

Problem

A fleet-wide test-matrix audit (2026-08-26) confirmed a real, live bug in ETL-FixedWidth (fixed in Chris-Wolfgang/ETL-FixedWidth#336) and ETL-Csv (Chris-Wolfgang/ETL-Csv#255, still unfixed): netcoreapp3.1 and net5.0 test runs can silently produce zero tests. Cause: xunit.runner.visualstudio 2.8.2 ships no discovery adapter for those two TFM slots. dotnet test --framework netcoreapp3.1 (or net5.0) then reports "No test is available" and exits 0 — CI stays green, and the coverage gate doesn't catch it either, since other TFMs in the same run produce real coverage and mask the dead slots.

This repo's test project targets net5.0 with the fleet's standard xunit.runner.visualstudio pinning convention (the audit pass didn't confirm whether netcoreapp3.1 is also targeted here — check that as part of this issue). Either way there's exposure on at least the net5.0 slot, and it has not been individually verified either way — this issue exists to do that verification, not because a failure has been confirmed here specifically.

Required action

  1. Check this repo's test csproj for exactly which of net5.0/netcoreapp3.1 it targets.
  2. Run dotnet test --framework net5.0 (and --framework netcoreapp3.1 if present) locally.
  3. Confirm a real (non-zero) test count is discovered and passes on each.
  4. If any reports zero tests / "No test is available", apply the same fix as ETL-FixedWidth#336: split the xunit.runner.visualstudio reference so that slot pins to 2.4.5, keeping 2.8.2 for the rest (both capped allowedVersions="(,3.0.0)" per the fleet's xunit_runner_3x_compatible convention).
  5. If everything discovers and runs tests correctly, close this issue as verified-clean.

Reference

Chris-Wolfgang/ETL-FixedWidth#336 (the fix), Chris-Wolfgang/ETL-Csv#255 (the sibling repo with the same confirmed-but-unfixed bug), and the fleet-wide guard proposed in Chris-Wolfgang/repo-template#456 (would catch this automatically for every repo once built, making per-repo manual verification like this unnecessary going forward).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions