Skip to content

Commit 111885d

Browse files
committed
coverlet collector
1 parent d4acf1a commit 111885d

File tree

2 files changed

+51
-5
lines changed

2 files changed

+51
-5
lines changed

FineCodeCoverageTests/CoverletDataCollectorUtil_RunAsync_Tests.cs

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,17 +118,58 @@ public async Task Should_Get_Settings_With_ExcludeByAttribute_From_CoverageProje
118118
}
119119

120120
[Test]
121-
public async Task Should_Get_Settings_With_Include_From_CoverageProject_And_RunSettings_Async()
121+
public async Task Should_Include_From_CoverageProject_Settings_Include_And_RunSettings_Async()
122122
{
123123
var projectInclude= new string[] { "included" };
124124
mockCoverageProject.Setup(cp => cp.Settings.Include).Returns(projectInclude);
125125
mockCoverageProject.Setup(cp => cp.CoverageOutputFolder).Returns("");
126126

127+
await coverletDataCollectorUtil.RunAsync(CancellationToken.None);
128+
mockDataCollectorSettingsBuilder.Verify(b => b.WithInclude(projectInclude, It.IsAny<string>()));
129+
}
130+
131+
[Test]
132+
public async Task Should_Include_From_CoverageProject_IncludedReferencedProjects_And_RunSettings_Async()
133+
{
134+
var projectInclude = new string[] { "[ReferencedProject]*" };
135+
mockCoverageProject.Setup(cp => cp.CoverageOutputFolder).Returns("");
136+
var mockReferencedProject = new Mock<IReferencedProject>();
137+
mockReferencedProject.SetupGet(rp => rp.AssemblyName).Returns("ReferencedProject");
138+
mockCoverageProject.Setup(cp => cp.IncludedReferencedProjects).Returns(new List<IReferencedProject> { mockReferencedProject.Object });
139+
140+
await coverletDataCollectorUtil.RunAsync(CancellationToken.None);
141+
mockDataCollectorSettingsBuilder.Verify(b => b.WithInclude(projectInclude, It.IsAny<string>()));
142+
}
143+
144+
[Test]
145+
public async Task Should_Not_Include_Test_Assembly_When_IncludeTestAssembly_True_And_No_Other_Includes_Async()
146+
{
147+
mockCoverageProject.Setup(cp => cp.CoverageOutputFolder).Returns("");
148+
mockCoverageProject.Setup(cp => cp.Settings.IncludeTestAssembly).Returns(true);
127149
mockRunSettingsCoverletConfiguration.Setup(rsc => rsc.Include).Returns("rsincluded");
150+
151+
await coverletDataCollectorUtil.RunAsync(CancellationToken.None);
152+
mockDataCollectorSettingsBuilder.Verify(b => b.WithInclude(new string[] { },It.IsAny<string>()));
153+
}
154+
155+
[Test]
156+
public async Task Should_Include_Test_Assembly_When_IncludeTestAssembly_True_And_Other_Includes_Async()
157+
{
158+
mockCoverageProject.Setup(cp => cp.CoverageOutputFolder).Returns("");
159+
var projectInclude = new string[] { "included" };
160+
mockCoverageProject.Setup(cp => cp.Settings.Include).Returns(projectInclude);
161+
mockCoverageProject.Setup(cp => cp.Settings.IncludeTestAssembly).Returns(true);
162+
mockCoverageProject.Setup(cp => cp.ProjectName).Returns("TestProject");
163+
mockRunSettingsCoverletConfiguration.Setup(rsc => rsc.Include).Returns("rsincluded");
164+
128165
await coverletDataCollectorUtil.RunAsync(CancellationToken.None);
129-
mockDataCollectorSettingsBuilder.Verify(b => b.WithInclude(projectInclude, "rsincluded"));
166+
mockDataCollectorSettingsBuilder.Verify(
167+
b => b.WithInclude(
168+
It.Is<string[]>(includes => includes.OrderBy(incl => incl).SequenceEqual(new string[] { "[TestProject]*", "included"})),
169+
It.IsAny<string>()));
130170
}
131171

172+
132173
[TestCase(true,"true")]
133174
[TestCase(false, "false")]
134175
public async Task Should_Get_Settings_With_IncludeTestAssembly_From_CoverageProject_And_RunSettings_Async(bool projectIncludeTestAssembly, string runSettingsIncludeTestAssembly)

SharedProject/Core/Coverlet/DataCollector/CoverletDataCollectorUtil.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,19 @@ private string GetSettings()
191191
SanitizeExcludesOrIncludes(coverageProject.Settings.ExcludeByAttribute),
192192
runSettingsCoverletConfiguration.ExcludeByAttribute);
193193

194-
string[] projectIncludes = coverageProject.IncludedReferencedProjects.Select(irp => $"[{irp.AssemblyName}]*").ToArray();
194+
var projectIncludes = coverageProject.IncludedReferencedProjects.Select(irp => $"[{irp.AssemblyName}]*");
195195
if(coverageProject.Settings.Include != null)
196196
{
197-
projectIncludes = projectIncludes.Concat(SanitizeExcludesOrIncludes(coverageProject.Settings.Include)).ToArray();
197+
projectIncludes = projectIncludes.Concat(SanitizeExcludesOrIncludes(coverageProject.Settings.Include));
198+
}
199+
200+
if (coverageProject.Settings.IncludeTestAssembly && projectIncludes.Any())
201+
{
202+
projectIncludes = projectIncludes.Concat(new string[] { $"[{coverageProject.ProjectName}]*" }).ToArray();
198203
}
199204

200205
dataCollectorSettingsBuilder
201-
.WithInclude(projectIncludes, runSettingsCoverletConfiguration.Include);
206+
.WithInclude(projectIncludes.ToArray(), runSettingsCoverletConfiguration.Include);
202207
dataCollectorSettingsBuilder
203208
.WithIncludeTestAssembly(coverageProject.Settings.IncludeTestAssembly, runSettingsCoverletConfiguration.IncludeTestAssembly);
204209

0 commit comments

Comments
 (0)