diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml
index b1b6a5c..e0e45be 100644
--- a/.github/workflows/ci-build.yml
+++ b/.github/workflows/ci-build.yml
@@ -26,4 +26,4 @@ jobs:
run: dotnet build src/CodeCoverageSummary.sln --configuration Release --no-restore
- name: Test with sample file
- run: dotnet src/CodeCoverageSummary/bin/Release/net6.0/CodeCoverageSummary.dll --files src/coverage.cobertura.xml --badge true
+ run: dotnet src/CodeCoverageSummary/bin/Release/net6.0/CodeCoverageSummary.dll --files **/coverage.*.xml --badge true
diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml
index f49ae90..eb1e12c 100644
--- a/.github/workflows/release-build.yml
+++ b/.github/workflows/release-build.yml
@@ -30,7 +30,7 @@ jobs:
run: dotnet build src/CodeCoverageSummary.sln --configuration Release --no-restore
- name: Test with sample file
- run: dotnet src/CodeCoverageSummary/bin/Release/net6.0/CodeCoverageSummary.dll --files src/coverage.cobertura.xml --badge true
+ run: dotnet src/CodeCoverageSummary/bin/Release/net6.0/CodeCoverageSummary.dll --files **/coverage.*.xml --badge true
deploy:
name: Deploy to GHCR
diff --git a/src/CodeCoverageSummary/CodeCoverageSummary.csproj b/src/CodeCoverageSummary/CodeCoverageSummary.csproj
index 374920c..32e884c 100644
--- a/src/CodeCoverageSummary/CodeCoverageSummary.csproj
+++ b/src/CodeCoverageSummary/CodeCoverageSummary.csproj
@@ -19,6 +19,7 @@
+
diff --git a/src/CodeCoverageSummary/Program.cs b/src/CodeCoverageSummary/Program.cs
index 3473a89..e1e2ca3 100644
--- a/src/CodeCoverageSummary/Program.cs
+++ b/src/CodeCoverageSummary/Program.cs
@@ -1,5 +1,7 @@
using CommandLine;
+using Microsoft.Extensions.FileSystemGlobbing;
using System;
+using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
@@ -19,8 +21,19 @@ private static int Main(string[] args)
{
try
{
+ // use glob patterns to match files
+ Matcher matcher = new();
+ matcher.AddIncludePatterns(o.Files.ToArray());
+ IEnumerable matchingFiles = matcher.GetResultsInFullPath(".");
+
+ if (matchingFiles?.Any() == false)
+ {
+ Console.WriteLine("Error: No files found matching glob pattern.");
+ return -2; // error
+ }
+
// check files exist
- foreach (var file in o.Files)
+ foreach (var file in matchingFiles)
{
if (!File.Exists(file))
{
@@ -31,13 +44,13 @@ private static int Main(string[] args)
// parse code coverage file
CodeSummary summary = new();
- foreach (var file in o.Files)
+ foreach (var file in matchingFiles)
{
Console.WriteLine($"Code Coverage File: {file}");
summary = ParseTestResults(file, summary);
}
- summary.LineRate /= o.Files.Count();
- summary.BranchRate /= o.Files.Count();
+ summary.LineRate /= matchingFiles.Count();
+ summary.BranchRate /= matchingFiles.Count();
if (summary.Packages.Count == 0)
{
diff --git a/src/CodeCoverageSummary/Properties/launchSettings.json b/src/CodeCoverageSummary/Properties/launchSettings.json
index 68bac46..25a681a 100644
--- a/src/CodeCoverageSummary/Properties/launchSettings.json
+++ b/src/CodeCoverageSummary/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"CodeCoverageSummary": {
"commandName": "Project",
- "commandLineArgs": "--files ../../../../coverage.cobertura.xml,../../../../coverage.cobertura.xml --format=text --badge true --thresholds=\"85 90\" --fail true"
+ "commandLineArgs": "--files **/coverage.*.xml --format=text --badge true --thresholds=\"85 90\" --fail true"
},
"Docker": {
"commandName": "Docker",