Skip to content

Commit 38a2104

Browse files
authored
Merge pull request #331 from MarcoRossignoli/fixopencoverreportbug
Fix opencover report numbers
2 parents b7f0be6 + 30c8588 commit 38a2104

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

src/coverlet.core/Reporters/OpenCoverReporter.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using System.IO;
45
using System.Linq;
56
using System.Text;
@@ -76,8 +77,8 @@ public string Report(CoverageResult result)
7677

7778
method.Add(new XAttribute("cyclomaticComplexity", methCyclomaticComplexity.ToString()));
7879
method.Add(new XAttribute("nPathComplexity", "0"));
79-
method.Add(new XAttribute("sequenceCoverage", methLineCoverage.Percent.ToString()));
80-
method.Add(new XAttribute("branchCoverage", methBranchCoverage.Percent.ToString()));
80+
method.Add(new XAttribute("sequenceCoverage", Math.Round(methLineCoverage.Percent * 100, 2).ToString("G", CultureInfo.InvariantCulture)));
81+
method.Add(new XAttribute("branchCoverage", Math.Round(methBranchCoverage.Percent * 100, 2).ToString("G", CultureInfo.InvariantCulture)));
8182
method.Add(new XAttribute("isConstructor", meth.Key.Contains("ctor").ToString()));
8283
method.Add(new XAttribute("isGetter", meth.Key.Contains("get_").ToString()));
8384
method.Add(new XAttribute("isSetter", meth.Key.Contains("set_").ToString()));
@@ -157,8 +158,8 @@ public string Report(CoverageResult result)
157158
methodSummary.Add(new XAttribute("visitedSequencePoints", methLineCoverage.Covered.ToString()));
158159
methodSummary.Add(new XAttribute("numBranchPoints", methBranchCoverage.Total.ToString()));
159160
methodSummary.Add(new XAttribute("visitedBranchPoints", methBranchCoverage.Covered.ToString()));
160-
methodSummary.Add(new XAttribute("sequenceCoverage", methLineCoverage.Percent.ToString()));
161-
methodSummary.Add(new XAttribute("branchCoverage", methBranchCoverage.Percent.ToString()));
161+
methodSummary.Add(new XAttribute("sequenceCoverage", Math.Round(methLineCoverage.Percent * 100, 2).ToString("G", CultureInfo.InvariantCulture)));
162+
methodSummary.Add(new XAttribute("branchCoverage", Math.Round(methBranchCoverage.Percent * 100, 2).ToString("G", CultureInfo.InvariantCulture)));
162163
methodSummary.Add(new XAttribute("maxCyclomaticComplexity", methCyclomaticComplexity.ToString()));
163164
methodSummary.Add(new XAttribute("minCyclomaticComplexity", methCyclomaticComplexity.ToString()));
164165
methodSummary.Add(new XAttribute("visitedClasses", "0"));
@@ -191,8 +192,8 @@ public string Report(CoverageResult result)
191192
classSummary.Add(new XAttribute("visitedSequencePoints", classLineCoverage.Covered.ToString()));
192193
classSummary.Add(new XAttribute("numBranchPoints", classBranchCoverage.Total.ToString()));
193194
classSummary.Add(new XAttribute("visitedBranchPoints", classBranchCoverage.Covered.ToString()));
194-
classSummary.Add(new XAttribute("sequenceCoverage", classLineCoverage.Percent.ToString()));
195-
classSummary.Add(new XAttribute("branchCoverage", classBranchCoverage.Percent.ToString()));
195+
classSummary.Add(new XAttribute("sequenceCoverage", Math.Round(classLineCoverage.Percent * 100, 2).ToString("G", CultureInfo.InvariantCulture)));
196+
classSummary.Add(new XAttribute("branchCoverage", Math.Round(classBranchCoverage.Percent * 100, 2).ToString("G", CultureInfo.InvariantCulture)));
196197
classSummary.Add(new XAttribute("maxCyclomaticComplexity", classMaxCyclomaticComplexity.ToString()));
197198
classSummary.Add(new XAttribute("minCyclomaticComplexity", classMinCyclomaticComplexity.ToString()));
198199
classSummary.Add(new XAttribute("visitedClasses", classVisited ? "1" : "0"));
@@ -214,16 +215,16 @@ public string Report(CoverageResult result)
214215
}
215216

216217
var moduleLineCoverage = summary.CalculateLineCoverage(result.Modules);
217-
var moduleBranchCoverage = summary.CalculateLineCoverage(result.Modules);
218+
var moduleBranchCoverage = summary.CalculateBranchCoverage(result.Modules);
218219
var moduleMaxCyclomaticComplexity = summary.CalculateMaxCyclomaticComplexity(result.Modules);
219220
var moduleMinCyclomaticComplexity = summary.CalculateMinCyclomaticComplexity(result.Modules);
220221

221222
coverageSummary.Add(new XAttribute("numSequencePoints", moduleLineCoverage.Total.ToString()));
222223
coverageSummary.Add(new XAttribute("visitedSequencePoints", moduleLineCoverage.Covered.ToString()));
223224
coverageSummary.Add(new XAttribute("numBranchPoints", moduleBranchCoverage.Total.ToString()));
224225
coverageSummary.Add(new XAttribute("visitedBranchPoints", moduleBranchCoverage.Covered.ToString()));
225-
coverageSummary.Add(new XAttribute("sequenceCoverage", moduleLineCoverage.Percent.ToString()));
226-
coverageSummary.Add(new XAttribute("branchCoverage", moduleBranchCoverage.Percent.ToString()));
226+
coverageSummary.Add(new XAttribute("sequenceCoverage", Math.Round(moduleLineCoverage.Percent * 100, 2).ToString("G", CultureInfo.InvariantCulture)));
227+
coverageSummary.Add(new XAttribute("branchCoverage", Math.Round(moduleBranchCoverage.Percent * 100, 2).ToString("G", CultureInfo.InvariantCulture)));
227228
coverageSummary.Add(new XAttribute("maxCyclomaticComplexity", moduleMaxCyclomaticComplexity.ToString()));
228229
coverageSummary.Add(new XAttribute("minCyclomaticComplexity", moduleMinCyclomaticComplexity.ToString()));
229230
coverageSummary.Add(new XAttribute("visitedClasses", visitedClasses.ToString()));

test/coverlet.core.tests/Reporters/OpenCoverReporterTests.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Xml.Linq;
37
using Xunit;
48

59
namespace Coverlet.Core.Reporters.Tests
@@ -16,7 +20,11 @@ public void TestReport()
1620
result.Modules.Add("Coverlet.Core.Reporters.Tests", CreateFirstDocuments());
1721

1822
OpenCoverReporter reporter = new OpenCoverReporter();
19-
Assert.NotEqual(string.Empty, reporter.Report(result));
23+
string report = reporter.Report(result);
24+
Assert.NotEmpty(report);
25+
XDocument doc = XDocument.Load(new MemoryStream(Encoding.UTF8.GetBytes(report)));
26+
Assert.Empty(doc.Descendants().Attributes("sequenceCoverage").Where(v => v.Value != "33.3"));
27+
Assert.Empty(doc.Descendants().Attributes("branchCoverage").Where(v => v.Value != "25"));
2028
}
2129

2230
[Fact]
@@ -42,10 +50,13 @@ private static Documents CreateFirstDocuments()
4250
Lines lines = new Lines();
4351
lines.Add(1, 1);
4452
lines.Add(2, 0);
53+
lines.Add(3, 0);
4554

4655
Branches branches = new Branches();
4756
branches.Add(new BranchInfo { Line = 1, Hits = 1, Offset = 23, EndOffset = 24, Path = 0, Ordinal = 1 });
4857
branches.Add(new BranchInfo { Line = 1, Hits = 0, Offset = 23, EndOffset = 27, Path = 1, Ordinal = 2 });
58+
branches.Add(new BranchInfo { Line = 1, Hits = 0, Offset = 40, EndOffset = 41, Path = 0, Ordinal = 3 });
59+
branches.Add(new BranchInfo { Line = 1, Hits = 0, Offset = 40, EndOffset = 44, Path = 1, Ordinal = 4 });
4960

5061
Methods methods = new Methods();
5162
var methodString = "System.Void Coverlet.Core.Reporters.Tests.OpenCoverReporterTests.TestReport()";

0 commit comments

Comments
 (0)