Skip to content

Commit b1c20d5

Browse files
authored
Threshold not fail when no module (#1115)
Threshold not fail when no module
1 parent 3ae1976 commit b1c20d5

File tree

3 files changed

+42
-7
lines changed

3 files changed

+42
-7
lines changed

src/coverlet.core/CoverageDetails.cs

+11-2
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,23 @@ namespace Coverlet.Core
55
internal class CoverageDetails
66
{
77
private double _averageModulePercent;
8+
9+
public Modules Modules { get; internal set; }
810
public double Covered { get; internal set; }
911
public int Total { get; internal set; }
12+
public double Percent
13+
{
14+
get
15+
{
16+
if (Modules?.Count == 0) return 0;
17+
return Total == 0 ? 100D : Math.Floor((Covered / Total) * 10000) / 100;
18+
}
19+
}
20+
1021
public double AverageModulePercent
1122
{
1223
get { return Math.Floor(_averageModulePercent * 100) / 100; }
1324
internal set { _averageModulePercent = value; }
1425
}
15-
16-
public double Percent => Total == 0 ? 100D : Math.Floor((Covered / Total) * 10000) / 100;
1726
}
1827
}

src/coverlet.core/CoverageSummary.cs

+17-5
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,12 @@ public CoverageDetails CalculateLineCoverage(Documents documents)
5252

5353
public CoverageDetails CalculateLineCoverage(Modules modules)
5454
{
55-
var details = new CoverageDetails();
55+
var details = new CoverageDetails{Modules = modules};
5656
var accumPercent = 0.0D;
57+
58+
if (modules.Count == 0)
59+
return details;
60+
5761
foreach (var module in modules)
5862
{
5963
var moduleCoverage = CalculateLineCoverage(module.Value);
@@ -185,16 +189,20 @@ public CoverageDetails CalculateBranchCoverage(Documents documents)
185189

186190
public CoverageDetails CalculateBranchCoverage(Modules modules)
187191
{
188-
var details = new CoverageDetails();
192+
var details = new CoverageDetails{ Modules = modules };
189193
var accumPercent = 0.0D;
194+
195+
if (modules.Count == 0)
196+
return details;
197+
190198
foreach (var module in modules)
191199
{
192200
var moduleCoverage = CalculateBranchCoverage(module.Value);
193201
details.Covered += moduleCoverage.Covered;
194202
details.Total += moduleCoverage.Total;
195203
accumPercent += moduleCoverage.Percent;
196204
}
197-
details.AverageModulePercent = accumPercent / modules.Count;
205+
details.AverageModulePercent = modules.Count == 0 ? 0 : accumPercent / modules.Count;
198206
return details;
199207
}
200208

@@ -245,16 +253,20 @@ public CoverageDetails CalculateMethodCoverage(Documents documents)
245253

246254
public CoverageDetails CalculateMethodCoverage(Modules modules)
247255
{
248-
var details = new CoverageDetails();
256+
var details = new CoverageDetails{ Modules = modules };
249257
var accumPercent = 0.0D;
258+
259+
if (modules.Count == 0)
260+
return details;
261+
250262
foreach (var module in modules)
251263
{
252264
var moduleCoverage = CalculateMethodCoverage(module.Value);
253265
details.Covered += moduleCoverage.Covered;
254266
details.Total += moduleCoverage.Total;
255267
accumPercent += moduleCoverage.Percent;
256268
}
257-
details.AverageModulePercent = accumPercent / modules.Count;
269+
details.AverageModulePercent = modules.Count == 0 ? 0 : accumPercent / modules.Count;
258270
return details;
259271
}
260272
}

test/coverlet.core.tests/Coverage/CoverageSummaryTests.cs

+14
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,20 @@ private void SetupDataMultipleModule()
124124
{ "aditionalModule", documents }
125125
};
126126
}
127+
128+
[Fact]
129+
public void TestCalculateLineCoverage_NoModules()
130+
{
131+
CoverageSummary summary = new CoverageSummary();
132+
var modules = new Modules();
133+
134+
Assert.Equal(0, summary.CalculateLineCoverage(modules).Percent);
135+
Assert.Equal(0, summary.CalculateLineCoverage(modules).AverageModulePercent);
136+
Assert.Equal(0, summary.CalculateBranchCoverage(modules).Percent);
137+
Assert.Equal(0, summary.CalculateBranchCoverage(modules).AverageModulePercent);
138+
Assert.Equal(0, summary.CalculateMethodCoverage(modules).Percent);
139+
Assert.Equal(0, summary.CalculateMethodCoverage(modules).AverageModulePercent);
140+
}
127141

128142
[Fact]
129143
public void TestCalculateLineCoverage_SingleModule()

0 commit comments

Comments
 (0)