03ff455578
Add editorconfig with tuned configuration
122 lines
6.9 KiB
C#
122 lines
6.9 KiB
C#
// Copyright (c) Toni Solarin-Sodara
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
|
|
using Microsoft.VisualStudio.TestPlatform.ObjectModel.DataCollection;
|
|
using Xunit;
|
|
using Moq;
|
|
using Coverlet.Collector.Utilities;
|
|
using Coverlet.Collector.Utilities.Interfaces;
|
|
using Coverlet.Collector.DataCollection;
|
|
|
|
namespace Coverlet.Collector.Tests
|
|
{
|
|
public class AttachmentManagerTests
|
|
{
|
|
private AttachmentManager _attachmentManager;
|
|
private readonly Mock<DataCollectionSink> _mockDataCollectionSink;
|
|
private readonly DataCollectionContext _dataCollectionContext;
|
|
private readonly TestPlatformLogger _testPlatformLogger;
|
|
private readonly TestPlatformEqtTrace _eqtTrace;
|
|
private readonly Mock<IFileHelper> _mockFileHelper;
|
|
private readonly Mock<IDirectoryHelper> _mockDirectoryHelper;
|
|
private readonly Mock<ICountDownEvent> _mockCountDownEvent;
|
|
private readonly Mock<DataCollectionLogger> _mockDataCollectionLogger;
|
|
|
|
public AttachmentManagerTests()
|
|
{
|
|
_mockDataCollectionSink = new Mock<DataCollectionSink>();
|
|
_mockDataCollectionLogger = new Mock<DataCollectionLogger>();
|
|
var testcase = new TestCase { Id = Guid.NewGuid() };
|
|
_dataCollectionContext = new DataCollectionContext(testcase);
|
|
_testPlatformLogger = new TestPlatformLogger(_mockDataCollectionLogger.Object, _dataCollectionContext);
|
|
_eqtTrace = new TestPlatformEqtTrace();
|
|
_mockFileHelper = new Mock<IFileHelper>();
|
|
_mockDirectoryHelper = new Mock<IDirectoryHelper>();
|
|
_mockCountDownEvent = new Mock<ICountDownEvent>();
|
|
|
|
_attachmentManager = new AttachmentManager(_mockDataCollectionSink.Object, _dataCollectionContext, _testPlatformLogger,
|
|
_eqtTrace, @"E:\temp", _mockFileHelper.Object, _mockDirectoryHelper.Object, _mockCountDownEvent.Object);
|
|
}
|
|
|
|
[Fact]
|
|
public void SendCoverageReportShouldSaveReportToFile()
|
|
{
|
|
string coverageReport = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
|
+ "<coverage line-rate=\"1\" branch-rate=\"1\" version=\"1.9\" timestamp=\"1556263787\" lines-covered=\"0\" lines-valid=\"0\" branches-covered=\"0\" branches-valid=\"0\">"
|
|
+ "<sources/>"
|
|
+ "<packages/>"
|
|
+ "</coverage>";
|
|
|
|
_attachmentManager.SendCoverageReport(coverageReport, "report.cobertura.xml");
|
|
_mockFileHelper.Verify(x => x.WriteAllText(It.Is<string>(y => y.Contains(@"report.cobertura.xml")), coverageReport), Times.Once);
|
|
}
|
|
|
|
[Fact]
|
|
public void SendCoverageReportShouldThrowExceptionWhenFailedToSaveReportToFile()
|
|
{
|
|
_attachmentManager = new AttachmentManager(_mockDataCollectionSink.Object, _dataCollectionContext, _testPlatformLogger,
|
|
_eqtTrace, @"E:\temp", _mockFileHelper.Object, _mockDirectoryHelper.Object, _mockCountDownEvent.Object);
|
|
|
|
string coverageReport = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
|
+ "<coverage line-rate=\"1\" branch-rate=\"1\" version=\"1.9\" timestamp=\"1556263787\" lines-covered=\"0\" lines-valid=\"0\" branches-covered=\"0\" branches-valid=\"0\">"
|
|
+ "<sources/>"
|
|
+ "<packages/>"
|
|
+ "</coverage>";
|
|
|
|
string message = Assert.Throws<CoverletDataCollectorException>(() => _attachmentManager.SendCoverageReport(coverageReport, null)).Message;
|
|
Assert.Contains("CoverletCoverageDataCollector: Failed to save coverage report", message);
|
|
}
|
|
|
|
[Fact]
|
|
public void SendCoverageReportShouldSendAttachmentToTestPlatform()
|
|
{
|
|
DirectoryInfo directory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()));
|
|
_attachmentManager = new AttachmentManager(_mockDataCollectionSink.Object, _dataCollectionContext, _testPlatformLogger,
|
|
_eqtTrace, directory.ToString(), new FileHelper(), _mockDirectoryHelper.Object, _mockCountDownEvent.Object);
|
|
|
|
string coverageReport = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
|
+ "<coverage line-rate=\"1\" branch-rate=\"1\" version=\"1.9\" timestamp=\"1556263787\" lines-covered=\"0\" lines-valid=\"0\" branches-covered=\"0\" branches-valid=\"0\">"
|
|
+ "<sources/>"
|
|
+ "<packages/>"
|
|
+ "</coverage>";
|
|
|
|
_attachmentManager.SendCoverageReport(coverageReport, "report.cobertura.xml");
|
|
|
|
_mockDataCollectionSink.Verify(x => x.SendFileAsync(It.IsAny<FileTransferInformation>()));
|
|
|
|
directory.Delete(true);
|
|
}
|
|
|
|
[Fact]
|
|
public void OnDisposeAttachmentManagerShouldCleanUpReportDirectory()
|
|
{
|
|
var mockDirectoryHelper = new Mock<IDirectoryHelper>();
|
|
mockDirectoryHelper.Setup(x => x.Exists(It.Is<string>(y => y.Contains(@"E:\temp")))).Returns(true);
|
|
using (var attachmentManager = new AttachmentManager(_mockDataCollectionSink.Object, _dataCollectionContext, _testPlatformLogger, _eqtTrace, @"E:\temp", _mockFileHelper.Object, mockDirectoryHelper.Object, _mockCountDownEvent.Object))
|
|
{
|
|
_mockDataCollectionSink.Raise(x => x.SendFileCompleted += null, new AsyncCompletedEventArgs(null, false, null));
|
|
}
|
|
|
|
mockDirectoryHelper.Verify(x => x.Delete(It.Is<string>(y => y.Contains(@"E:\temp")), true), Times.Once);
|
|
}
|
|
|
|
[Fact]
|
|
public void OnDisposeAttachmentManagerShouldThrowCoverletDataCollectorExceptionIfUnableToCleanUpReportDirectory()
|
|
{
|
|
var mockDirectoryHelper = new Mock<IDirectoryHelper>();
|
|
mockDirectoryHelper.Setup(x => x.Exists(It.Is<string>(y => y.Contains(@"E:\temp")))).Returns(true);
|
|
mockDirectoryHelper.Setup(x => x.Delete(It.Is<string>(y => y.Contains(@"E:\temp")), true)).Throws(new FileNotFoundException());
|
|
using (var attachmentManager = new AttachmentManager(_mockDataCollectionSink.Object, _dataCollectionContext, _testPlatformLogger, _eqtTrace, @"E:\temp", _mockFileHelper.Object, mockDirectoryHelper.Object, _mockCountDownEvent.Object))
|
|
{
|
|
_mockDataCollectionSink.Raise(x => x.SendFileCompleted += null, new AsyncCompletedEventArgs(null, false, null));
|
|
}
|
|
_mockDataCollectionLogger.Verify(x => x.LogWarning(_dataCollectionContext,
|
|
It.Is<string>(y => y.Contains("CoverletDataCollectorException: CoverletCoverageDataCollector: Failed to cleanup report directory"))), Times.AtLeastOnce);
|
|
}
|
|
}
|
|
}
|