Skip to content

Commit f1da4e9

Browse files
committed
most ms code coverage tests
1 parent 4110e71 commit f1da4e9

File tree

43 files changed

+2793
-1975
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2793
-1975
lines changed

FineCodeCoverageTests/FineCodeCoverageTests.csproj

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,16 @@
109109
<Compile Include="CoverageToolOutput_Tests\SolutionFolderProvider_Tests.cs" />
110110
<Compile Include="CoverageUtilManager_Tests.cs" />
111111
<Compile Include="Events\EventAggregator.cs" />
112-
<Compile Include="MsCodeCoverage\MsCodeCoverage_Tests.cs" />
112+
<Compile Include="MsCodeCoverage\CustomRunSettingsTemplateProvider_Tests.cs" />
113+
<Compile Include="MsCodeCoverage\MsCodeCoverageRunSettingsService_Collect_Tests.cs" />
114+
<Compile Include="MsCodeCoverage\MsCodeCoverageRunSettingsService_Initialize_Tests.cs" />
115+
<Compile Include="MsCodeCoverage\MsCodeCoverageRunSettingsService_IRunSettingsService_Tests.cs" />
116+
<Compile Include="MsCodeCoverage\ProjectRunSettingsGenerator_Tests.cs" />
117+
<Compile Include="MsCodeCoverage\MsCodeCoverage_UserRunSettingsService_AddFCCSettings_Tests.cs" />
118+
<Compile Include="MsCodeCoverage\MsCodeCoverage_UserRunSettingsService_Suitability_Tests.cs" />
119+
<Compile Include="MsCodeCoverage\RunSettingsTemplateReplacementsFactory_Tests.cs" />
113120
<Compile Include="Test helpers\MefOrderAssertions.cs" />
121+
<Compile Include="Test helpers\TestThreadHelper.cs" />
114122
<Compile Include="ToolFolder_Tests.cs" />
115123
<Compile Include="ToolZipProvider_Tests.cs" />
116124
<Compile Include="CoverletDataCollectorGeneratedCobertura_Tests.cs" />
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using NUnit.Framework;
2+
using FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage;
3+
using System.IO;
4+
using System;
5+
using AutoMoq;
6+
using FineCodeCoverage.Core.Utilities;
7+
8+
namespace FineCodeCoverageTests.MsCodeCoverage
9+
{
10+
internal class CustomRunSettingsTemplateProvider_Tests
11+
{
12+
private AutoMoqer autoMocker;
13+
private CustomRunSettingsTemplateProvider customRunSettingsTemplateProvider;
14+
private const string templateName = "fcc-ms-runsettings-template.xml";
15+
private const string projectDirectory = "ProjectDirectory";
16+
private const string solutionDirectory = "SolutionDirectory";
17+
private readonly string templateInProjectDirectory = Path.Combine(projectDirectory, templateName);
18+
private readonly string templateInSolutionDirectory = Path.Combine(solutionDirectory, templateName);
19+
20+
21+
[Flags]
22+
internal enum TemplateIn { None, ProjectDir, SolutionDir}
23+
24+
[SetUp]
25+
public void Setup()
26+
{
27+
autoMocker = new AutoMoqer();
28+
customRunSettingsTemplateProvider = autoMocker.Create<CustomRunSettingsTemplateProvider>();
29+
}
30+
31+
[TestCase(TemplateIn.ProjectDir)]
32+
[TestCase(TemplateIn.ProjectDir | TemplateIn.SolutionDir)]
33+
public void Should_Return_Non_Null_If_Found_In_The_Project_Directory(TemplateIn templateIn)
34+
{
35+
SetupFileUtil(templateIn);
36+
37+
var results = customRunSettingsTemplateProvider.Provide(projectDirectory, solutionDirectory);
38+
Assert.AreEqual("ProjectRunSettings", results.Template);
39+
Assert.AreEqual(templateInProjectDirectory, results.Path);
40+
}
41+
42+
[Test]
43+
public void Should_Return_Non_Null_If_Found_In_The_Solution_Directory()
44+
{
45+
SetupFileUtil(TemplateIn.SolutionDir);
46+
47+
var results = customRunSettingsTemplateProvider.Provide(projectDirectory, solutionDirectory);
48+
Assert.AreEqual("SolutionRunSettings", results.Template);
49+
Assert.AreEqual(templateInSolutionDirectory, results.Path);
50+
}
51+
52+
[Test]
53+
public void Should_Return_Null_If_Not_Found()
54+
{
55+
SetupFileUtil(TemplateIn.None);
56+
57+
var results = customRunSettingsTemplateProvider.Provide(projectDirectory, solutionDirectory);
58+
Assert.Null(results);
59+
}
60+
61+
[Test]
62+
public void Should_Not_Throw_For_Null_Directory()
63+
{
64+
SetupFileUtil(TemplateIn.ProjectDir);
65+
66+
var results = customRunSettingsTemplateProvider.Provide(null, null);
67+
Assert.Null(results);
68+
}
69+
70+
private void SetupFileUtil(TemplateIn templateIn)
71+
{
72+
var mockFileUtil = autoMocker.GetMock<IFileUtil>();
73+
mockFileUtil.Setup(f => f.Exists(templateInProjectDirectory)).Returns(templateIn.HasFlag(TemplateIn.ProjectDir));
74+
mockFileUtil.Setup(f => f.Exists(templateInSolutionDirectory)).Returns(templateIn.HasFlag(TemplateIn.SolutionDir));
75+
mockFileUtil.Setup(f => f.ReadAllText(templateInProjectDirectory)).Returns("ProjectRunSettings");
76+
mockFileUtil.Setup(f => f.ReadAllText(templateInSolutionDirectory)).Returns("SolutionRunSettings");
77+
}
78+
}
79+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using Moq;
2+
using NUnit.Framework;
3+
using Microsoft.VisualStudio.TestWindow.Extensibility;
4+
using System;
5+
using System.Collections.Generic;
6+
using System.Linq;
7+
using AutoMoq;
8+
using System.Threading;
9+
using FineCodeCoverage.Core.Utilities;
10+
using FineCodeCoverage.Impl;
11+
using FineCodeCoverage.Engine;
12+
using System.Threading.Tasks;
13+
using FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage;
14+
using FineCodeCoverageTests.Test_helpers;
15+
16+
namespace FineCodeCoverageTests.MsCodeCoverage
17+
{
18+
internal class MsCodeCoverageRunSettingsService_Collect_Tests
19+
{
20+
// todo if logic stays the same - log when no cobertura / clean up
21+
22+
[Test]
23+
public async Task Should_FCCEngine_RunAndProcessReport_With_CoberturaResults()
24+
{
25+
var resultsUris = new List<Uri>()
26+
{
27+
new Uri(@"C:\SomePath\result1.cobertura.xml", UriKind.Absolute),
28+
new Uri(@"C:\SomePath\result2.cobertura.xml", UriKind.Absolute),
29+
new Uri(@"C:\SomePath\result3.xml", UriKind.Absolute),
30+
};
31+
32+
var expectedCoberturaFiles = new string[] { @"C:\SomePath\result1.cobertura.xml", @"C:\SomePath\result2.cobertura.xml" };
33+
await RunAndProcessReportAsync(resultsUris, expectedCoberturaFiles);
34+
}
35+
36+
[Test]
37+
public async Task Should_Not_Throw_If_No_Results()
38+
{
39+
await RunAndProcessReportAsync(null, Array.Empty<string>());
40+
}
41+
42+
private async Task RunAndProcessReportAsync(IEnumerable<Uri> resultsUris,string[] expectedCoberturaFiles)
43+
{
44+
var autoMocker = new AutoMoqer();
45+
var mockToolFolder = autoMocker.GetMock<IToolFolder>();
46+
mockToolFolder.Setup(tf => tf.EnsureUnzipped(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ZipDetails>(), It.IsAny<CancellationToken>())).Returns("ZipDestination");
47+
48+
var msCodeCoverageRunSettingsService = autoMocker.Create<MsCodeCoverageRunSettingsService>();
49+
msCodeCoverageRunSettingsService.threadHelper = new TestThreadHelper();
50+
51+
var mockFccEngine = new Mock<IFCCEngine>();
52+
msCodeCoverageRunSettingsService.Initialize("", mockFccEngine.Object, CancellationToken.None);
53+
54+
var mockOperation = new Mock<IOperation>();
55+
mockOperation.Setup(operation => operation.GetRunSettingsDataCollectorResultUri(new Uri(RunSettingsHelper.MsDataCollectorUri))).Returns(resultsUris);
56+
57+
// in another test List<ICoverageProject> coverageProjects = await testOperation.GetCoverageProjectsAsync();
58+
await msCodeCoverageRunSettingsService.CollectAsync(mockOperation.Object, new Mock<ITestOperation>().Object);
59+
mockFccEngine.Verify(engine => engine.RunAndProcessReport(
60+
It.Is<string[]>(coberturaFiles => !expectedCoberturaFiles.Except(coberturaFiles).Any() && !coberturaFiles.Except(expectedCoberturaFiles).Any()), It.IsAny<Action>()
61+
)
62+
);
63+
}
64+
}
65+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
using FineCodeCoverage.Engine.MsTestPlatform;
2+
using Moq;
3+
using NUnit.Framework;
4+
using System.Xml;
5+
using Microsoft.VisualStudio.TestWindow.Extensibility;
6+
using System.IO;
7+
using System.Globalization;
8+
using System.Xml.XPath;
9+
using System;
10+
using System.Collections.Generic;
11+
using FineCodeCoverage.Options;
12+
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
13+
using AutoMoq;
14+
using System.Threading;
15+
using FineCodeCoverage.Core.Utilities;
16+
using FineCodeCoverage.Engine.Model;
17+
using FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage;
18+
19+
namespace FineCodeCoverageTests.MsCodeCoverage
20+
{
21+
internal class MsCodeCoverageRunSettingsService_IRunSettingsService_Tests
22+
{
23+
private AutoMoqer autoMocker;
24+
private MsCodeCoverageRunSettingsService msCodeCoverageRunSettingsService;
25+
[SetUp]
26+
public void CreateSut()
27+
{
28+
autoMocker = new AutoMoqer();
29+
msCodeCoverageRunSettingsService = autoMocker.Create<MsCodeCoverageRunSettingsService>();
30+
}
31+
32+
[TestCase(RunSettingConfigurationInfoState.Discovery)]
33+
[TestCase(RunSettingConfigurationInfoState.None)]
34+
public void Should_Not_Process_When_Not_Test_Execution(RunSettingConfigurationInfoState state)
35+
{
36+
var mockRunSettingsConfigurationInfo = new Mock<IRunSettingsConfigurationInfo>();
37+
mockRunSettingsConfigurationInfo.Setup(ci => ci.RequestState).Returns(state);
38+
Assert.IsNull(msCodeCoverageRunSettingsService.AddRunSettings(null, mockRunSettingsConfigurationInfo.Object, null));
39+
}
40+
41+
[Test]
42+
public void Should_Not_Process_When_Runsettings_Created_From_Template()
43+
{
44+
var xPathNavigable = new Mock<IXPathNavigable>().Object;
45+
autoMocker.GetMock<IBuiltInRunSettingsTemplate>().Setup(brst => brst.FCCGenerated(xPathNavigable)).Returns(true);
46+
var mockRunSettingsConfigurationInfo = new Mock<IRunSettingsConfigurationInfo>();
47+
mockRunSettingsConfigurationInfo.Setup(ci => ci.RequestState).Returns(RunSettingConfigurationInfoState.Execution);
48+
Assert.IsNull(msCodeCoverageRunSettingsService.AddRunSettings(xPathNavigable, mockRunSettingsConfigurationInfo.Object, null));
49+
}
50+
51+
[Test]
52+
public void Should_UserRunSettingsService_AddFCCRunSettings_When_Execute_And_UserRunSettings()
53+
{
54+
var inputRunSettingDocument = new Mock<IXPathNavigable>().Object;
55+
var mockBuiltInRunSettingsTemplate = autoMocker.GetMock<IBuiltInRunSettingsTemplate>();
56+
mockBuiltInRunSettingsTemplate.Setup(brst => brst.FCCGenerated(inputRunSettingDocument)).Returns(false);
57+
58+
var mockRunSettingsConfigurationInfo = new Mock<IRunSettingsConfigurationInfo>();
59+
mockRunSettingsConfigurationInfo.Setup(ci => ci.RequestState).Returns(RunSettingConfigurationInfoState.Execution);
60+
var testContainers = new List<ITestContainer>();
61+
mockRunSettingsConfigurationInfo.Setup(ci => ci.TestContainers).Returns(testContainers);
62+
63+
var ct = CancellationToken.None;
64+
autoMocker.GetMock<IToolFolder>().Setup(toolFolder => toolFolder.EnsureUnzipped(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ZipDetails>(), ct)).Returns("ZipDestination");
65+
var msCodeCoveragePath = Path.Combine("ZipDestination", "build", "netstandard1.0");
66+
msCodeCoverageRunSettingsService.Initialize(null, null, ct);
67+
68+
// collecting
69+
var mockCoverageProject = new Mock<ICoverageProject>();
70+
mockCoverageProject.Setup(cp => cp.TestDllFile).Returns("Test.dll");
71+
var userRunSettingsProjectDetails = msCodeCoverageRunSettingsService.SetUserRunSettingsProjectDetails(new List<ICoverageProject>
72+
{
73+
mockCoverageProject.Object
74+
});
75+
76+
var runSettingsTemplateReplacements = new Mock<IRunSettingsTemplateReplacements>().Object;
77+
var mockRunSettingsTemplateReplacementsFactory = autoMocker.GetMock<IRunSettingsTemplateReplacementsFactory>();
78+
mockRunSettingsTemplateReplacementsFactory.Setup(f => f.Create(testContainers, userRunSettingsProjectDetails, msCodeCoveragePath)).Returns(runSettingsTemplateReplacements);
79+
80+
var mockUserRunSettingsService = autoMocker.GetMock<IUserRunSettingsService>();
81+
var fccRunSettingDocument = new Mock<IXPathNavigable>().Object;
82+
mockUserRunSettingsService.Setup(userRunSettingsService => userRunSettingsService.AddFCCRunSettings(mockBuiltInRunSettingsTemplate.Object, runSettingsTemplateReplacements, inputRunSettingDocument)).Returns(fccRunSettingDocument);
83+
84+
Assert.AreSame(fccRunSettingDocument,msCodeCoverageRunSettingsService.AddRunSettings(inputRunSettingDocument, mockRunSettingsConfigurationInfo.Object, null));
85+
}
86+
}
87+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace FineCodeCoverageTests.MsCodeCoverage
2+
{
3+
internal class MsCodeCoverageRunSettingsService_Initialize_Tests
4+
{
5+
// todo
6+
}
7+
}

0 commit comments

Comments
 (0)