Skip to content

Commit 58fe890

Browse files
committed
add MergeWith ArgumentException (file does not exist)
1 parent d1ca364 commit 58fe890

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

src/coverlet.core/Coverage.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,17 @@ public CoverageResult GetCoverageResult()
311311

312312
var coverageResult = new CoverageResult { Identifier = Identifier, Modules = modules, InstrumentedResults = _results, Parameters = _parameters };
313313

314-
if (!string.IsNullOrEmpty(_parameters.MergeWith) && !string.IsNullOrWhiteSpace(_parameters.MergeWith) && _fileSystem.Exists(_parameters.MergeWith))
314+
if (!string.IsNullOrEmpty(_parameters.MergeWith) && !string.IsNullOrWhiteSpace(_parameters.MergeWith))
315315
{
316-
string json = _fileSystem.ReadAllText(_parameters.MergeWith);
317-
coverageResult.Merge(JsonSerializer.Deserialize<Modules>(json));
316+
if (_fileSystem.Exists(_parameters.MergeWith))
317+
{
318+
string json = _fileSystem.ReadAllText(_parameters.MergeWith);
319+
coverageResult.Merge(JsonSerializer.Deserialize<Modules>(json));
320+
} else
321+
{
322+
//_logger.LogError($"MergeWith - file '{_parameters.MergeWith}' does not exist");
323+
throw new ArgumentException($"MergeWith - file '{_parameters.MergeWith}' does not exist");
324+
}
318325
}
319326

320327
return coverageResult;

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,5 +92,43 @@ public void TestCoverageWithTestAssembly()
9292

9393
directory.Delete(true);
9494
}
95+
96+
[Fact]
97+
public void TestCoverageWrongMergeWith()
98+
{
99+
string module = GetType().Assembly.Location;
100+
string pdb = Path.Combine(Path.GetDirectoryName(module), Path.GetFileNameWithoutExtension(module) + ".pdb");
101+
102+
DirectoryInfo directory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()));
103+
104+
File.Copy(module, Path.Combine(directory.FullName, Path.GetFileName(module)), true);
105+
File.Copy(pdb, Path.Combine(directory.FullName, Path.GetFileName(pdb)), true);
106+
107+
// TODO: Find a way to mimick hits
108+
var instrumentationHelper =
109+
new InstrumentationHelper(new ProcessExitHandler(), new RetryHelper(), new FileSystem(), new Mock<ILogger>().Object,
110+
new SourceRootTranslator(module, new Mock<ILogger>().Object, new FileSystem(), new AssemblyAdapter()));
111+
112+
var parameters = new CoverageParameters
113+
{
114+
IncludeFilters = new string[] { "[coverlet.tests.projectsample.excludedbyattribute*]*" },
115+
IncludeDirectories = Array.Empty<string>(),
116+
ExcludeFilters = Array.Empty<string>(),
117+
ExcludedSourceFiles = Array.Empty<string>(),
118+
ExcludeAttributes = Array.Empty<string>(),
119+
IncludeTestAssembly = false,
120+
SingleHit = false,
121+
MergeWith = "blabla",
122+
UseSourceLink = false
123+
};
124+
125+
var coverage = new Coverage(Path.Combine(directory.FullName, Path.GetFileName(module)), parameters, _mockLogger.Object, instrumentationHelper, new FileSystem(), new SourceRootTranslator(_mockLogger.Object, new FileSystem()), new CecilSymbolHelper());
126+
coverage.PrepareModules();
127+
128+
ArgumentException exception = Assert.Throws<ArgumentException>(() => coverage.GetCoverageResult());
129+
Assert.Contains("blabla", exception.Message);
130+
131+
directory.Delete(true);
132+
}
95133
}
96134
}

0 commit comments

Comments
 (0)