Skip to content

Add canonical TESTING.md (v1.2.0, coverlet.collector) - #18

Open
CTristan wants to merge 2 commits into
mainfrom
add/testing-standards-v1
Open

Add canonical TESTING.md (v1.2.0, coverlet.collector)#18
CTristan wants to merge 2 commits into
mainfrom
add/testing-standards-v1

Conversation

@CTristan

@CTristan CTristan commented May 9, 2026

Copy link
Copy Markdown
Member

Summary

First landing of the canonical docs/TESTING.md for the Open Lobotomy org, plus an in-flight v1.2.0 update that migrates coverage from coverlet.msbuild to coverlet.collector. Two commits stacked on this branch:

  1. 0b8d0ee — initial canonical TESTING.md (v1.1.0).
  2. 19c8b23 — v1.2.0 update: drops the coverlet.msbuild row from the framework table, adds a runsettings explainer.

The two commits are kept distinct so the v1.2.0 change is reviewable in isolation, but the squash-merge will land them as a single canonical file in main.

Why v1.2.0

The original v1.1.0 row pinned both coverlet.collector and coverlet.msbuild because the toolchain used the msbuild build-time instrumentation path. That path is incompatible with dotnet test --no-build: instrumentation hooks only fire during a build step, so --no-build runs silently produce empty coverage reports. This surfaced on LobotomyCorporation.Mods.ConfigurationManager.Integration PR #1 — fix in flight.

Coordinated PRs

  • open-lobotomy/Tooling#40 — switches CiRunner and CoverageThresholdChecker to the collector path. Must merge before consumers can drop their msbuild references via the next OpenLobotomy.Standards prerelease.
  • Consumer migration issues opened in: open-lobotomy/Debug-Panel#2, open-lobotomy/Harmony-2-for-LMM#1, CTristan/lobotomy-corporation-mods#144, CTristan/LobCorp.ConfigurationManager#7, CTristan/the-silent-orchestrator#2.

Test plan

  • Markdown renders correctly on GitHub
  • Version header bump (1.1.0 → 1.2.0) and Last updated field updated
  • After merge, sync-org-docs workflow opens PRs in every dotnet-standards-tagged consumer to refresh docs/org/TESTING.md

Defines the org-wide C# testing standard that every consumer repo
mirrors at its root: framework stack pins, test project naming
(.Tests plural), class/method naming (Method_Scenario_Expected),
80/80/80 coverage thresholds, Category 1/2 boundary separation
with [ExcludeFromCodeCoverage], three-way InternalsVisibleTo
classification (library / application / analyzer-or-generator),
I/O abstraction via IFileSystem, and AutoFixture guidance.

Drift will be enforced by the forthcoming
`dotnet ci check-testing-doc` subcommand in OpenLobotomy.Tooling.

Version 1.0.0.
The org-wide testing standard moves off coverlet.msbuild build-time
instrumentation and onto the coverlet.collector VSTest XPlat Code Coverage
data collector. The old path was incompatible with `dotnet test --no-build`
because instrumentation hooks only fire during a build step.

Changes in this revision:
- Drop the coverlet.msbuild row from the framework version table.
- Add a runsettings explainer to the Coverage thresholds section, including
  the canonical coverlet.runsettings shape that selects OpenCover output
  for the threshold checker.

Coordinated PRs:
- open-lobotomy/Tooling#40 — switch CiRunner + CoverageThresholdChecker to
  the collector path.
- Per-consumer migration tracked in: Debug-Panel#2, Harmony-2-for-LMM#1,
  CTristan/lobotomy-corporation-mods#144,
  CTristan/LobCorp.ConfigurationManager#7,
  CTristan/the-silent-orchestrator#2.
Copilot AI review requested due to automatic review settings May 9, 2026 06:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a canonical docs/TESTING.md to the org-level .github repository to standardize testing, naming, coverage, and IVT policies across Open Lobotomy repos, including updated guidance for collecting coverage via coverlet.collector.

Changes:

  • Introduces a shared testing standards document with pinned test/coverage package versions.
  • Documents org-wide conventions for test naming, coverage thresholds, and boundary separation (Category 1/2).
  • Clarifies IVT policy by project contract type (library vs application vs analyzer/generator) and documents coverage collection via VSTest data collector + coverlet.runsettings.

Comment thread docs/TESTING.md
Comment on lines +9 to +11
This document defines testing conventions for all Open Lobotomy repositories. It is the canonical source — consumer repos receive a synced copy at `docs/org/TESTING.md` via the `sync-org-docs` workflow in `open-lobotomy/.github`. Do not edit the synced copy directly; changes made here flow out to every repo tagged with the `dotnet-standards` topic.

When updating this file: bump `Version` in the header, update `Last updated`, and merge to `main`. The sync workflow will open a PR in every tagged consumer repo automatically.
Comment thread docs/TESTING.md
| AutoFixture.Xunit3 | 4.19.0 |
| coverlet.collector | 8.0.0 |

When a version bump is needed, update `open-lobotomy-tooling`'s `Directory.Packages.props` first, verify its tests pass, then bump this table (minor version) and propagate.
Comment thread docs/TESTING.md

---

*Version 1.0.0. Changes are proposed via PR to `open-lobotomy/.github`; approved changes bump the version in the header and trigger downstream sync via `dotnet ci sync-testing-doc`.*
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.

2 participants