Skip to content

Commit 773a23c

Browse files
exclude xunit if empty exclude filters
1 parent 24d5aca commit 773a23c

File tree

4 files changed

+46
-0
lines changed

4 files changed

+46
-0
lines changed

src/coverlet.collector/DataCollection/CoverletSettingsParser.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,13 @@ private string[] ParseExcludeFilters(XmlElement configurationElement)
131131
}
132132
}
133133

134+
// if we've only one element mean that we only added CoverletConstants.DefaultExcludeFilter
135+
// so add default exclusions
136+
if (excludeFilters.Count == 1)
137+
{
138+
excludeFilters.Add("[xunit*]*");
139+
}
140+
134141
return excludeFilters.ToArray();
135142
}
136143

src/coverlet.console/Program.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ static int Main(string[] args)
5757
logger.Level = verbosity.ParsedValue;
5858
}
5959

60+
// We add default exclusion filter if no specified
61+
if (excludeFilters.Values.Count == 0)
62+
{
63+
excludeFilters.Values.Add("[xunit*]*");
64+
}
65+
6066
Coverage coverage = new Coverage(module.Value,
6167
includeFilters.Values.ToArray(),
6268
includeDirectories.Values.ToArray(),

src/coverlet.msbuild.tasks/InstrumentationTask.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,12 @@ public override bool Execute()
104104
var excludedSourceFiles = _excludeByFile?.Split(',');
105105
var excludeAttributes = _excludeByAttribute?.Split(',');
106106

107+
// We add default exclusion filter if no specified
108+
if (excludeFilters is null || excludeFilters.Length == 0)
109+
{
110+
excludeFilters = new string[] { "[xunit*]*" };
111+
}
112+
107113
Coverage coverage = new Coverage(_path, includeFilters, includeDirectories, excludeFilters, excludedSourceFiles, excludeAttributes, _includeTestAssembly, _singleHit, _mergeWith, _useSourceLink, _logger);
108114
CoveragePrepareResult prepareResult = coverage.PrepareModules();
109115
InstrumenterState = new TaskItem(System.IO.Path.GetTempFileName());

test/coverlet.collector.tests/CoverletSettingsParserTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,5 +78,32 @@ private void CreateCoverletNodes(XmlDocument doc, XmlElement configElement, stri
7878
node.InnerText = nodeValue;
7979
configElement.AppendChild(node);
8080
}
81+
82+
[Fact]
83+
public void ParseShouldSkipXunitModulesIfEmptyExclude()
84+
{
85+
var testModules = new List<string> { "abc.dll" };
86+
87+
CoverletSettings coverletSettings = _coverletSettingsParser.Parse(null, testModules);
88+
89+
Assert.Equal("[coverlet.*]*", coverletSettings.ExcludeFilters[0]);
90+
Assert.Equal("[xunit*]*", coverletSettings.ExcludeFilters[1]);
91+
}
92+
93+
[Fact]
94+
public void ParseShouldNotSkipXunitModulesIfNotEmptyExclude()
95+
{
96+
var testModules = new List<string> { "abc.dll" };
97+
var doc = new XmlDocument();
98+
var configElement = doc.CreateElement("Configuration");
99+
this.CreateCoverletNodes(doc, configElement, CoverletConstants.ExcludeFiltersElementName, "[coverlet.*.tests?]*");
100+
101+
CoverletSettings coverletSettings = _coverletSettingsParser.Parse(configElement, testModules);
102+
103+
Assert.Equal("[coverlet.*]*", coverletSettings.ExcludeFilters[0]);
104+
Assert.Equal("[coverlet.*.tests?]*", coverletSettings.ExcludeFilters[1]);
105+
Assert.Equal(2, coverletSettings.ExcludeFilters.Length);
106+
Assert.DoesNotContain("[xunit*]*", coverletSettings.ExcludeFilters);
107+
}
81108
}
82109
}

0 commit comments

Comments
 (0)