Skip to content

Commit 4e02ab0

Browse files
Add ReportGenerator helper (#518)
* add report generator helper
1 parent 0faaeea commit 4e02ab0

File tree

4 files changed

+37
-2
lines changed

4 files changed

+37
-2
lines changed

Directory.Build.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<PackageReference Update="Moq" Version="4.10.1" />
1313
<!-- Do not upgrade this version or we won't support old SDK -->
1414
<PackageReference Update="Newtonsoft.Json" Version="9.0.1" />
15+
<PackageReference Update="ReportGenerator.Core" Version="4.2.15" />
1516
<!--
1617
Do not change System.Reflection.Metadata version since we need to support VSTest DataCollectors. Goto https://www.nuget.org/packages/System.Reflection.Metadata to check versions.
1718
We need to load assembly version 1.4.2.0 to properly work

test/coverlet.core.tests/CoverageTests.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ public void Condition_If()
9696
.AssertLinesCovered((11, 1), (15, 0))
9797
// (line,ordinal,hits)
9898
.AssertBranchesCovered((9, 0, 1), (9, 1, 0));
99+
100+
// if need to generate html report for debugging purpose
101+
// TestInstrumentationHelper.GenerateHtmlReport(result);
99102
}
100103
finally
101104
{

test/coverlet.core.tests/InstrumenterHelper.cs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33
using System.IO;
44
using System.Linq;
55
using System.Reflection;
6+
using System.Runtime.CompilerServices;
67
using System.Threading;
78
using System.Threading.Tasks;
9+
810
using Coverlet.Core.Abstracts;
911
using Coverlet.Core.Instrumentation;
1012
using Coverlet.Core.Logging;
13+
using Coverlet.Core.Reporters;
1114
using Microsoft.Extensions.DependencyInjection;
1215
using Moq;
13-
using Xunit;
16+
using Palmmedia.ReportGenerator.Core;
1417
using Xunit.Sdk;
1518

1619
namespace Coverlet.Core.Tests
@@ -107,6 +110,33 @@ public static Document AssertLinesCovered(this Document document, params (int li
107110

108111
public static class TestInstrumentationHelper
109112
{
113+
/// <summary>
114+
/// caller sample: TestInstrumentationHelper.GenerateHtmlReport(result, sourceFileFilter: @"+**\Samples\Instrumentation.cs");
115+
/// TestInstrumentationHelper.GenerateHtmlReport(result);
116+
/// </summary>
117+
public static void GenerateHtmlReport(CoverageResult coverageResult, IReporter reporter = null, string sourceFileFilter = "", [CallerMemberName]string directory = "")
118+
{
119+
reporter ??= new CoberturaReporter();
120+
DirectoryInfo dir = Directory.CreateDirectory(directory);
121+
dir.Delete(true);
122+
dir.Create();
123+
string reportFile = Path.Combine(dir.FullName, Path.ChangeExtension("report", reporter.Extension));
124+
File.WriteAllText(reportFile, reporter.Report(coverageResult));
125+
// i.e. reportgenerator -reports:"C:\git\coverlet\test\coverlet.core.tests\bin\Debug\netcoreapp2.0\Condition_If\report.cobertura.xml" -targetdir:"C:\git\coverlet\test\coverlet.core.tests\bin\Debug\netcoreapp2.0\Condition_If" -filefilters:+**\Samples\Instrumentation.cs
126+
new Generator().GenerateReport(new ReportConfiguration(
127+
new[] { reportFile },
128+
dir.FullName,
129+
new string[0],
130+
null,
131+
new string[0],
132+
new string[0],
133+
new string[0],
134+
new string[0],
135+
string.IsNullOrEmpty(sourceFileFilter) ? new string[0] : new[] { sourceFileFilter },
136+
null,
137+
null));
138+
}
139+
110140
public static CoverageResult GetCoverageResult(string filePath)
111141
{
112142
using (var result = new FileStream(filePath, FileMode.Open))

test/coverlet.core.tests/coverlet.core.tests.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
<PropertyGroup>
55
<TargetFramework>netcoreapp2.0</TargetFramework>
66
<IsPackable>false</IsPackable>
7-
<LangVersion>latest</LangVersion>
7+
<LangVersion>preview</LangVersion>
88
</PropertyGroup>
99

1010
<ItemGroup>
1111
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" />
1212
<PackageReference Include="Microsoft.NET.Test.Sdk" />
1313
<PackageReference Include="Moq" />
14+
<PackageReference Include="ReportGenerator.Core" />
1415
<PackageReference Include="xunit" />
1516
<PackageReference Include="xunit.runner.visualstudio" />
1617
</ItemGroup>

0 commit comments

Comments
 (0)