Skip to content

Commit 8a34e1d

Browse files
committed
RemoveGeneratedProjectSettingsAsync at appropriate times. tests to follow
1 parent 76fbc90 commit 8a34e1d

File tree

4 files changed

+31
-16
lines changed

4 files changed

+31
-16
lines changed

FineCodeCoverageTests/MsCodeCoverage/MsCodeCoverageRunSettingsService_Collect_Tests.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage;
1414
using FineCodeCoverageTests.Test_helpers;
1515
using FineCodeCoverage.Engine.ReportGenerator;
16+
using FineCodeCoverage.Engine.Model;
1617

1718
namespace FineCodeCoverageTests.MsCodeCoverage
1819
{
@@ -70,8 +71,10 @@ private async Task RunAndProcessReportAsync(IEnumerable<Uri> resultsUris,string[
7071

7172
var mockOperation = new Mock<IOperation>();
7273
mockOperation.Setup(operation => operation.GetRunSettingsDataCollectorResultUri(new Uri(RunSettingsHelper.MsDataCollectorUri))).Returns(resultsUris);
73-
74-
await msCodeCoverageRunSettingsService.CollectAsync(mockOperation.Object, new Mock<ITestOperation>().Object);
74+
75+
var mockTestOperation = new Mock<ITestOperation>();
76+
mockTestOperation.Setup(testOperation => testOperation.GetCoverageProjectsAsync()).ReturnsAsync(new List<ICoverageProject>());
77+
await msCodeCoverageRunSettingsService.CollectAsync(mockOperation.Object, mockTestOperation.Object);
7578

7679
mockFccEngine.Verify(engine => engine.RunAndProcessReport(
7780
It.Is<string[]>(coberturaFiles => !expectedCoberturaFiles.Except(coberturaFiles).Any() && !coberturaFiles.Except(expectedCoberturaFiles).Any()), It.IsAny<Action>()

SharedProject/Core/MsTestPlatform/CodeCoverage/IMsCodeCoverageRunSettingsService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ interface IMsCodeCoverageRunSettingsService
1111
Task<MsCodeCoverageCollectionStatus> IsCollectingAsync(ITestOperation testOperation);
1212
Task CollectAsync(IOperation operation, ITestOperation testOperation);
1313
void StopCoverage();
14+
Task TestExecutionNotFinishedAsync();
1415
}
1516
}

SharedProject/Core/MsTestPlatform/CodeCoverage/MsCodeCoverageRunSettingsService.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public MsCodeCoverageRunSettingsService(
9191
IAppOptionsProvider appOptionsProvider,
9292
ICoverageToolOutputManager coverageOutputManager,
9393
IUserRunSettingsService userRunSettingsService,
94-
ITemplatedRunSettingsService projectRunSettingsFromTemplateService,
94+
ITemplatedRunSettingsService templatedRunSettingsService,
9595
IShimCopier shimCopier,
9696
ILogger logger,
9797
IReportGeneratorUtil reportGeneratorUtil
@@ -105,7 +105,7 @@ IReportGeneratorUtil reportGeneratorUtil
105105
this.logger = logger;
106106
this.reportGeneratorUtil = reportGeneratorUtil;
107107
this.userRunSettingsService = userRunSettingsService;
108-
this.templatedRunSettingsService = projectRunSettingsFromTemplateService;
108+
this.templatedRunSettingsService = templatedRunSettingsService;
109109
}
110110

111111
public void Initialize(string appDataFolder, IFCCEngine fccEngine, CancellationToken cancellationToken)
@@ -166,6 +166,7 @@ private async Task InitializeIsCollectingAsync(ITestOperation testOperation)
166166
useMsCodeCoverage = appOptionsProvider.Get().MsCodeCoverage;
167167
coverageProjectsByType = await CoverageProjectsByType.CreateAsync(testOperation);
168168
userRunSettingsProjectDetailsLookup = null;
169+
await templatedRunSettingsService.CleanUpAsync(coverageProjectsByType.RunSettings);
169170
}
170171

171172
private async Task<IUserRunSettingsAnalysisResult> TryAnalyseUserRunSettingsAsync()
@@ -279,6 +280,8 @@ private bool ShouldAddFCCRunSettings()
279280

280281
public async Task CollectAsync(IOperation operation, ITestOperation testOperation)
281282
{
283+
var coverageProjectsByType = await CoverageProjectsByType.CreateAsync(testOperation);
284+
await templatedRunSettingsService.CleanUpAsync(coverageProjectsByType.RunSettings);
282285
var resultsUris = operation.GetRunSettingsMsDataCollectorResultUri();
283286
var coberturaFiles = new string[0];
284287
if (resultsUris != null)
@@ -291,14 +294,7 @@ public async Task CollectAsync(IOperation operation, ITestOperation testOperatio
291294
await CombinedLogAsync("No cobertura files for ms code coverage.");
292295
}
293296

294-
fccEngine.RunAndProcessReport(coberturaFiles,() =>
295-
{
296-
threadHelper.JoinableTaskFactory.Run(async () =>
297-
{
298-
List<ICoverageProject> coverageProjects = await testOperation.GetCoverageProjectsAsync();
299-
await templatedRunSettingsService.CleanUpAsync(coverageProjects);
300-
});
301-
});
297+
fccEngine.RunAndProcessReport(coberturaFiles);
302298
}
303299

304300
public void StopCoverage()
@@ -330,8 +326,14 @@ private Task CombinedLogExceptionAsync(Exception ex, string reason)
330326
reportGeneratorUtil.LogCoverageProcess(reason);
331327
});
332328
}
329+
333330
#endregion
334331

332+
public Task TestExecutionNotFinishedAsync()
333+
{
334+
return templatedRunSettingsService.CleanUpAsync(coverageProjectsByType.Templated);
335+
}
336+
335337
}
336338

337339
public static class IRunSettingsConfigurationInfoExtensions {

SharedProject/Impl/TestContainerDiscovery/TestContainerDiscoverer.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Task = System.Threading.Tasks.Task;
1313
using Microsoft.VisualStudio.Utilities;
1414
using FineCodeCoverage.Engine.MsTestPlatform.CodeCoverage;
15+
using System.Diagnostics;
1516

1617
namespace FineCodeCoverage.Impl
1718
{
@@ -180,12 +181,20 @@ private void StopCoverage()
180181
}
181182
}
182183

183-
private void CoverageCancelled(string logMessage)
184+
private Task CoverageCancelledAsync(string logMessage)
184185
{
185186
CombinedLog(logMessage);
186187
reportGeneratorUtil.EndOfCoverageRun(); // not necessarily true but get desired result
187188
fccEngine.StopCoverage();
188-
// not necessary for ms code coverage as only runs when TestExecutionFinished
189+
return NotifyMsCodeCoverageTestExecutionNotFinishedIfCollectingAsync();
190+
}
191+
192+
private async Task NotifyMsCodeCoverageTestExecutionNotFinishedIfCollectingAsync()
193+
{
194+
if (msCodeCoverageCollectionStatus == MsCodeCoverageCollectionStatus.Collecting)
195+
{
196+
await msCodeCoverageRunSettingsService.TestExecutionNotFinishedAsync();
197+
}
189198
}
190199

191200
private void OperationState_StateChanged(object sender, OperationStateChangedEventArgs e)
@@ -197,7 +206,7 @@ private void OperationState_StateChanged(object sender, OperationStateChangedEve
197206
if (e.State == TestOperationStates.TestExecutionCanceling)
198207
{
199208
cancelling = true;
200-
CoverageCancelled("Test execution cancelling - running coverage will be cancelled.");
209+
await CoverageCancelledAsync("Test execution cancelling - running coverage will be cancelled.");
201210
}
202211

203212

@@ -214,7 +223,7 @@ private void OperationState_StateChanged(object sender, OperationStateChangedEve
214223

215224
if (e.State == TestOperationStates.TestExecutionCancelAndFinished && !cancelling)
216225
{
217-
CoverageCancelled("There has been an issue running tests. See the Tests output window pane.");
226+
await CoverageCancelledAsync("There has been an issue running tests. See the Tests output window pane.");
218227
}
219228

220229
}

0 commit comments

Comments
 (0)