Skip to content

Commit a6ad42f

Browse files
committed
feat: Implement Coverlet Extension for Microsoft Testing Platform
- Added CoverletExtensionCollector to handle test session lifecycle for coverage collection. - Introduced CoverletExtensionCommandLineProvider for command line options. - Created CoverletExtensionConfiguration to manage configuration settings. - Developed CoverletLoggerAdapter for logging integration with Microsoft Testing Platform. - Implemented CoverletExtensionEnvironmentVariableProvider for environment variable management. - Added CoverletExtensionProvider to register the Coverlet extension with the testing platform. - Created TestingPlatformBuilderHook to facilitate extension registration. - Updated project files to include necessary dependencies and configurations for Coverlet. - Added support for multiple target frameworks (net8.0 and net9.0). - Included build and packaging configurations for Coverlet.MTP. - Implemented command line options for coverage report formats and exclusions. - Established logging mechanisms for better traceability during coverage collection.
1 parent 84d8894 commit a6ad42f

27 files changed

+953
-54
lines changed

.devcontainer/devcontainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"features": {
88
"ghcr.io/devcontainers/features/dotnet:2": {
99
"version": "10.0.100",
10-
"additionalVersions": ["6.0.428", "8.0.416", "9.0.307"]
10+
"additionalVersions": ["6.0.428", "8.0.416", "9.0.308"]
1111
}
1212
},
1313

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,8 @@ FolderProfile.pubxml
318318
/NuGet.config
319319
nuget.config
320320
*.dmp
321-
Playground*/
322321
# extended playground
323-
coverlet.MTP/
322+
Playground*/
324323
# ignore copilot agents
325324
.github/agents/
326325
current.diff

coverlet.sln

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.core.coverage.test
9292
EndProject
9393
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.integration.determisticbuild", "test\coverlet.integration.determisticbuild\coverlet.integration.determisticbuild.csproj", "{C80BF6A9-63EE-6D36-8913-627A7E2EA459}"
9494
EndProject
95-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.MTP", "src\coverlet.MTP\coverlet.MTP.csproj", "{976491C7-114C-4FD4-92ED-AFD4BCD0BC18}"
95+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.MTP", "src\coverlet.MTP\coverlet.MTP.csproj", "{B3F6B18B-AE59-CACC-BEFE-2C9796F51A68}"
9696
EndProject
97-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.MTP.validation.tests", "test\coverlet.MTP.validation.tests\coverlet.MTP.validation.tests.csproj", "{E55E2E17-042F-0D1C-0DFC-2F1FCFA21C14}"
97+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.MTP.unit.tests", "test\coverlet.MTP.unit.tests\coverlet.MTP.unit.tests.csproj", "{E97959B1-73BA-5B91-5795-5602ADC73FB5}"
9898
EndProject
99-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.MTP.unit.tests", "test\coverlet.MTP.unit.tests\coverlet.MTP.unit.tests.csproj", "{C9B29FB1-BF7E-4A03-B369-B8CA822062D8}"
99+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "coverlet.MTP.validation.tests", "test\coverlet.MTP.validation.tests\coverlet.MTP.validation.tests.csproj", "{9BB7E3B0-606F-2A58-C4A3-D233519875C5}"
100100
EndProject
101101
Global
102102
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -208,18 +208,18 @@ Global
208208
{C80BF6A9-63EE-6D36-8913-627A7E2EA459}.Debug|Any CPU.Build.0 = Debug|Any CPU
209209
{C80BF6A9-63EE-6D36-8913-627A7E2EA459}.Release|Any CPU.ActiveCfg = Release|Any CPU
210210
{C80BF6A9-63EE-6D36-8913-627A7E2EA459}.Release|Any CPU.Build.0 = Release|Any CPU
211-
{976491C7-114C-4FD4-92ED-AFD4BCD0BC18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
212-
{976491C7-114C-4FD4-92ED-AFD4BCD0BC18}.Debug|Any CPU.Build.0 = Debug|Any CPU
213-
{976491C7-114C-4FD4-92ED-AFD4BCD0BC18}.Release|Any CPU.ActiveCfg = Release|Any CPU
214-
{976491C7-114C-4FD4-92ED-AFD4BCD0BC18}.Release|Any CPU.Build.0 = Release|Any CPU
215-
{E55E2E17-042F-0D1C-0DFC-2F1FCFA21C14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
216-
{E55E2E17-042F-0D1C-0DFC-2F1FCFA21C14}.Debug|Any CPU.Build.0 = Debug|Any CPU
217-
{E55E2E17-042F-0D1C-0DFC-2F1FCFA21C14}.Release|Any CPU.ActiveCfg = Release|Any CPU
218-
{E55E2E17-042F-0D1C-0DFC-2F1FCFA21C14}.Release|Any CPU.Build.0 = Release|Any CPU
219-
{C9B29FB1-BF7E-4A03-B369-B8CA822062D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
220-
{C9B29FB1-BF7E-4A03-B369-B8CA822062D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
221-
{C9B29FB1-BF7E-4A03-B369-B8CA822062D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
222-
{C9B29FB1-BF7E-4A03-B369-B8CA822062D8}.Release|Any CPU.Build.0 = Release|Any CPU
211+
{B3F6B18B-AE59-CACC-BEFE-2C9796F51A68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
212+
{B3F6B18B-AE59-CACC-BEFE-2C9796F51A68}.Debug|Any CPU.Build.0 = Debug|Any CPU
213+
{B3F6B18B-AE59-CACC-BEFE-2C9796F51A68}.Release|Any CPU.ActiveCfg = Release|Any CPU
214+
{B3F6B18B-AE59-CACC-BEFE-2C9796F51A68}.Release|Any CPU.Build.0 = Release|Any CPU
215+
{E97959B1-73BA-5B91-5795-5602ADC73FB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
216+
{E97959B1-73BA-5B91-5795-5602ADC73FB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
217+
{E97959B1-73BA-5B91-5795-5602ADC73FB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
218+
{E97959B1-73BA-5B91-5795-5602ADC73FB5}.Release|Any CPU.Build.0 = Release|Any CPU
219+
{9BB7E3B0-606F-2A58-C4A3-D233519875C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
220+
{9BB7E3B0-606F-2A58-C4A3-D233519875C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
221+
{9BB7E3B0-606F-2A58-C4A3-D233519875C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
222+
{9BB7E3B0-606F-2A58-C4A3-D233519875C5}.Release|Any CPU.Build.0 = Release|Any CPU
223223
EndGlobalSection
224224
GlobalSection(SolutionProperties) = preSolution
225225
HideSolutionNode = FALSE
@@ -251,10 +251,10 @@ Global
251251
{0B109210-03CB-413F-888C-3023994AA384} = {2FEBDE1B-83E3-445B-B9F8-5644B0E0E134}
252252
{71004336-9896-4AE5-8367-B29BB1680542} = {2FEBDE1B-83E3-445B-B9F8-5644B0E0E134}
253253
{F74AD549-EFE0-4CD9-AD10-B2189E3FD5BB} = {2FEBDE1B-83E3-445B-B9F8-5644B0E0E134}
254-
{976491C7-114C-4FD4-92ED-AFD4BCD0BC18} = {E877EBA4-E78B-4F7D-A2D3-1E070FED04CD}
255254
{C80BF6A9-63EE-6D36-8913-627A7E2EA459} = {2FEBDE1B-83E3-445B-B9F8-5644B0E0E134}
256-
{E55E2E17-042F-0D1C-0DFC-2F1FCFA21C14} = {2FEBDE1B-83E3-445B-B9F8-5644B0E0E134}
257-
{C9B29FB1-BF7E-4A03-B369-B8CA822062D8} = {2FEBDE1B-83E3-445B-B9F8-5644B0E0E134}
255+
{B3F6B18B-AE59-CACC-BEFE-2C9796F51A68} = {E877EBA4-E78B-4F7D-A2D3-1E070FED04CD}
256+
{E97959B1-73BA-5B91-5795-5602ADC73FB5} = {2FEBDE1B-83E3-445B-B9F8-5644B0E0E134}
257+
{9BB7E3B0-606F-2A58-C4A3-D233519875C5} = {2FEBDE1B-83E3-445B-B9F8-5644B0E0E134}
258258
EndGlobalSection
259259
GlobalSection(ExtensibilityGlobals) = postSolution
260260
SolutionGuid = {9CA57C02-97B0-4C38-A027-EA61E8741F10}

eng/build.sh

Lines changed: 80 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,93 @@
11
#!/bin/bash
2+
set -e
23

3-
# build.sh - Helper script to build, package, and test the Coverlet project.
4+
# build.sh - Helper script to build and package the Coverlet project.
45
#
56
# This script performs the following tasks:
6-
# 1. Builds the project in debug configuration and generates a binary log.
7-
# 2. Packages the project in both debug and release configurations.
8-
# 3. Shuts down any running .NET build servers.
9-
# 4. Runs unit tests for various Coverlet components with code coverage enabled,
10-
# generating binary logs and diagnostic outputs.
11-
# 5. Outputs test results in xUnit TRX format and stores them in the specified directories.
7+
# 1. Cleans up temporary files and build artifacts
8+
# 2. Builds individual project targets (required for Linux compatibility)
9+
# 3. Packages the project in both debug and release configurations
1210
#
1311
# Usage:
1412
# ./build.sh
1513
#
1614
# Note: Ensure that the .NET SDK is installed and available in the system PATH.
15+
# For running tests, use the separate test.sh script.
1716

18-
# Build the project
19-
dotnet build -c debug -bl:build.binlog
20-
dotnet pack -c debug
21-
dotnet pack -c release
22-
dotnet build-server shutdown
17+
# Get the workspace root directory
18+
WORKSPACE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
19+
cd "$WORKSPACE_ROOT"
2320

24-
# Run tests with code coverage
25-
dotnet test test/coverlet.collector.tests /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*" --results-directory:"./artifacts/reports" --diag:"artifacts/log/debug/coverlet.collector.test.log;tracelevel=verbose"
26-
dotnet build-server shutdown
27-
dotnet test test/coverlet.core.tests /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*" --results-directory:"./artifacts/reports" --verbosity detailed --diag ./artifacts/log/debug/coverlet.core.tests.log
28-
dotnet build-server shutdown
29-
dotnet test test/coverlet.core.coverage.tests /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*" -- --results-directory "$(pwd)/artifacts/reports" --report-xunit-trx --report-xunit-trx-filename "coverlet.core.coverage.tests.trx" --diagnostic-verbosity debug --diagnostic --diagnostic-output-directory "$(pwd)/artifacts/log/debug"
21+
echo "Please cleanup '/tmp' folder if needed!"
22+
23+
# Shutdown build server and kill any running test processes
3024
dotnet build-server shutdown
31-
dotnet test test/coverlet.msbuild.tasks.tests /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*" --results-directory:"./artifacts/reports" --verbosity detailed --diag ./artifacts/log/debug/coverlet.msbuild.tasks.tests.log
25+
pkill -f "coverlet.core.tests.exe" 2>/dev/null || true
26+
27+
# Delete coverage files
28+
find . -name "coverage.cobertura.xml" -delete 2>/dev/null || true
29+
find . -name "coverage.json" -delete 2>/dev/null || true
30+
find . -name "coverage.net8.0.json" -delete 2>/dev/null || true
31+
find . -name "coverage.opencover.xml" -delete 2>/dev/null || true
32+
find . -name "coverage.net8.0.opencover.xml" -delete 2>/dev/null || true
33+
34+
# Delete binlog files in integration tests
35+
rm -f test/coverlet.integration.determisticbuild/*.binlog 2>/dev/null || true
36+
37+
# Remove artifacts directory
38+
rm -rf artifacts
39+
40+
# Clean up local NuGet packages
41+
rm -rf "$HOME/.nuget/packages/coverlet.msbuild/V1.0.0" 2>/dev/null || true
42+
rm -rf "$HOME/.nuget/packages/coverlet.collector/V1.0.0" 2>/dev/null || true
43+
44+
# Remove TestResults, bin, and obj directories
45+
find . -type d \( -name "TestResults" -o -name "bin" -o -name "obj" \) -exec rm -rf {} + 2>/dev/null || true
46+
47+
# Remove preview packages from NuGet cache
48+
find "$HOME/.nuget/packages" -type d \( -path "*/coverlet.msbuild/8.0.0-preview*" -o -path "*/coverlet.collector/8.0.0-preview*" -o -path "*/coverlet.console/8.0.0-preview*" \) -exec rm -rf {} + 2>/dev/null || true
49+
50+
echo "Cleanup complete. Starting build..."
51+
52+
# Pack initial packages (Debug)
53+
dotnet pack -c Debug src/coverlet.msbuild.tasks/coverlet.msbuild.tasks.csproj /p:ContinuousIntegrationBuild=true
54+
dotnet pack -c Debug src/coverlet.collector/coverlet.collector.csproj /p:ContinuousIntegrationBuild=true
55+
56+
# Build individual projects with binlog
57+
dotnet build src/coverlet.core/coverlet.core.csproj -bl:build.core.binlog /p:ContinuousIntegrationBuild=true
58+
dotnet build src/coverlet.collector/coverlet.collector.csproj -bl:build.collector.binlog /p:ContinuousIntegrationBuild=true
59+
dotnet build src/coverlet.console/coverlet.console.csproj -bl:build.console.binlog /p:ContinuousIntegrationBuild=true
60+
dotnet build src/coverlet.msbuild.tasks/coverlet.msbuild.tasks.csproj -bl:build.msbuild.tasks.binlog /p:ContinuousIntegrationBuild=true
61+
62+
# Build test projects with binlog
63+
dotnet build test/coverlet.collector.tests/coverlet.collector.tests.csproj -bl:build.collector.tests.binlog /p:ContinuousIntegrationBuild=true
64+
dotnet build test/coverlet.core.coverage.tests/coverlet.core.coverage.tests.csproj -bl:build.core.coverage.tests.binlog /p:ContinuousIntegrationBuild=true
65+
dotnet build test/coverlet.core.tests/coverlet.core.tests.csproj -bl:build.coverlet.core.tests.binlog /p:ContinuousIntegrationBuild=true
66+
dotnet build test/coverlet.msbuild.tasks.tests/coverlet.msbuild.tasks.tests.csproj -bl:build.coverlet.msbuild.tasks.tests.binlog /p:ContinuousIntegrationBuild=true
67+
dotnet build test/coverlet.integration.tests/coverlet.integration.tests.csproj -f net8.0 -bl:build.coverlet.core.tests.8.0.binlog /p:ContinuousIntegrationBuild=true
68+
69+
# Get the SDK version from global.json
70+
SDK_VERSION=$(grep -oP '"version"\s*:\s*"\K[^"]+' global.json)
71+
SDK_MAJOR_VERSION=$(echo "$SDK_VERSION" | cut -d'.' -f1)
72+
73+
# Check if the SDK version is 9.0.* or higher (9.0.*, 10.0.*, etc.)
74+
if [[ "$SDK_MAJOR_VERSION" -ge 9 ]]; then
75+
echo "Executing command for SDK version $SDK_VERSION (9.0+ detected)..."
76+
dotnet build test/coverlet.integration.tests/coverlet.integration.tests.csproj -f net9.0 -bl:build.coverlet.core.tests.9.9.binlog /p:ContinuousIntegrationBuild=true
77+
fi
78+
79+
# Create NuGet packages (Debug)
80+
dotnet pack -c Debug src/coverlet.msbuild.tasks/coverlet.msbuild.tasks.csproj /p:ContinuousIntegrationBuild=true
81+
dotnet pack -c Debug src/coverlet.collector/coverlet.collector.csproj /p:ContinuousIntegrationBuild=true
82+
dotnet pack -c Debug src/coverlet.console/coverlet.console.csproj /p:ContinuousIntegrationBuild=true
83+
dotnet pack -c Debug src/coverlet.msbuild.tasks/coverlet.msbuild.tasks.csproj /p:ContinuousIntegrationBuild=true
84+
85+
# Create NuGet packages (Release)
86+
dotnet pack src/coverlet.msbuild.tasks/coverlet.msbuild.tasks.csproj /p:ContinuousIntegrationBuild=true
87+
dotnet pack src/coverlet.collector/coverlet.collector.csproj /p:ContinuousIntegrationBuild=true
88+
dotnet pack src/coverlet.console/coverlet.console.csproj /p:ContinuousIntegrationBuild=true
89+
dotnet pack src/coverlet.msbuild.tasks/coverlet.msbuild.tasks.csproj /p:ContinuousIntegrationBuild=true
90+
3291
dotnet build-server shutdown
33-
dotnet test test/coverlet.integration.tests -f net8.0 --results-directory:"./artifacts/reports" --verbosity detailed --diag ./artifacts/log/debug/coverlet.integration.tests.net8.log
34-
dotnet test test/coverlet.integration.tests -f net9.0 --results-directory:"./artifacts/reports" --verbosity detailed --diag ./artifacts/log/debug/coverlet.integration.tests.net9.log
92+
93+
echo "Build complete!"

eng/test.sh

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Get the workspace root directory
5+
WORKSPACE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
6+
cd "$WORKSPACE_ROOT"
7+
8+
# Kill existing test processes if they exist
9+
pkill -f "coverlet.core.tests.dll" 2>/dev/null || true
10+
pkill -f "coverlet.core.coverage.tests.dll" 2>/dev/null || true
11+
pkill -f "coverlet.msbuild.tasks.tests.dll" 2>/dev/null || true
12+
pkill -f "coverlet.integration.tests.dll" 2>/dev/null || true
13+
14+
# coverlet.core.tests
15+
dotnet build-server shutdown
16+
dotnet test test/coverlet.core.tests/coverlet.core.tests.csproj -c Debug --no-build -bl:test.core.binlog /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.projectsample]*" /p:ExcludeByAttribute="GeneratedCodeAttribute" -- --results-directory "$WORKSPACE_ROOT/artifacts/reports" --report-xunit-trx --report-xunit-trx-filename "coverlet.core.tests.trx" --diagnostic --diagnostic-output-directory "$WORKSPACE_ROOT/artifacts/log/Debug" --diagnostic-output-fileprefix "coverlet.core.tests"
17+
18+
# coverlet.core.coverage.tests !!!! does not work on Linux (Dev Container) maybe takes hours !!!!
19+
# dotnet build-server shutdown
20+
# dotnet test test/coverlet.core.coverage.tests/coverlet.core.coverage.tests.csproj -c Debug --no-build -bl:test.core.coverage.binlog /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.projectsample]*" /p:ExcludeByAttribute="GeneratedCodeAttribute" -- --results-directory "$WORKSPACE_ROOT/artifacts/reports" --report-xunit-trx --report-xunit-trx-filename "coverlet.core.coverage.tests.trx" --diagnostic --diagnostic-output-directory "$WORKSPACE_ROOT/artifacts/log/Debug" --diagnostic-output-fileprefix "coverlet.core.coverage.tests"
21+
22+
# coverlet.msbuild.tasks.tests
23+
dotnet build-server shutdown
24+
dotnet test test/coverlet.msbuild.tasks.tests/coverlet.msbuild.tasks.tests.csproj -c Debug --no-build -bl:test.msbuild.binlog --results-directory:"./artifacts/reports" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.xunit.extensions]*%2c[coverlet.tests.projectsample]*%2c[testgen_]*" /p:ExcludeByAttribute="GeneratedCodeAttribute" --diag:"./artifacts/log/Debug/coverlet.msbuild.test.diag.log;tracelevel=verbose"
25+
26+
# coverlet.collector.tests
27+
dotnet build-server shutdown
28+
dotnet test test/coverlet.collector.tests/coverlet.collector.tests.csproj -c Debug --no-build -bl:test.collector.binlog /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.projectsample]*" /p:ExcludeByAttribute="GeneratedCodeAttribute" --diag:"$WORKSPACE_ROOT/artifacts/log/Debug/coverlet.collector.test.diag.log;tracelevel=verbose"
29+
30+
# coverlet.integration.tests (default net8.0)
31+
dotnet build-server shutdown
32+
dotnet test test/coverlet.integration.tests/coverlet.integration.tests.csproj -f net8.0 -c Debug --no-build -bl:test.integration.binlog -- --results-directory "$WORKSPACE_ROOT/artifacts/reports" --report-xunit-trx --report-xunit-trx-filename "coverlet.integration.tests.trx" --diagnostic --diagnostic-output-directory "$WORKSPACE_ROOT/artifacts/log/Debug" --diagnostic-output-fileprefix "coverlet.integration.tests"
33+
34+
dotnet build-server shutdown
35+
36+
# Get the SDK version from global.json
37+
SDK_VERSION=$(grep -oP '"version"\s*:\s*"\K[^"]+' global.json)
38+
SDK_MAJOR_VERSION=$(echo "$SDK_VERSION" | cut -d'.' -f1)
39+
40+
# Check if the SDK version is 9.0.* or higher (9.0.*, 10.0.*, etc.)
41+
if [[ "$SDK_MAJOR_VERSION" -ge 9 ]]; then
42+
# Check if the net9.0 test dll exists
43+
if [ -f "$WORKSPACE_ROOT/artifacts/bin/coverlet.integration.tests/debug_net9.0/coverlet.integration.tests.dll" ]; then
44+
echo "Executing command for SDK version $SDK_VERSION (9.0+ detected)..."
45+
dotnet test test/coverlet.integration.tests/coverlet.integration.tests.csproj -f net9.0 -c Debug --no-build -bl:test.integration.binlog -- --results-directory "$WORKSPACE_ROOT/artifacts/reports" --report-xunit-trx --report-xunit-trx-filename "coverlet.integration.tests.trx" --diagnostic --diagnostic-output-directory "$WORKSPACE_ROOT/artifacts/log/Debug" --diagnostic-output-fileprefix "coverlet.integration.tests"
46+
dotnet build-server shutdown
47+
else
48+
echo "Skipping command execution. Required file does not exist."
49+
fi
50+
fi

0 commit comments

Comments
 (0)