Browse Source

Fix IOException when running code coverage.

Running unit tests with code coverage would intermittently throw an
IOException:

System.IO.IOException: The process cannot access the file
'...OpenCover\coverage.xml'
pull/607/head
Matt Ward 12 years ago
parent
commit
92f9c3ab36
  1. 5
      src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageResultsReader.cs
  2. 7
      src/AddIns/Analysis/CodeCoverage/Project/Src/RunTestWithCodeCoverageCommand.cs

5
src/AddIns/Analysis/CodeCoverage/Project/Src/CodeCoverageResultsReader.cs

@ -52,8 +52,9 @@ namespace ICSharpCode.CodeCoverage
CodeCoverageResults ReadCodeCoverageResults(string fileName) CodeCoverageResults ReadCodeCoverageResults(string fileName)
{ {
TextReader reader = fileSystem.OpenText(FileName.Create(fileName)); using (TextReader reader = fileSystem.OpenText(FileName.Create(fileName))) {
return new CodeCoverageResults(reader); return new CodeCoverageResults(reader);
}
} }
public IEnumerable<string> GetMissingResultsFiles() public IEnumerable<string> GetMissingResultsFiles()

7
src/AddIns/Analysis/CodeCoverage/Project/Src/RunTestWithCodeCoverageCommand.cs

@ -119,7 +119,7 @@ namespace ICSharpCode.CodeCoverage
void DisplayCodeCoverageResults(CodeCoverageResultsReader coverageResultsReader) void DisplayCodeCoverageResults(CodeCoverageResultsReader coverageResultsReader)
{ {
foreach (CodeCoverageResults result in coverageResultsReader.GetResults()) { foreach (CodeCoverageResults result in GetResults(coverageResultsReader)) {
DisplayCodeCoverageResults(result); DisplayCodeCoverageResults(result);
} }
foreach (string missingFile in coverageResultsReader.GetMissingResultsFiles()) { foreach (string missingFile in coverageResultsReader.GetMissingResultsFiles()) {
@ -127,6 +127,11 @@ namespace ICSharpCode.CodeCoverage
} }
} }
IEnumerable<CodeCoverageResults> GetResults(CodeCoverageResultsReader coverageResultsReader)
{
return SD.MainThread.InvokeIfRequired(() => coverageResultsReader.GetResults().ToList());
}
void DisplayCodeCoverageResults(CodeCoverageResults results) void DisplayCodeCoverageResults(CodeCoverageResults results)
{ {
SD.MainThread.InvokeIfRequired(() => CodeCoverageService.ShowResults(results)); SD.MainThread.InvokeIfRequired(() => CodeCoverageService.ShowResults(results));

Loading…
Cancel
Save