Skip to content

Commit 15fdf1b

Browse files
committed
Basic support for generating code coverage reports
TODO include in GitHub actions etc setup, e.g. https://josh-ops.com/posts/github-code-coverage/, once microsoft/vstest#1811 is fixed
1 parent ff08037 commit 15fdf1b

File tree

8 files changed

+119
-1
lines changed

8 files changed

+119
-1
lines changed

.code-coverage/coverlet.settings.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<RunSettings>
3+
<DataCollectionRunSettings>
4+
<DataCollectors>
5+
<DataCollector friendlyName="XPlat code coverage">
6+
<Configuration>
7+
<Format>cobertura,lcov</Format>
8+
</Configuration>
9+
</DataCollector>
10+
</DataCollectors>
11+
</DataCollectionRunSettings>
12+
</RunSettings>

.vscode/tasks.json

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,54 @@
3131
"reveal": "always",
3232
"panel": "dedicated"
3333
}
34+
},
35+
{
36+
"label": "test with coverage",
37+
"command": "dotnet",
38+
"type": "shell",
39+
"group": "test",
40+
"args": [
41+
"test",
42+
"${workspaceFolder}/Git-Credential-Manager.sln",
43+
"--collect",
44+
"'XPlat Code Coverage'",
45+
"--settings",
46+
"${workspaceFolder}/.code-coverage/coverlet.settings.xml"
47+
],
48+
"presentation": {
49+
"reveal": "always",
50+
"panel": "dedicated"
51+
}
52+
},
53+
{
54+
"label": "report coverage - nix",
55+
"command": "dotnet",
56+
"type": "shell",
57+
"group": "test",
58+
"args": [
59+
"~/.nuget/packages/reportgenerator/*/*/net5.0/ReportGenerator.dll",
60+
"-reports:${workspaceFolder}/**/TestResults/**/coverage.cobertura.xml",
61+
"-targetdir:${workspaceFolder}/out/code-coverage"
62+
],
63+
"presentation": {
64+
"reveal": "always",
65+
"panel": "dedicated"
66+
}
67+
},
68+
{
69+
"label": "report coverage - win",
70+
"command": "dotnet",
71+
"type": "shell",
72+
"group": "test",
73+
"args": [
74+
"${env:USERROFILE}/.nuget/packages/reportgenerator/*/*/net5.0/ReportGenerator.dll",
75+
"-reports:${workspaceFolder}/**/TestResults/**/coverage.cobertura.xml",
76+
"-targetdir:${workspaceFolder}/out/code-coverage"
77+
],
78+
"presentation": {
79+
"reveal": "always",
80+
"panel": "dedicated"
81+
}
3482
}
3583
]
36-
}
84+
}

docs/development.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,40 @@ $ GCM_TRACE=1 git-credential-manager-core version
9595
> 18:47:56.526712 ...er/Application.cs:69 trace: [RunInternalAsync] Git Credential Manager version 2.0.124-beta+e1ebbe1517 (macOS, .NET 5.0) 'version'
9696
> Git Credential Manager version 2.0.124-beta+e1ebbe1517 (macOS, .NET 5.0)
9797
```
98+
99+
### Code coverage metrics
100+
101+
If you want code coverage metrics these can be generated either from the command line:
102+
103+
```shell
104+
$ dotnet test --collect:"XPlat Code Coverage" --settings=./.code-coverage/coverlet.settings.xml
105+
```
106+
107+
Or via the VSCode Terminal/Run Task:
108+
109+
```
110+
test with coverage
111+
```
112+
113+
HTML reports can be generated using ReportGenerator, this should be installed during the build process, from the command line:
114+
115+
```shell
116+
$ dotnet ~/.nuget/packages/reportgenerator/*/*/net5.0/ReportGenerator.dll -reports:./**/TestResults/**/coverage.cobertura.xml -targetdir:./out/code-coverage
117+
```
118+
or
119+
120+
```shell
121+
$ dotnet {$env:USERPROFILE}/.nuget/packages/reportgenerator/*/*/net5.0/ReportGenerator.dll -reports:./**/TestResults/**/coverage.cobertura.xml -targetdir:./out/code-coverage
122+
```
123+
124+
Or via VSCode Terminal/Run Task:
125+
126+
```
127+
report coverage - nix
128+
```
129+
130+
or
131+
132+
```
133+
report coverage - win
134+
```

src/shared/Atlassian.Bitbucket.Tests/Atlassian.Bitbucket.Tests.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11+
<PackageReference Include="coverlet.collector" Version="3.1.0">
12+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
13+
<PrivateAssets>all</PrivateAssets>
14+
</PackageReference>
1115
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
16+
<PackageReference Include="ReportGenerator" Version="4.8.13" />
1217
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
1318
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
1419
</ItemGroup>

src/shared/Core.Tests/Core.Tests.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12+
<PackageReference Include="coverlet.collector" Version="3.1.0">
13+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
14+
<PrivateAssets>all</PrivateAssets>
15+
</PackageReference>
1216
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
17+
<PackageReference Include="ReportGenerator" Version="4.8.13" />
1318
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
1419
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
1520
</ItemGroup>

src/shared/GitHub.Tests/GitHub.Tests.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11+
<PackageReference Include="coverlet.collector" Version="3.1.0">
12+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
13+
<PrivateAssets>all</PrivateAssets>
14+
</PackageReference>
1115
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
16+
<PackageReference Include="ReportGenerator" Version="4.8.13" />
1217
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
1318
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
1419
</ItemGroup>

src/shared/Microsoft.AzureRepos.Tests/Microsoft.AzureRepos.Tests.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11+
<PackageReference Include="coverlet.collector" Version="3.1.0">
12+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
13+
<PrivateAssets>all</PrivateAssets>
14+
</PackageReference>
1115
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
16+
<PackageReference Include="ReportGenerator" Version="4.8.13" />
1217
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
1318
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
1419
</ItemGroup>

src/shared/TestInfrastructure/TestInfrastructure.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="Moq" Version="4.10.1" />
13+
<PackageReference Include="ReportGenerator" Version="4.8.13" />
1314
<PackageReference Include="xunit" Version="2.4.1" />
1415
<PackageReference Include="Xunit.SkippableFact" Version="1.4.13" />
1516
</ItemGroup>

0 commit comments

Comments
 (0)