Skip to content

Commit d676f33

Browse files
committed
add test GetTestModules_LogsCorrectInfoMessage
1 parent 9a478f5 commit d676f33

File tree

4 files changed

+81
-8
lines changed

4 files changed

+81
-8
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright (c) Toni Solarin-Sodara
2+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
3+
4+
namespace Coverlet.Collector.DataCollection.Abstractions
5+
{
6+
internal interface ITestPlatformEqtTrace
7+
{
8+
bool IsInfoEnabled { get; }
9+
void Info(string format, params object[] args);
10+
void Verbose(string format, params object[] args);
11+
void Warning(string format, params object[] args);
12+
void Error(string format, params object[] args);
13+
}
14+
}

src/coverlet.collector/DataCollection/CoverletCoverageCollector.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Diagnostics;
77
using System.Linq;
88
using System.Xml;
9+
using Coverlet.Collector.DataCollection.Abstractions;
910
using Coverlet.Collector.Utilities;
1011
using Coverlet.Collector.Utilities.Interfaces;
1112
using Coverlet.Core.Abstractions;
@@ -23,7 +24,8 @@ namespace Coverlet.Collector.DataCollection
2324
[DataCollectorFriendlyName(CoverletConstants.FriendlyName)]
2425
public class CoverletCoverageCollector : DataCollector
2526
{
26-
private readonly TestPlatformEqtTrace _eqtTrace;
27+
private readonly ITestPlatformEqtTrace _eqtTrace;
28+
//private readonly TestPlatformEqtTrace _eqtTrace;
2729
private readonly ICoverageWrapper _coverageWrapper;
2830
private readonly ICountDownEventFactory _countDownEventFactory;
2931
private readonly Func<TestPlatformEqtTrace, TestPlatformLogger, string, IServiceCollection> _serviceCollectionFactory;
@@ -40,7 +42,7 @@ public class CoverletCoverageCollector : DataCollector
4042
{
4143
}
4244

43-
internal CoverletCoverageCollector(TestPlatformEqtTrace eqtTrace, ICoverageWrapper coverageWrapper, ICountDownEventFactory countDownEventFactory, Func<TestPlatformEqtTrace, TestPlatformLogger, string, IServiceCollection> serviceCollectionFactory) : base()
45+
internal CoverletCoverageCollector(ITestPlatformEqtTrace eqtTrace, ICoverageWrapper coverageWrapper, ICountDownEventFactory countDownEventFactory, Func<TestPlatformEqtTrace, TestPlatformLogger, string, IServiceCollection> serviceCollectionFactory) : base()
4446
{
4547
_eqtTrace = eqtTrace;
4648
_coverageWrapper = coverageWrapper;
@@ -128,14 +130,14 @@ private void OnSessionStart(object sender, SessionStartEventArgs sessionStartEve
128130
{
129131
// Get coverlet settings
130132
IEnumerable<string> testModules = GetTestModules(sessionStartEventArgs);
131-
var coverletSettingsParser = new CoverletSettingsParser(_eqtTrace);
133+
var coverletSettingsParser = new CoverletSettingsParser((TestPlatformEqtTrace)_eqtTrace);
132134
CoverletSettings coverletSettings = coverletSettingsParser.Parse(_configurationElement, testModules);
133135

134136
// Build services container
135-
_serviceProvider = _serviceCollectionFactory(_eqtTrace, _logger, coverletSettings.TestModule).BuildServiceProvider();
137+
_serviceProvider = _serviceCollectionFactory((TestPlatformEqtTrace)_eqtTrace, _logger, coverletSettings.TestModule).BuildServiceProvider();
136138

137139
// Get coverage and attachment managers
138-
_coverageManager = new CoverageManager(coverletSettings, _eqtTrace, _logger, _coverageWrapper,
140+
_coverageManager = new CoverageManager(coverletSettings, (TestPlatformEqtTrace)_eqtTrace, _logger, _coverageWrapper,
139141
_serviceProvider.GetRequiredService<IInstrumentationHelper>(), _serviceProvider.GetRequiredService<IFileSystem>(),
140142
_serviceProvider.GetRequiredService<ISourceRootTranslator>(), _serviceProvider.GetRequiredService<ICecilSymbolHelper>());
141143

@@ -166,7 +168,7 @@ private void OnSessionEnd(object sender, SessionEndEventArgs e)
166168
if (coverageReports != null && coverageReports.Any())
167169
{
168170
// Send result attachments to test platform.
169-
using var attachmentManager = new AttachmentManager(_dataSink, _dataCollectionContext, _logger, _eqtTrace, _countDownEventFactory.Create(coverageReports.Count(), TimeSpan.FromSeconds(30)));
171+
using var attachmentManager = new AttachmentManager(_dataSink, _dataCollectionContext, _logger, (TestPlatformEqtTrace)_eqtTrace, _countDownEventFactory.Create(coverageReports.Count(), TimeSpan.FromSeconds(30)));
170172
foreach ((string report, string fileName) in coverageReports)
171173
{
172174
attachmentManager.SendCoverageReport(report, fileName);

src/coverlet.collector/Utilities/TestPlatformEqtTrace.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
// Copyright (c) Toni Solarin-Sodara
22
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
33

4+
using Coverlet.Collector.DataCollection.Abstractions;
45
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
56

67
namespace Coverlet.Collector.Utilities
78
{
89
/// <summary>
910
/// Test platform eqttrace
1011
/// </summary>
11-
internal class TestPlatformEqtTrace
12+
internal class TestPlatformEqtTrace : ITestPlatformEqtTrace
1213
{
13-
public bool IsInfoEnabled => EqtTrace.IsInfoEnabled;
14+
public bool IsInfoEnabled { get; }
15+
//public bool IsInfoEnabled => EqtTrace.IsInfoEnabled;
1416
public bool IsVerboseEnabled => EqtTrace.IsVerboseEnabled;
1517

1618
/// <summary>

test/coverlet.collector.tests/CoverletCoverageDataCollectorTests.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Linq;
88
using System.Xml;
99
using Coverlet.Collector.DataCollection;
10+
using Coverlet.Collector.DataCollection.Abstractions;
1011
using Coverlet.Collector.Utilities;
1112
using Coverlet.Collector.Utilities.Interfaces;
1213
using Coverlet.Core;
@@ -278,5 +279,59 @@ public void OnSessionStartShouldLogWarningIfInstrumentationFailed()
278279
_mockLogger.Verify(x => x.LogWarning(_dataCollectionContext,
279280
It.Is<string>(y => y.Contains("CoverletDataCollectorException"))));
280281
}
282+
283+
[Fact]
284+
public void GetTestModules_LogsCorrectInfoMessage()
285+
{
286+
// Arrange
287+
var mockEqtTrace = new Mock<ITestPlatformEqtTrace>();
288+
mockEqtTrace.Setup(x => x.IsInfoEnabled).Returns(true);
289+
var testModules = new List<string> { "module1.dll", "module2.dll" };
290+
291+
_coverletCoverageDataCollector = new CoverletCoverageCollector(
292+
mockEqtTrace.Object,
293+
_mockCoverageWrapper.Object,
294+
_mockCountDownEventFactory.Object,
295+
GetDefaultServiceCollection);
296+
297+
_coverletCoverageDataCollector.Initialize(
298+
_configurationElement,
299+
_mockDataCollectionEvents.Object,
300+
_mockDataCollectionSink.Object,
301+
_mockLogger.Object,
302+
_context);
303+
304+
var sessionStartProperties = new Dictionary<string, object>
305+
{
306+
{ CoverletConstants.TestSourcesPropertyName, testModules }
307+
};
308+
309+
// Act
310+
_mockDataCollectionEvents.Raise(x => x.SessionStart += null, new SessionStartEventArgs(sessionStartProperties));
311+
312+
// Assert
313+
mockEqtTrace.Verify(x => x.Info(
314+
"{0}: TestModules: '{1}'",
315+
CoverletConstants.DataCollectorName,
316+
"module1.dll,module2.dll"),
317+
Times.Once);
318+
}
319+
320+
private static IServiceCollection GetDefaultServiceCollection(TestPlatformEqtTrace eqtTrace, TestPlatformLogger logger, string testModule)
321+
{
322+
IServiceCollection serviceCollection = new ServiceCollection();
323+
var fileSystem = new Mock<IFileSystem>();
324+
fileSystem.Setup(f => f.Exists(It.IsAny<string>())).Returns(true);
325+
326+
serviceCollection.AddTransient(_ => fileSystem.Object);
327+
serviceCollection.AddTransient<IRetryHelper, RetryHelper>();
328+
serviceCollection.AddTransient<IProcessExitHandler, ProcessExitHandler>();
329+
serviceCollection.AddTransient<ILogger, CoverletLogger>(_ => new CoverletLogger(eqtTrace, logger));
330+
serviceCollection.AddSingleton<IInstrumentationHelper, InstrumentationHelper>();
331+
serviceCollection.AddSingleton<ISourceRootTranslator, SourceRootTranslator>();
332+
serviceCollection.AddSingleton<ICecilSymbolHelper, CecilSymbolHelper>();
333+
334+
return serviceCollection;
335+
}
281336
}
282337
}

0 commit comments

Comments
 (0)