Skip to content

SystemIOFile Adapter #550

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
a6e0687
Merge pull request #1 from tonerdo/master
daveMueller Aug 17, 2019
84c0aff
Merge pull request #2 from tonerdo/master
daveMueller Sep 5, 2019
5b4e316
Merge pull request #3 from tonerdo/master
daveMueller Sep 11, 2019
45075e1
Merge pull request #4 from tonerdo/master
daveMueller Sep 14, 2019
23aeb1c
extended SystemIoFileAdapter and interface
daveMueller Sep 15, 2019
7ca75f2
removed IFileHelper and used IFileSystem instead + refactorings
daveMueller Sep 15, 2019
71af4de
File adapter on Program.cs
daveMueller Sep 15, 2019
8ec57c1
File adapter on Coverage.cs + refactorings
daveMueller Sep 15, 2019
8a4a1f8
File adapter for CoverageResultTask + refactorings
daveMueller Sep 15, 2019
3875965
File adapter on InstumenterHelper
daveMueller Sep 15, 2019
c889d15
File adapter on RemoteExecutor
daveMueller Sep 15, 2019
202f965
changes to CoverletCoverageDataCollectorTests
daveMueller Sep 16, 2019
c58508b
changes to collector
daveMueller Sep 16, 2019
5c11795
changed Test
daveMueller Sep 16, 2019
ef7d0b0
Merge pull request #5 from tonerdo/master
daveMueller Sep 17, 2019
669f042
Merge branch 'master' into 543_SystemIoFileAdapter
daveMueller Sep 17, 2019
2af6fe2
reverted changes to coverlet.collector
daveMueller Sep 17, 2019
b1bf6c9
code review
daveMueller Sep 17, 2019
00de202
adapted failing test
daveMueller Sep 17, 2019
4dca604
updates
MarcoRossignoli Sep 18, 2019
33c7e40
remove not used copy method
Sep 18, 2019
95ca53d
code review changes
Sep 18, 2019
f8ec589
code review
daveMueller Sep 18, 2019
d87ea07
code review; changed parameter order
daveMueller Sep 20, 2019
690d6dc
some nits
MarcoRossignoli Sep 21, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions src/coverlet.collector/DataCollection/AttachmentManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using coverlet.collector.Resources;
using Coverlet.Collector.Utilities;
using Coverlet.Collector.Utilities.Interfaces;
using Coverlet.Core.Abstracts;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;

namespace Coverlet.Collector.DataCollection
Expand All @@ -18,31 +19,31 @@ internal class AttachmentManager : IDisposable
private readonly TestPlatformEqtTrace _eqtTrace;
private readonly TestPlatformLogger _logger;
private readonly DataCollectionContext _dataCollectionContext;
private readonly IFileHelper _fileHelper;
private readonly IFileSystem _fileSystem;
private readonly IDirectoryHelper _directoryHelper;
private readonly ICountDownEvent _countDownEvent;
private readonly string _reportDirectory;

public AttachmentManager(DataCollectionSink dataSink, DataCollectionContext dataCollectionContext, TestPlatformLogger logger, TestPlatformEqtTrace eqtTrace, ICountDownEvent countDownEvent)
public AttachmentManager(DataCollectionSink dataSink, DataCollectionContext dataCollectionContext, TestPlatformLogger logger, TestPlatformEqtTrace eqtTrace, ICountDownEvent countDownEvent, IFileSystem fileSystem)
: this(dataSink,
dataCollectionContext,
logger,
eqtTrace,
Guid.NewGuid().ToString(),
new FileHelper(),
fileSystem,
new DirectoryHelper(),
countDownEvent)
{
}

public AttachmentManager(DataCollectionSink dataSink, DataCollectionContext dataCollectionContext, TestPlatformLogger logger, TestPlatformEqtTrace eqtTrace, string reportDirectoryName, IFileHelper fileHelper, IDirectoryHelper directoryHelper, ICountDownEvent countDownEvent)
public AttachmentManager(DataCollectionSink dataSink, DataCollectionContext dataCollectionContext, TestPlatformLogger logger, TestPlatformEqtTrace eqtTrace, string reportDirectoryName, IFileSystem fileSystem, IDirectoryHelper directoryHelper, ICountDownEvent countDownEvent)
{
// Store input variabless
_dataSink = dataSink;
_dataCollectionContext = dataCollectionContext;
_logger = logger;
_eqtTrace = eqtTrace;
_fileHelper = fileHelper;
_fileSystem = fileSystem;
_directoryHelper = directoryHelper;
_countDownEvent = countDownEvent;

Expand Down Expand Up @@ -100,7 +101,7 @@ private string SaveCoverageReport(string report, string reportFileName)
{
_directoryHelper.CreateDirectory(_reportDirectory);
string filePath = Path.Combine(_reportDirectory, reportFileName);
_fileHelper.WriteAllText(filePath, report);
_fileSystem.WriteAllText(filePath, report);
_eqtTrace.Info("{0}: Saved coverage report to path: '{1}'", CoverletConstants.DataCollectorName, filePath);

return filePath;
Expand Down Expand Up @@ -139,7 +140,7 @@ public void OnSendFileCompleted(object sender, AsyncCompletedEventArgs e)
/// <param name="attachmentPath">Attachment file path</param>
private void SendAttachment(string attachmentPath)
{
if (_fileHelper.Exists(attachmentPath))
if (_fileSystem.Exists(attachmentPath))
{
// Send coverage attachment to test platform.
_eqtTrace.Verbose("{0}: Sending attachment to test platform", CoverletConstants.DataCollectorName);
Expand Down
1 change: 1 addition & 0 deletions src/coverlet.collector/DataCollection/CoverageWrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public Coverage CreateCoverage(CoverletSettings settings, ILogger coverletLogger
settings.MergeWith,
settings.UseSourceLink,
coverletLogger,
(IFileSystem)DependencyInjection.Current.GetService(typeof(IFileSystem)),
(IInstrumentationHelper)DependencyInjection.Current.GetService(typeof(IInstrumentationHelper)));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
using System.Xml;
using Coverlet.Collector.Utilities;
using Coverlet.Collector.Utilities.Interfaces;
using Coverlet.Core;
using Coverlet.Core.Abstracts;
using Coverlet.Core.Helpers;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;

namespace Coverlet.Collector.DataCollection
Expand Down Expand Up @@ -132,13 +135,14 @@ private void OnSessionEnd(object sender, SessionEndEventArgs e)
{
_eqtTrace.Verbose("{0}: SessionEnd received", CoverletConstants.DataCollectorName);

IFileSystem fileSystem = (IFileSystem)DependencyInjection.Current.GetService(typeof(IFileSystem));
// Get coverage reports
IEnumerable<(string report, string fileName)> coverageReports = _coverageManager?.GetCoverageReports();

if (coverageReports != null && coverageReports.Count() > 0)
{
// Send result attachments to test platform.
using (var attachmentManager = new AttachmentManager(_dataSink, _dataCollectionContext, _logger, _eqtTrace, _countDownEventFactory.Create(coverageReports.Count(), TimeSpan.FromSeconds(30))))
using (var attachmentManager = new AttachmentManager(_dataSink, _dataCollectionContext, _logger, _eqtTrace, _countDownEventFactory.Create(coverageReports.Count(), TimeSpan.FromSeconds(30)), fileSystem))
{
foreach ((string report, string fileName) in coverageReports)
{
Expand Down
21 changes: 0 additions & 21 deletions src/coverlet.collector/Utilities/FileHelper.cs

This file was deleted.

23 changes: 0 additions & 23 deletions src/coverlet.collector/Utilities/Interfaces/IFileHelper.cs

This file was deleted.

5 changes: 3 additions & 2 deletions src/coverlet.console/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ static int Main(string[] args)
// Adjust log level based on user input.
logger.Level = verbosity.ParsedValue;
}

var fileSystem = (IFileSystem)DependencyInjection.Current.GetService(typeof(IFileSystem));
Coverage coverage = new Coverage(module.Value,
includeFilters.Values.ToArray(),
includeDirectories.Values.ToArray(),
Expand All @@ -71,6 +71,7 @@ static int Main(string[] args)
mergeWith.Value(),
useSourceLink.HasValue(),
logger,
fileSystem,
(IInstrumentationHelper)DependencyInjection.Current.GetService(typeof(IInstrumentationHelper)));
coverage.PrepareModules();

Expand Down Expand Up @@ -140,7 +141,7 @@ static int Main(string[] args)

var report = Path.Combine(directory, filename);
logger.LogInformation($" Generating report '{report}'", important: true);
File.WriteAllText(report, reporter.Report(result));
fileSystem.WriteAllText(report, reporter.Report(result));
}
}

Expand Down
20 changes: 18 additions & 2 deletions src/coverlet.core/Abstracts/IFileSystem.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
namespace Coverlet.Core.Abstracts
using System.IO;

namespace Coverlet.Core.Abstracts
{
internal interface IFileSystem
public interface IFileSystem
{
bool Exists(string path);

void WriteAllText(string path, string contents);

string ReadAllText(string path);

FileStream OpenRead(string path);

void Copy(string sourceFileName, string destFileName);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why?Where is used?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry this was used in the coverlet.collector and I missed to revert it.


void Copy(string sourceFileName, string destFileName, bool overwrite);

void Delete(string path);

void AppendAllText(string path, string contents);
}
}
12 changes: 8 additions & 4 deletions src/coverlet.core/Coverage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public class Coverage
private bool _useSourceLink;
private ILogger _logger;
private IInstrumentationHelper _instrumentationHelper;
private IFileSystem _fileSystem;
private List<InstrumenterResult> _results;

public string Identifier
Expand All @@ -45,6 +46,7 @@ public Coverage(string module,
string mergeWith,
bool useSourceLink,
ILogger logger,
IFileSystem fileSystem,
IInstrumentationHelper instrumentationHelper)
{
_module = module;
Expand All @@ -58,20 +60,22 @@ public Coverage(string module,
_mergeWith = mergeWith;
_useSourceLink = useSourceLink;
_logger = logger;
_fileSystem = fileSystem;
_instrumentationHelper = instrumentationHelper;

_identifier = Guid.NewGuid().ToString();
_results = new List<InstrumenterResult>();
}

public Coverage(CoveragePrepareResult prepareResult, ILogger logger, IInstrumentationHelper instrumentationHelper)
public Coverage(CoveragePrepareResult prepareResult, ILogger logger, IInstrumentationHelper instrumentationHelper, IFileSystem fileSystem)
{
_identifier = prepareResult.Identifier;
_module = prepareResult.Module;
_mergeWith = prepareResult.MergeWith;
_useSourceLink = prepareResult.UseSourceLink;
_results = new List<InstrumenterResult>(prepareResult.Results);
_logger = logger;
_fileSystem = fileSystem;
_instrumentationHelper = instrumentationHelper;
}

Expand Down Expand Up @@ -215,9 +219,9 @@ public CoverageResult GetCoverageResult()

var coverageResult = new CoverageResult { Identifier = _identifier, Modules = modules, InstrumentedResults = _results };

if (!string.IsNullOrEmpty(_mergeWith) && !string.IsNullOrWhiteSpace(_mergeWith) && File.Exists(_mergeWith))
if (!string.IsNullOrEmpty(_mergeWith) && !string.IsNullOrWhiteSpace(_mergeWith) && _fileSystem.Exists(_mergeWith))
{
string json = File.ReadAllText(_mergeWith);
string json = _fileSystem.ReadAllText(_mergeWith);
coverageResult.Merge(JsonConvert.DeserializeObject<Modules>(json));
}

Expand All @@ -228,7 +232,7 @@ private void CalculateCoverage()
{
foreach (var result in _results)
{
if (!File.Exists(result.HitsFilePath))
if (!_fileSystem.Exists(result.HitsFilePath))
{
// Hits file could be missed mainly for two reason
// 1) Issue during module Unload()
Expand Down
37 changes: 36 additions & 1 deletion src/coverlet.core/Helpers/FileSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,46 @@

namespace Coverlet.Core.Helpers
{
internal class FileSystem : IFileSystem
public class FileSystem : IFileSystem
{
public bool Exists(string path)
{
return File.Exists(path);
}

public void WriteAllText(string path, string contents)
{
File.WriteAllText(path, contents);
}

public string ReadAllText(string path)
{
return File.ReadAllText(path);
}

public FileStream OpenRead(string path)
{
return File.OpenRead(path);
}

public void Copy(string sourceFileName, string destFileName)
{
File.Copy(sourceFileName, destFileName);
}

public void Copy(string sourceFileName, string destFileName, bool overwrite)
{
File.Copy(sourceFileName, destFileName, overwrite);
}

public void Delete(string path)
{
File.Delete(path);
}

public void AppendAllText(string path, string contents)
{
File.AppendAllText(path, contents);
}
}
}
Loading