Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
23578d4
Use --config-file CLI arg in coverlet.MTP (#2030)
alexthornton1 Sep 21, 2026
d212822
Fix silently empty coverage for shared-framework assemblies missing f…
Eljees Sep 22, 2026
c6d3894
Add regression test for #1727 (ExcludeByAttribute=CompilerGeneratedAt…
Eljees Sep 22, 2026
10a8051
Prepare release: update version + changelog (#2034)
daveMueller Sep 26, 2026
be3d696
adapt version + docs (#2035)
daveMueller Sep 27, 2026
8b7654e
Update 01-bug_report.md
Bertk Sep 29, 2026
61e3350
Add regression test for cli option --config-file (#2038)
Bertk Oct 1, 2026
3142be5
Bump Moq from 4.20.72 to 4.21.0 (#2044)
dependabot[bot] Oct 2, 2026
b330a1f
Bump Microsoft.Sbom.Targets from 4.1.5 to 4.1.13 (#2043)
dependabot[bot] Oct 2, 2026
45e98f9
Bump github/codeql-action from 4.37.9 to 4.38.2 (#2039)
dependabot[bot] Oct 2, 2026
ecd6fd5
fix regression issue 2045 (#2046)
Bertk Oct 3, 2026
221483a
fix URL and add note for PATH update (#2049)
Bertk Oct 13, 2026
710f301
Update centralized package versions (#2050)
Bertk Oct 14, 2026
a924cc3
Add System.Security.Cryptography.Pkcs package reference
Bertk Oct 14, 2026
d9e4357
add CollectorExtensionThresholdCoverageTests.cs (#2051)
Bertk Oct 15, 2026
b5ba919
use specific nuget packages versions for LEGACY (#2055)
Bertk Oct 18, 2026
39f6b6f
Compute branch reachability from the control-flow graph (supersedes #…
pcshrosbree Oct 20, 2026
870b835
Update Changelog.md document (#2057)
Bertk Oct 22, 2026
2e0a852
update SDK and runtime versions (#2059)
Bertk Oct 27, 2026
d587f8c
🔀 merge reviewed upstream history into the Codebelt fork
aicia-bot Nov 1, 2026
1ddc5ab
💬 document ancestry-preserving downstream synchronization
aicia-bot Nov 1, 2026
a15ddad
💬 record downstream sync validation and integration
aicia-bot Nov 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,28 @@ This fork is intentionally narrower than `coverlet-coverage/coverlet`. Preserve

## Upstream sync workflow

When synchronizing from `coverlet-coverage/coverlet`, keep the sync selective:
Synchronization flows only from `coverlet-coverage/coverlet` into `codebeltnet/coverlet`. Never push branches, tags, or pull requests to upstream. Preserve upstream ancestry while keeping file-level integration selective:

1. Read `UPSTREAM.md` before selecting changes. It records the reviewed upstream snapshot, completed ports, exclusions, and intentional fork differences. Fetch upstream without tags to avoid importing upstream release tags into this fork:

```powershell
git fetch --no-tags https://github.com/coverlet-coverage/coverlet.git master:refs/remotes/coverlet-upstream/master
```

2. Compare from the shared base:
2. Start an isolated synchronization branch from this fork's default branch after integrating any baseline PRs. Preserve existing work in its original worktree. Capture the fork base and exact upstream tip, then compare from the shared base:

```powershell
git merge-base HEAD coverlet-upstream/master
git log --oneline --left-right --cherry-pick HEAD...coverlet-upstream/master
```

Review every incoming commit as adopted, adapted, already present, or excluded. Use a normal `git merge --no-ff --no-commit <reviewed-upstream-tip>` and resolve paths individually, including automatic merge results. Do not use an `ours` strategy, blanket `-X ours`, or whole-tree restoration. Keep excluded surfaces excluded even though their commits become ancestors. If the tip is already an ancestor, record a no-change review instead of manufacturing a merge.

3. Port only changes that apply to the retained package surface: `src\coverlet.core`, `src\coverlet.MTP`, and the directly related tests.
4. Do not reintroduce upstream surfaces removed by this fork, including legacy console, collector, msbuild packages, legacy Azure Pipelines, broad upstream documentation, or `version.json`.
5. Preserve `Codebelt.Coverlet.MTP` package identity, `Coverlet.MTP` assembly identity, and the multi-targeted `netstandard2.0;net10.0;net11.0` layout.
6. Keep versioning on MinVer `v*` tags and the existing release workflow guards. Do not restore upstream Nerdbank.GitVersioning files.
7. Update `UPSTREAM.md` in the same change set as every upstream sync, including a no-change review. Record the operation date (`YYYY-MM-DD`), upstream repository/branch and exact reviewed commit, comparison base, source commits or PRs, what was ported or adapted, what was already present, and what was omitted or deferred with reasons. Link destination commits or the PR when available. Record validation actually performed, its target frameworks and outcomes, and any unresolved work. Distinguish reviewed, ported, tested, and released states; a reviewed upstream tip does not mean every preceding commit was merged. Update the entry when validation or integration completes, and preserve earlier entries.
7. Update `UPSTREAM.md` in the same change set as every upstream sync, including a no-change review. Record the operation date (`YYYY-MM-DD`), upstream repository/branch and exact reviewed commit, comparison base, source commits or PRs, what was ported or adapted, what was already present, and what was omitted or deferred with reasons. Link destination commits or the PR when available. Record validation actually performed, its target frameworks and outcomes, and any unresolved work. Distinguish reviewed, adopted, recorded in ancestry, tested, and released states; an upstream commit recorded as an ancestor does not mean every change in it was adopted. Update the entry when validation or integration completes, and preserve earlier entries.
When reconstructing earlier operations, verify release-tag targets and distinguish inherited upstream ancestry, selective ports, and Codebelt-only maintenance. Keep the original upstream marker (`v10.0.1-coverlet`) distinct from the later shared comparison base. State whether a date comes from a source commit, integration commit, or recorded operation; do not invent tag creation dates, synchronization dates, or validation results. Do not move tags to make the history appear aligned.
8. Keep meaningful production behavior differences from upstream documented in `UPSTREAM.md`, with a reason and source or regression-test link. Preserve upstream behavior by default; the target-framework focus and Codebelt packaging/tooling do not authorize unrelated features or silent coverage-semantic changes.
9. Adapt release notes to this fork's root `CHANGELOG.md`; describe only changes that were actually ported. Keep `README.md` focused on orientation and usage, with a link to `UPSTREAM.md`; keep the detailed sync ledger in `UPSTREAM.md` and the maintenance rules here.
Expand All @@ -33,4 +35,7 @@ When synchronizing from `coverlet-coverage/coverlet`, keep the sync selective:
git tag -d v<version>
```

11. Preserve both parents of the upstream merge: the fork baseline first and the pinned upstream tip second. Integrate the synchronization PR into this fork using **Create a merge commit**, never squash or rebase. The fork permits merge commits and does not require linear history; retain its other PR, deletion, and force-push protections. Require the retained Linux/Windows/macOS CI matrix before integration, and verify the package identity, framework groups, MinVer calculation, and release guards.
12. After integration, fetch this fork's default branch without tags and verify `git merge-base --is-ancestor <reviewed-upstream-tip> origin/master` succeeds and `git rev-list --left-right --count origin/master...<reviewed-upstream-tip>` reports zero on the upstream side. Record the destination commit or merged PR and CI results in the ledger; the PR provides the authoritative merge state and destination commit when the ledger is part of that PR. This is synchronization to a pinned snapshot, not authorization to release or publish a package.

Before running tests, ask for explicit approval. Build-only validation is acceptable when it does not execute tests.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ This major release adds .NET 11 support, removes the dedicated .NET 9 target, an
### Changed

- Target .NET 10 and .NET 11 alongside .NET Standard 2.0, with runtime dependency versions selected per target framework,
- Preserve reviewed upstream history through merge ancestry while retaining selective Codebelt file integration; the 2026-11-01 synchronization through `2e0a852` changes no production code, dependencies, or package layout,
- Exclude unreachable branches from branch coverage totals and from Cobertura, LCOV, and OpenCover branch details,
- Update Microsoft Testing Platform to 2.5.1, Microsoft.NET.Test.Sdk to 18.11.0, xunit.v3.mtp-v2 to 4.0.2, xunit.runner.visualstudio to 4.0.1, Moq to 4.21.0, and LinqKit.Microsoft.EntityFrameworkCore to 10.1.1,
- Update NuGet.Packaging and NuGet.Versioning to 7.9.0, retaining a NuGet.Versioning 6.14.3 override for .NET Standard 2.0,
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Cross-platform code coverage for .NET with explicit target framework support.

`Codebelt.Coverlet.MTP` is a deliberately narrow Codebelt-maintained fork of [Coverlet](https://github.com/coverlet-coverage/coverlet) for Microsoft Testing Platform integration. Coverlet remains the upstream project; this repository keeps the Coverlet engine and MTP integration recognizable while focusing package identity, target frameworks, dependency groups, and CI/CD on the Codebelt-maintained MTP package.

Reviewed upstream history is retained through [`2e0a852`](https://github.com/coverlet-coverage/coverlet/commit/2e0a852d3a0d9669d9c19445e366c69ccaaf6424) (2026-10-27). The [synchronization record](UPSTREAM.md) explains the adopted fixes, intentional Codebelt differences, and validation.

## Scope

This repository produces one public NuGet package: `Codebelt.Coverlet.MTP`. It preserves the implementation assembly name and namespace used by the MTP extension (`coverlet.MTP.dll`, `Coverlet.MTP`, and `Coverlet.MTP.TestingPlatformBuilderHook`) so existing Microsoft Testing Platform discovery remains compatible.
Expand Down
Loading
Loading