Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ff81cf6
💥 remove legacy projects, workflows, and examples
aicia-bot Sep 18, 2026
7ab1ce5
🔧 add codebelt build system and ci pipeline
aicia-bot Sep 18, 2026
2e734f2
⬆️ update target frameworks and dependencies
aicia-bot Sep 18, 2026
8ba77b8
👔 update core instrumentation code
aicia-bot Sep 18, 2026
2eb82a1
✅ add and update test infrastructure
aicia-bot Sep 18, 2026
06ebb3b
💬 update documentation and guidelines
aicia-bot Sep 18, 2026
a15ee4d
🗑️ remove examples index and legacy test build configuration
aicia-bot Sep 18, 2026
6d3e2c9
🔧 move netframework reference assemblies version to project override
aicia-bot Sep 19, 2026
84ea2b7
➕ add hang dump testing extension
aicia-bot Sep 19, 2026
6b9e1a7
🧩 integrate mtp extension and fix test isolation
aicia-bot Sep 19, 2026
04732a7
🐛 restore module atomically to prevent loaded assembly corruption
aicia-bot Sep 19, 2026
6d276f2
🔧 align package versions to target framework generation
aicia-bot Sep 19, 2026
a614468
✅ update test helpers to handle UnauthorizedAccessException
aicia-bot Sep 19, 2026
31454f9
✅ add tests for FileSystem Move and atomic restore behavior
aicia-bot Sep 19, 2026
da48cff
🔧 update package validation test logger format to use runsettings
gimlichael Sep 19, 2026
e309110
🔧 configure sdk version detection for source root target
aicia-bot Sep 20, 2026
9965344
♻️ optimize aspnet framework directory resolution with linq
aicia-bot Sep 20, 2026
ac2296e
✅ add unknown assembly fallback test and enhance test cleanup
aicia-bot Sep 20, 2026
8c58545
🔧 replace reusable workflow with inline nuget publish steps
gimlichael Sep 20, 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
13 changes: 0 additions & 13 deletions .config/dotnet-tools.json

This file was deleted.

6 changes: 1 addition & 5 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
# Use the most recent .NET LTS as the base image
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS base

# Install the current .NET STS release SDK and shared frameworks side-by-side
# Install .NET 9 SDK and shared frameworks side-by-side
COPY --from=mcr.microsoft.com/dotnet/sdk:9.0 /usr/share/dotnet/sdk /usr/share/dotnet/sdk
COPY --from=mcr.microsoft.com/dotnet/sdk:9.0 /usr/share/dotnet/shared /usr/share/dotnet/shared

# Install the former .NET LTS release SDK and shared frameworks side-by-side
COPY --from=mcr.microsoft.com/dotnet/sdk:8.0 /usr/share/dotnet/sdk /usr/share/dotnet/sdk
COPY --from=mcr.microsoft.com/dotnet/sdk:8.0 /usr/share/dotnet/shared /usr/share/dotnet/shared
40 changes: 7 additions & 33 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,49 +1,23 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
// For format details, see https://aka.ms/devcontainer.json.
{
"name": "C# (.NET) Coverlet",
"build": {
"dockerfile": "./Dockerfile",
"context": "."
},
"customizations": {
"name": "Codebelt Coverlet MTP",
"build": {
"dockerfile": "./Dockerfile",
"context": "."
},
"customizations": {
"vscode": {
"extensions": [
"ms-dotnettools.csharp",
"ms-dotnettools.csdevkit",
"humao.rest-client",
"42Crunch.vscode-openapi",
"stoplight.spectral",
"ms-dotnettools.vscode-dotnet-runtime",
"GitHub.vscode-pull-request-github",
"ms-vscode.powershell",
"ms-azure-devops.azure-pipelines",
"GitHub.copilot",
"github.vscode-github-actions",
"bierner.markdown-preview-github-styles",
"mhutchie.git-graph",
"streetsidesoftware.code-spell-checker",
"streetsidesoftware.code-spell-checker-german",
"streetsidesoftware.code-spell-checker-english",
"fernandoescolar.vscode-solution-explorer"

]
}
}
// Features to add to the dev container. More info: https://containers.dev/features.
// "features": {},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [5000, 5001],
// "portsAttributes": {
// "5001": {
// "protocol": "https"
// }
// }

// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "dotnet restore",

// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}
2 changes: 0 additions & 2 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,6 @@ _mockLogger.Verify(x => x.Log(LogLevel.Information, It.Is<string>(s => s.Contain
When mocking interfaces, **reference actual adapter implementations** in the codebase:

- `src/coverlet.MTP/Logging/CoverletLoggerAdapter.cs` - Shows how to use `Microsoft.Testing.Platform.Logging.ILogger`.
- `src/coverlet.collector/DataCollection/CoverletLogger.cs` - Shows how to use VSTest platform logger.
- `src/coverlet.console/Logging/ConsoleLogger.cs` - Shows coverlet's internal `ILogger` implementation.
- `src/coverlet.core/Abstractions/ILogger.cs` - Coverlet's internal logger interface.

**Example from CoverletLoggerAdapter.cs:**
Expand Down
61 changes: 0 additions & 61 deletions .github/workflows/benchmark.yml

This file was deleted.

116 changes: 116 additions & 0 deletions .github/workflows/ci-pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: Codebelt Coverlet MTP CI

on:
pull_request:
branches: [master]
push:
branches: [master]
workflow_dispatch:

permissions:
contents: read

jobs:
build:
name: call-build
uses: codebeltnet/jobs-dotnet-build/.github/workflows/default.yml@v3
with:
projects: coverlet.slnx
configuration: Release
upload-build-artifact-name: build-release
timeout-minutes: 45

test:
name: call-test-${{ matrix.os }}-${{ matrix.project_name }}
needs: [build]
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2025, macos-26]
project_name: [core, core-coverage, mtp]
include:
- project_name: core
project: test/coverlet.core.tests/coverlet.core.tests.csproj
- project_name: core-coverage
project: test/coverlet.core.coverage.tests/coverlet.core.coverage.tests.csproj
- project_name: mtp
project: test/coverlet.MTP.tests/coverlet.MTP.tests.csproj
uses: codebeltnet/jobs-dotnet-test/.github/workflows/default.yml@v3
with:
runs-on: ${{ matrix.os }}
projects: ${{ matrix.project }}
configuration: Release
build: true
restore: true
download-pattern: build-release
timeout-minutes: 45

pack:
name: call-pack
needs: [build, test]
uses: codebeltnet/jobs-dotnet-pack/.github/workflows/default.yml@v3
with:
projects: src/coverlet.MTP/coverlet.MTP.csproj
configuration: Release
version: ${{ needs.build.outputs.version }}
download-build-artifact-pattern: build-release
upload-packed-artifact-name: NuGet-Release
timeout-minutes: 30

package_validation:
name: validate-package-${{ matrix.os }}-${{ matrix.framework }}
needs: [pack]
runs-on: ${{ matrix.os }}
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2025, macos-26]
framework: [net9.0, net10.0]
permissions:
contents: read
steps:
- name: Checkout
uses: codebeltnet/git-checkout@v1

- name: Install .NET
uses: codebeltnet/install-dotnet@v3

- name: Download validated package
uses: actions/download-artifact@v8
with:
name: NuGet-Release
path: artifacts/package/release

- name: Run package validation tests
shell: pwsh
run: dotnet test test/coverlet.MTP.validation.tests/coverlet.MTP.validation.tests.csproj -c Release -f ${{ matrix.framework }} -- --report-trx --report-trx-filename "coverlet.MTP.validation.tests.${{ matrix.framework }}.trx"

publish_nuget:
if: ${{ github.event_name != 'pull_request' && needs.build.result == 'success' && needs.test.result == 'success' && needs.pack.result == 'success' && needs.package_validation.result == 'success' }}
name: publish-nuget
needs: [build, test, pack, package_validation]
runs-on: ubuntu-24.04
timeout-minutes: 15
environment: Production
permissions:
contents: read
id-token: write
steps:
- name: Download packaged artifacts
uses: actions/download-artifact@v8
with:
name: NuGet-Release
path: artifacts/package/release

- name: NuGet login (OIDC -> temporary API key)
uses: NuGet/login@v1
id: login
with:
user: ${{ vars.NUGET_USER }}

- name: Push NuGet packages
shell: bash
env:
NUGET_API_KEY: ${{ steps.login.outputs.NUGET_API_KEY }}
run: dotnet nuget push 'artifacts/package/release/*.nupkg' --api-key "$NUGET_API_KEY" --source https://api.nuget.org/v3/index.json --skip-duplicate
82 changes: 0 additions & 82 deletions .github/workflows/codeql.yml

This file was deleted.

Loading
Loading