Skip to content

Commit 88226cb

Browse files
committed
Add build target for collecting code coverage
1 parent f36242c commit 88226cb

File tree

3 files changed

+65
-42
lines changed

3 files changed

+65
-42
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,12 @@ jobs:
8585
- name: Generate code coverage (Linux only)
8686
if: matrix.os == 'ubuntu-latest'
8787
run: |
88-
dotnet test --configuration Release --collect:"XPlat Code Coverage" -f "net9.0" --results-directory OpenLanguage.Test/coverage
89-
88+
cmake --build build --target test-collect-coverage
9089
- name: Upload coverage to Codecov (Linux only)
9190
if: matrix.os == 'ubuntu-latest'
9291
uses: codecov/codecov-action@v4
9392
with:
94-
directory: OpenLanguage.Test/coverage
93+
directory: OpenLanguage.Test/TestResults/coverage
9594
fail_ci_if_error: false
9695
verbose: true
9796

CMakeLists.txt

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ set(PROJECT_DIR "${CMAKE_SOURCE_DIR}/OpenLanguage")
7171
set(GENERATED_DIR "${PROJECT_DIR}/Generated")
7272
set(TEST_PROJECT_DIR "${CMAKE_SOURCE_DIR}/OpenLanguage.Test")
7373
set(TEST_RESULTS_DIR "${TEST_PROJECT_DIR}/TestResults")
74-
set (TEST_RESULTS_TRX_BASENAME "TestResults.trx")
74+
set(TEST_RESULTS_COVERAGE_DIR "${TEST_RESULTS_DIR}/coverage")
75+
set(TEST_RESULTS_TRX_BASENAME "TestResults.trx")
7576
set(TEST_RESULTS_TRX "${TEST_RESULTS_DIR}/${TEST_RESULTS_TRX_BASENAME}")
7677
set(TEST_RESULTS_XML "${TEST_RESULTS_DIR}/TestResults.xml")
7778

@@ -184,6 +185,13 @@ add_custom_target(create_test_results_directory
184185
COMMENT "Creating TestResults directory"
185186
)
186187

188+
add_custom_target(create_test_results_coverage_directory
189+
COMMAND ${CMAKE_COMMAND} -E make_directory ${TEST_RESULTS_COVERAGE_DIR}
190+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
191+
COMMENT "Creating TestResults directory"
192+
DEPENDS create_test_results_directory
193+
)
194+
187195
add_custom_target(run_tests
188196
COMMAND dotnet test "${TEST_PROJECT_DIR}/OpenLanguage.Test.csproj"
189197
--results-directory="${TEST_RESULTS_DIR}"
@@ -202,11 +210,21 @@ add_custom_target(convert_test_results
202210
COMMENT "Converting test results from TRX to JUnit XML format. Outputting results to \"${TEST_RESULTS_XML}\""
203211
)
204212

205-
# Test target - dependent on build
206213
add_custom_target(test-ci
207214
DEPENDS convert_test_results
208215
)
209216

217+
add_custom_target(test-collect-coverage
218+
COMMAND dotnet test "${TEST_PROJECT_DIR}/OpenLanguage.Test.csproj"
219+
--configuration="Release"
220+
--framework="net9.0"
221+
--collect="\"XPlat Code Coverage\""
222+
--results-directory "${TEST_RESULTS_COVERAGE_DIR}"
223+
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
224+
DEPENDS build create_test_results_coverage_directory
225+
COMMENT "Running unit tests with code coverage collection"
226+
)
227+
210228
add_custom_target(test
211229
COMMAND dotnet test "${TEST_PROJECT_DIR}/OpenLanguage.Test.csproj"
212230
--configuration="Release"
Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,45 @@
11
<Project Sdk="Microsoft.NET.Sdk">
2-
<PropertyGroup>
3-
<Deterministic>true</Deterministic>
4-
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
5-
<IsPackable>false</IsPackable>
6-
<Nullable>enable</Nullable>
7-
<Optimize>true</Optimize>
8-
<TargetFramework>net9.0</TargetFramework>
9-
<Optimize>true</Optimize>
10-
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
11-
<DefineConstants>TRACE_ACTIONS;EXPORT_GPPG</DefineConstants>
12-
</PropertyGroup>
13-
<ItemGroup>
14-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
15-
<PackageReference Include="xunit" Version="2.9.3" />
16-
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.3">
17-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
18-
<PrivateAssets>all</PrivateAssets>
19-
</PackageReference>
20-
</ItemGroup>
21-
<ItemGroup>
22-
<ProjectReference Include="../OpenLanguage/OpenLanguage.csproj" />
23-
</ItemGroup>
24-
<Target Name="CopyCustomContent" AfterTargets="AfterBuild">
25-
<Copy
26-
SourceFiles="@(None)"
27-
DestinationFolder="$(OutDir)/data/%(RecursiveDir)"
28-
SkipUnchangedFiles="true"
29-
OverwriteReadOnlyFiles="true"
30-
Condition="'%(Extension)' != ''"
31-
/>
32-
</Target>
33-
<ItemGroup>
34-
<None Include="data/**/*" CopyToOutputDirectory="PreserveNewest">
35-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
36-
<Link>data/%(RecursiveDir)%(Filename)%(Extension)</Link>
37-
</None>
38-
</ItemGroup>
2+
<PropertyGroup>
3+
<Deterministic>true</Deterministic>
4+
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
5+
<IsPackable>false</IsPackable>
6+
<Nullable>enable</Nullable>
7+
<Optimize>true</Optimize>
8+
<TargetFramework>net9.0</TargetFramework>
9+
<Optimize>true</Optimize>
10+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
11+
<DefineConstants>TRACE_ACTIONS;EXPORT_GPPG</DefineConstants>
12+
</PropertyGroup>
13+
<ItemGroup>
14+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
15+
<PackageReference Include="xunit" Version="2.9.3" />
16+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.3">
17+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
18+
<PrivateAssets>all</PrivateAssets>
19+
</PackageReference>
20+
<PackageReference Include="coverlet.collector" Version="6.0.4">
21+
<PrivateAssets>all</PrivateAssets>
22+
<IncludeAssets>
23+
runtime; build; native; contentfiles; analyzers; buildtransitive
24+
</IncludeAssets>
25+
</PackageReference>
26+
</ItemGroup>
27+
<ItemGroup>
28+
<ProjectReference Include="../OpenLanguage/OpenLanguage.csproj" />
29+
</ItemGroup>
30+
<Target Name="CopyCustomContent" AfterTargets="AfterBuild">
31+
<Copy
32+
SourceFiles="@(None)"
33+
DestinationFolder="$(OutDir)/data/%(RecursiveDir)"
34+
SkipUnchangedFiles="true"
35+
OverwriteReadOnlyFiles="true"
36+
Condition="'%(Extension)' != ''"
37+
/>
38+
</Target>
39+
<ItemGroup>
40+
<None Include="data/**/*" CopyToOutputDirectory="PreserveNewest">
41+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
42+
<Link>data/%(RecursiveDir)%(Filename)%(Extension)</Link>
43+
</None>
44+
</ItemGroup>
3945
</Project>

0 commit comments

Comments
 (0)