Skip to content

Commit d971820

Browse files
committed
refactor
1 parent ac5ce6b commit d971820

File tree

3 files changed

+69
-34
lines changed

3 files changed

+69
-34
lines changed

FineCodeCoverageTests/MsCodeCoverage/MsCodeCoverageRunSettingsService_Collect_Tests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ public async Task Should_Clean_Up_RunSettings_Coverage_Projects()
2525
{
2626
var autoMocker = new AutoMoqer();
2727
var msCodeCoverageRunSettingsService = autoMocker.Create<MsCodeCoverageRunSettingsService>();
28+
29+
30+
var mockUserRunSettingsService = autoMocker.GetMock<IUserRunSettingsService>();
31+
mockUserRunSettingsService.Setup(
32+
userRunSettingsService =>
33+
userRunSettingsService.Analyse(It.IsAny<IEnumerable<ICoverageProject>>(), It.IsAny<bool>(), It.IsAny<string>())
34+
).Returns(new UserRunSettingsAnalysisResult());
35+
2836
var mockAppOptionsProvider = autoMocker.GetMock<IAppOptionsProvider>();
2937
mockAppOptionsProvider.Setup(appOptionsProvider => appOptionsProvider.Get()).Returns(new Mock<IAppOptions>().Object);
3038

FineCodeCoverageTests/MsCodeCoverage/MsCodeCoverageRunSettingsService_IsCollecting_Tests.cs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,29 @@ public void Should_StopCoverage_On_FCCEngine()
3838
}
3939
}
4040

41+
internal class UserRunSettingsAnalysisResult : IUserRunSettingsAnalysisResult
42+
{
43+
public UserRunSettingsAnalysisResult(bool suitable, bool specifiedMsCodeCoverage)
44+
{
45+
Suitable = suitable;
46+
SpecifiedMsCodeCoverage = specifiedMsCodeCoverage;
47+
}
48+
public UserRunSettingsAnalysisResult() { }
49+
50+
public bool Suitable { get; set; }
51+
52+
public bool SpecifiedMsCodeCoverage { get; set; }
53+
54+
public List<ICoverageProject> ProjectsWithFCCMsTestAdapter { get; set; } = new List<ICoverageProject>();
55+
}
56+
4157
internal class MsCodeCoverageRunSettingsService_IsCollecting_Tests
4258
{
4359
private AutoMoqer autoMocker;
4460
private MsCodeCoverageRunSettingsService msCodeCoverageRunSettingsService;
4561
private const string solutionDirectory = "SolutionDirectory";
4662

47-
private class UserRunSettingsAnalysisResult : IUserRunSettingsAnalysisResult
48-
{
49-
public UserRunSettingsAnalysisResult(bool suitable, bool specifiedMsCodeCoverage)
50-
{
51-
Suitable = suitable;
52-
SpecifiedMsCodeCoverage = specifiedMsCodeCoverage;
53-
}
54-
public UserRunSettingsAnalysisResult() { }
55-
56-
public bool Suitable { get; set; }
57-
58-
public bool SpecifiedMsCodeCoverage { get; set; }
59-
60-
public List<ICoverageProject> ProjectsWithFCCMsTestAdapter { get; set; } = new List<ICoverageProject>();
61-
}
63+
6264

6365
private class ExceptionReason : IExceptionReason
6466
{

SharedProject/Core/MsTestPlatform/CodeCoverage/MsCodeCoverageRunSettingsService.cs

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,6 @@ private async Task TrySetUpForCollectionAsync(string solutionDirectory)
131131
IUserRunSettingsAnalysisResult analysisResult = await TryAnalyseUserRunSettingsAsync();
132132
if (analysisResult.Ok())
133133
{
134-
135134
await SetUpForCollectionAsync(
136135
analysisResult.ProjectsWithFCCMsTestAdapter,
137136
analysisResult.SpecifiedMsCodeCoverage,
@@ -149,7 +148,7 @@ string solutionDirectory
149148
await PrepareCoverageProjectsAsync();
150149
SetUserRunSettingsProjectDetails();
151150

152-
await GenerateTemplatedRunSettingsAsync(
151+
await GenerateTemplatedRunSettingsIfRequiredAsync(
153152
specifiedMsCodeCoverageInRunSettings,
154153
coverageProjectsForShim,
155154
solutionDirectory
@@ -178,42 +177,68 @@ private async Task<IUserRunSettingsAnalysisResult> TryAnalyseUserRunSettingsAsyn
178177
IUserRunSettingsAnalysisResult analysisResult = null;
179178
try
180179
{
181-
analysisResult = userRunSettingsService.Analyse(
182-
coverageProjectsByType.RunSettings,
183-
useMsCodeCoverage,
184-
fccMsTestAdapterPath
185-
);
180+
analysisResult = await AnalyseUserRunSettingsAsync();
186181
}
187182
catch (Exception exc)
188183
{
189-
collectionStatus = MsCodeCoverageCollectionStatus.Error;
190-
await CombinedLogExceptionAsync(exc, "Exception analysing runsettings files");
184+
await ExceptionAnalysingUserRunSettingsAsync(exc);
191185
}
192186

193-
if (analysisResult.Ok())
187+
return analysisResult;
188+
}
189+
190+
private Task ExceptionAnalysingUserRunSettingsAsync(Exception exc)
191+
{
192+
collectionStatus = MsCodeCoverageCollectionStatus.Error;
193+
return CombinedLogExceptionAsync(exc, "Exception analysing runsettings files");
194+
}
195+
196+
private async Task<IUserRunSettingsAnalysisResult> AnalyseUserRunSettingsAsync()
197+
{
198+
var analysisResult = userRunSettingsService.Analyse(
199+
coverageProjectsByType.RunSettings,
200+
useMsCodeCoverage,
201+
fccMsTestAdapterPath
202+
);
203+
204+
if (analysisResult.Suitable)
194205
{
195206
await CollectingIfUserRunSettingsOnlyAsync();
196207
}
208+
197209
return analysisResult;
198210
}
199211

200-
private async Task GenerateTemplatedRunSettingsAsync(
212+
private async Task GenerateTemplatedRunSettingsIfRequiredAsync(
201213
bool runSettingsSpecifiedMsCodeCoverage,
202214
List<ICoverageProject> coverageProjectsForShim,
203215
string solutionDirectory
204216
)
205217
{
206-
if (coverageProjectsByType.HasTemplated() && (useMsCodeCoverage || runSettingsSpecifiedMsCodeCoverage))
218+
if (ShouldGenerateTemplatedRunSettings(runSettingsSpecifiedMsCodeCoverage))
207219
{
208-
var generationResult = await templatedRunSettingsService.GenerateAsync(
209-
coverageProjectsByType.Templated,
210-
solutionDirectory,
211-
fccMsTestAdapterPath
212-
);
213-
214-
await ProcessTemplateGenerationResultAsync(generationResult, coverageProjectsForShim);
220+
await GenerateTemplatedRunSettingsAsync(coverageProjectsForShim, solutionDirectory);
215221
}
216222
}
223+
private async Task GenerateTemplatedRunSettingsAsync(
224+
List<ICoverageProject> coverageProjectsForShim,
225+
string solutionDirectory
226+
)
227+
{
228+
var generationResult = await templatedRunSettingsService.GenerateAsync(
229+
coverageProjectsByType.Templated,
230+
solutionDirectory,
231+
fccMsTestAdapterPath
232+
);
233+
234+
await ProcessTemplateGenerationResultAsync(generationResult, coverageProjectsForShim);
235+
}
236+
237+
238+
private bool ShouldGenerateTemplatedRunSettings(bool runSettingsSpecifiedMsCodeCoverage)
239+
{
240+
return coverageProjectsByType.HasTemplated() && (useMsCodeCoverage || runSettingsSpecifiedMsCodeCoverage);
241+
}
217242

218243
private async Task ProcessTemplateGenerationResultAsync(IProjectRunSettingsFromTemplateResult generationResult, List<ICoverageProject> coverageProjectsForShim)
219244
{

0 commit comments

Comments
 (0)