Skip to content

Commit 0055dd1

Browse files
committed
correction - cannot use stored coverage projects for removal
1 parent c4639b6 commit 0055dd1

File tree

5 files changed

+49
-33
lines changed

5 files changed

+49
-33
lines changed

FineCodeCoverageTests/MsCodeCoverage/MsCodeCoverageRunSettingsService_Collect_Tests.cs

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace FineCodeCoverageTests.MsCodeCoverage
2121
internal class MsCodeCoverageRunSettingsService_Test_Execution_Not_Finished_Tests
2222
{
2323
[Test]
24-
public async Task Should_Clean_Up_Templated_Coverage_Projects()
24+
public async Task Should_Clean_Up_RunSettings_Coverage_Projects()
2525
{
2626
var autoMocker = new AutoMoqer();
2727
var msCodeCoverageRunSettingsService = autoMocker.Create<MsCodeCoverageRunSettingsService>();
@@ -30,19 +30,21 @@ public async Task Should_Clean_Up_Templated_Coverage_Projects()
3030

3131
// is collecting
3232
var mockTestOperation = new Mock<ITestOperation>();
33-
var templateCoverageProject = CreateCoverageProject(null);
33+
var runSettingsCoverageProject = CreateCoverageProject(".runsettings");
3434
var coverageProjects = new List<ICoverageProject>
3535
{
36-
templateCoverageProject,
37-
CreateCoverageProject(".runsettings")
36+
runSettingsCoverageProject,
37+
CreateCoverageProject(null)
38+
3839
};
3940
mockTestOperation.Setup(testOperation => testOperation.GetCoverageProjectsAsync()).ReturnsAsync(coverageProjects);
41+
4042
await msCodeCoverageRunSettingsService.IsCollectingAsync(mockTestOperation.Object);
4143

42-
await msCodeCoverageRunSettingsService.TestExecutionNotFinishedAsync();
44+
await msCodeCoverageRunSettingsService.TestExecutionNotFinishedAsync(mockTestOperation.Object);
4345

4446
autoMocker.Verify<ITemplatedRunSettingsService>(
45-
templatedRunSettingsService => templatedRunSettingsService.CleanUpAsync(new List<ICoverageProject> { templateCoverageProject })
47+
templatedRunSettingsService => templatedRunSettingsService.CleanUpAsync(new List<ICoverageProject> { runSettingsCoverageProject })
4648
);
4749
}
4850

@@ -57,7 +59,7 @@ private ICoverageProject CreateCoverageProject(string runSettingsFile)
5759
internal class MsCodeCoverageRunSettingsService_Collect_Tests
5860
{
5961
private AutoMoqer autoMocker;
60-
private ICoverageProject templateCoverageProject;
62+
private ICoverageProject runSettingsCoverageProject;
6163

6264
[Test]
6365
public async Task Should_FCCEngine_RunAndProcessReport_With_CoberturaResults()
@@ -87,15 +89,14 @@ public async Task Should_Combined_Log_When_No_Cobertura_Files()
8789
autoMocker.Verify<IReportGeneratorUtil>(
8890
reportGenerator => reportGenerator.LogCoverageProcess("No cobertura files for ms code coverage.")
8991
);
90-
9192
}
9293

9394
[Test]
94-
public async Task Should_Clean_Up_Template_Coverage_Projects_From_IsCollecting()
95+
public async Task Should_Clean_Up_RunSettings_Coverage_Projects_From_IsCollecting()
9596
{
9697
await RunAndProcessReportAsync(null, Array.Empty<string>());
9798
autoMocker.Verify<ITemplatedRunSettingsService>(
98-
templatedRunSettingsService => templatedRunSettingsService.CleanUpAsync(new List<ICoverageProject> { templateCoverageProject })
99+
templatedRunSettingsService => templatedRunSettingsService.CleanUpAsync(new List<ICoverageProject> { runSettingsCoverageProject })
99100
);
100101
}
101102

@@ -122,18 +123,18 @@ private async Task RunAndProcessReportAsync(IEnumerable<Uri> resultsUris,string[
122123

123124
// IsCollecting
124125
var mockTestOperation = new Mock<ITestOperation>();
125-
templateCoverageProject = CreateCoverageProject(null);
126+
runSettingsCoverageProject = CreateCoverageProject(".runsettings");
126127
var coverageProjects = new List<ICoverageProject>
127128
{
128-
templateCoverageProject,
129-
CreateCoverageProject(".runsettings")
129+
CreateCoverageProject(null),
130+
runSettingsCoverageProject
130131
};
131132
mockTestOperation.Setup(testOperation => testOperation.GetCoverageProjectsAsync()).ReturnsAsync(coverageProjects);
132133
var mockAppOptionsProvider = autoMocker.GetMock<IAppOptionsProvider>();
133134
mockAppOptionsProvider.Setup(appOptionsProvider => appOptionsProvider.Get()).Returns(new Mock<IAppOptions>().Object);
134135
await msCodeCoverageRunSettingsService.IsCollectingAsync(mockTestOperation.Object);
135136

136-
await msCodeCoverageRunSettingsService.CollectAsync(mockOperation.Object);
137+
await msCodeCoverageRunSettingsService.CollectAsync(mockOperation.Object, mockTestOperation.Object);
137138

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

FineCodeCoverageTests/TestContainerDiscovery_Tests.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,18 @@ public void Should_Stop_Ms_CodeCoverage_When_TestExecutionStarting_And_Ms_Code_C
145145
public void Should_Notify_MsCodeCoverage_When_Test_Execution_Not_Finished_IfCollectingAsync(MsCodeCoverageCollectionStatus status, bool cancelling)
146146
{
147147
var mockMsCodeCoverageRunSettingsService = SetMsCodeCoverageCollecting(status);
148-
RaiseOperationStateChanged(cancelling ? TestOperationStates.TestExecutionCanceling : TestOperationStates.TestExecutionCancelAndFinished);
148+
var operation = new Mock<IOperation>().Object;
149+
var mockTestOperationFactory = mocker.GetMock<ITestOperationFactory>();
150+
var testOperation = new Mock<ITestOperation>().Object;
151+
mockTestOperationFactory.Setup(testOperationFactory => testOperationFactory.Create(operation)).Returns(testOperation);
152+
153+
RaiseOperationStateChanged(
154+
cancelling ? TestOperationStates.TestExecutionCanceling : TestOperationStates.TestExecutionCancelAndFinished,
155+
operation
156+
);
149157
var times = status == MsCodeCoverageCollectionStatus.Collecting ? Times.Once() : Times.Never();
150158
mockMsCodeCoverageRunSettingsService.Verify(
151-
msCodeCoverageRunSettingsService => msCodeCoverageRunSettingsService.TestExecutionNotFinishedAsync(), times
159+
msCodeCoverageRunSettingsService => msCodeCoverageRunSettingsService.TestExecutionNotFinishedAsync(testOperation), times
152160
);
153161
}
154162

@@ -220,7 +228,7 @@ public void Should_Collect_Ms_Code_Coverage_When_TestExecutionFinished_And_Ms_Co
220228
RaiseTestExecutionFinished(operation);
221229
mocker.Verify<IMsCodeCoverageRunSettingsService>(
222230
msCodeCoverageRunSettingsService =>
223-
msCodeCoverageRunSettingsService.CollectAsync(operation)
231+
msCodeCoverageRunSettingsService.CollectAsync(operation,testOperation)
224232
);
225233
}
226234

SharedProject/Core/MsTestPlatform/CodeCoverage/IMsCodeCoverageRunSettingsService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ interface IMsCodeCoverageRunSettingsService
99
{
1010
void Initialize(string appDataFolder,IFCCEngine fccEngine, CancellationToken cancellationToken);
1111
Task<MsCodeCoverageCollectionStatus> IsCollectingAsync(ITestOperation testOperation);
12-
Task CollectAsync(IOperation operation);
12+
Task CollectAsync(IOperation operation, ITestOperation testOperation);
1313
void StopCoverage();
14-
Task TestExecutionNotFinishedAsync();
14+
Task TestExecutionNotFinishedAsync(ITestOperation testOperation);
1515
}
1616
}

SharedProject/Core/MsTestPlatform/CodeCoverage/MsCodeCoverageRunSettingsService.cs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,14 @@ private void ReportEndOfCoverageRunIfError()
160160
}
161161
}
162162

163-
private async Task InitializeIsCollectingAsync(ITestOperation testOperation)
163+
private Task InitializeIsCollectingAsync(ITestOperation testOperation)
164164
{
165165
collectionStatus = MsCodeCoverageCollectionStatus.NotCollecting;
166166
useMsCodeCoverage = appOptionsProvider.Get().MsCodeCoverage;
167-
coverageProjectsByType = await CoverageProjectsByType.CreateAsync(testOperation);
167+
//coverageProjectsByType = await CoverageProjectsByType.CreateAsync(testOperation);
168168
userRunSettingsProjectDetailsLookup = null;
169-
await templatedRunSettingsService.CleanUpAsync(coverageProjectsByType.RunSettings);
169+
//await templatedRunSettingsService.CleanUpAsync(coverageProjectsByType.RunSettings);
170+
return CleanUpAsync(testOperation);
170171
}
171172

172173
private async Task<IUserRunSettingsAnalysisResult> TryAnalyseUserRunSettingsAsync()
@@ -278,9 +279,9 @@ private bool ShouldAddFCCRunSettings()
278279

279280
#endregion
280281

281-
public async Task CollectAsync(IOperation operation)
282+
public async Task CollectAsync(IOperation operation, ITestOperation testOperation)
282283
{
283-
await templatedRunSettingsService.CleanUpAsync(coverageProjectsByType.Templated);
284+
await CleanUpAsync(testOperation);
284285
var resultsUris = operation.GetRunSettingsMsDataCollectorResultUri();
285286
var coberturaFiles = new string[0];
286287
if (resultsUris != null)
@@ -328,11 +329,16 @@ private Task CombinedLogExceptionAsync(Exception ex, string reason)
328329

329330
#endregion
330331

331-
public Task TestExecutionNotFinishedAsync()
332+
public Task TestExecutionNotFinishedAsync(ITestOperation testOperation)
332333
{
333-
return templatedRunSettingsService.CleanUpAsync(coverageProjectsByType.Templated);
334+
return CleanUpAsync(testOperation);
334335
}
335336

337+
private async Task CleanUpAsync(ITestOperation testOperation)
338+
{
339+
coverageProjectsByType = await CoverageProjectsByType.CreateAsync(testOperation);
340+
await templatedRunSettingsService.CleanUpAsync(coverageProjectsByType.RunSettings);
341+
}
336342
}
337343

338344
public static class IRunSettingsConfigurationInfoExtensions {

SharedProject/Impl/TestContainerDiscovery/TestContainerDiscoverer.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ private async Task TestExecutionFinishedAsync(IOperation operation)
137137

138138
if (msCodeCoverageCollectionStatus == MsCodeCoverageCollectionStatus.Collecting)
139139
{
140-
await msCodeCoverageRunSettingsService.CollectAsync(operation);
140+
await msCodeCoverageRunSettingsService.CollectAsync(operation, testOperation);
141141
}
142142
else
143143
{
@@ -181,19 +181,20 @@ private void StopCoverage()
181181
}
182182
}
183183

184-
private Task CoverageCancelledAsync(string logMessage)
184+
private Task CoverageCancelledAsync(string logMessage, IOperation operation)
185185
{
186186
CombinedLog(logMessage);
187187
reportGeneratorUtil.EndOfCoverageRun(); // not necessarily true but get desired result
188188
fccEngine.StopCoverage();
189-
return NotifyMsCodeCoverageTestExecutionNotFinishedIfCollectingAsync();
189+
return NotifyMsCodeCoverageTestExecutionNotFinishedIfCollectingAsync(operation);
190190
}
191191

192-
private async Task NotifyMsCodeCoverageTestExecutionNotFinishedIfCollectingAsync()
192+
private async Task NotifyMsCodeCoverageTestExecutionNotFinishedIfCollectingAsync(IOperation operation)
193193
{
194194
if (msCodeCoverageCollectionStatus == MsCodeCoverageCollectionStatus.Collecting)
195195
{
196-
await msCodeCoverageRunSettingsService.TestExecutionNotFinishedAsync();
196+
var testOperation = testOperationFactory.Create(operation);
197+
await msCodeCoverageRunSettingsService.TestExecutionNotFinishedAsync(testOperation);
197198
}
198199
}
199200

@@ -206,7 +207,7 @@ private void OperationState_StateChanged(object sender, OperationStateChangedEve
206207
if (e.State == TestOperationStates.TestExecutionCanceling)
207208
{
208209
cancelling = true;
209-
await CoverageCancelledAsync("Test execution cancelling - running coverage will be cancelled.");
210+
await CoverageCancelledAsync("Test execution cancelling - running coverage will be cancelled.",e.Operation);
210211
}
211212

212213

@@ -223,7 +224,7 @@ private void OperationState_StateChanged(object sender, OperationStateChangedEve
223224

224225
if (e.State == TestOperationStates.TestExecutionCancelAndFinished && !cancelling)
225226
{
226-
await CoverageCancelledAsync("There has been an issue running tests. See the Tests output window pane.");
227+
await CoverageCancelledAsync("There has been an issue running tests. See the Tests output window pane.",e.Operation);
227228
}
228229

229230
}

0 commit comments

Comments
 (0)