Skip to content

Commit e2d30d3

Browse files
authored
chore: ensure EventProcessor::OnEndValidationStage is called when critical validation contained (#2816)
1 parent daa2339 commit e2d30d3

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ internal static Summary[] Run(BenchmarkRunInfo[] benchmarkRunInfos)
7171

7272
PrintValidationErrors(compositeLogger, validationErrors);
7373

74+
eventProcessor.OnEndValidationStage(); // Ensure that OnEndValidationStage() is called when a critical validation error exists.
75+
7476
if (validationErrors.Any(validationError => validationError.IsCritical))
7577
return new[] { Summary.ValidationFailed(title, resultsFolderPath, logFilePath, validationErrors.ToImmutableArray()) };
7678

77-
eventProcessor.OnEndValidationStage();
78-
7979
int totalBenchmarkCount = supportedBenchmarks.Sum(benchmarkInfo => benchmarkInfo.BenchmarksCases.Length);
8080
int benchmarksToRunCount = totalBenchmarkCount - (idToResume + 1); // ids are indexed from 0
8181
compositeLogger.WriteLineHeader("// ***** BenchmarkRunner: Start *****");

tests/BenchmarkDotNet.IntegrationTests/EventProcessorTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ public class EventProcessorTests
2323
public void WhenUsingEventProcessorAndNoBenchmarks()
2424
{
2525
var events = RunBenchmarksAndRecordEvents(new[] { typeof(ClassEmpty) });
26-
Assert.Equal(2, events.Count);
26+
Assert.Equal(3, events.Count);
2727
Assert.Equal(nameof(EventProcessor.OnStartValidationStage), events[0].EventType);
2828
Assert.Equal(nameof(EventProcessor.OnValidationError), events[1].EventType);
29+
Assert.Equal(nameof(EventProcessor.OnEndValidationStage), events[2].EventType);
2930
}
3031

3132
[Fact]
@@ -135,12 +136,13 @@ public void WhenUsingEventProcessorWithUnsupportedBenchmark()
135136
var toolchain = new AllUnsupportedToolchain();
136137
var events = RunBenchmarksAndRecordEvents(new[] { typeof(ClassA) }, toolchain: toolchain);
137138

138-
Assert.Equal(3, events.Count);
139+
Assert.Equal(4, events.Count);
139140
Assert.Equal(nameof(EventProcessor.OnStartValidationStage), events[0].EventType);
140141
Assert.Equal(nameof(EventProcessor.OnValidationError), events[1].EventType);
141142
Assert.Equal(typeof(ClassA).GetMethod(nameof(ClassA.Method1)), (events[1].Args[0] as ValidationError).BenchmarkCase.Descriptor.WorkloadMethod);
142143
Assert.Equal(nameof(EventProcessor.OnValidationError), events[2].EventType);
143144
Assert.Equal(typeof(ClassA).GetMethod(nameof(ClassA.Method2)), (events[2].Args[0] as ValidationError).BenchmarkCase.Descriptor.WorkloadMethod);
145+
Assert.Equal(nameof(EventProcessor.OnEndValidationStage), events[3].EventType);
144146
}
145147

146148
[Fact]

0 commit comments

Comments
 (0)