|
19 | 19 | using BenchmarkDotNet.Jobs;
|
20 | 20 | using BenchmarkDotNet.Loggers;
|
21 | 21 | using BenchmarkDotNet.Mathematics;
|
22 |
| -using BenchmarkDotNet.Portability; |
23 | 22 | using BenchmarkDotNet.Reports;
|
24 | 23 | using BenchmarkDotNet.Toolchains;
|
25 | 24 | using BenchmarkDotNet.Toolchains.Parameters;
|
@@ -74,9 +73,6 @@ internal static Summary[] Run(BenchmarkRunInfo[] benchmarkRunInfos)
|
74 | 73 | if (validationErrors.Any(validationError => validationError.IsCritical))
|
75 | 74 | return new[] { Summary.ValidationFailed(title, resultsFolderPath, logFilePath, validationErrors.ToImmutableArray()) };
|
76 | 75 |
|
77 |
| - if (!supportedBenchmarks.Any(benchmarks => benchmarks.BenchmarksCases.Any())) |
78 |
| - return new[] { Summary.ValidationFailed(title, resultsFolderPath, logFilePath) }; |
79 |
| - |
80 | 76 | eventProcessor.OnEndValidationStage();
|
81 | 77 |
|
82 | 78 | int totalBenchmarkCount = supportedBenchmarks.Sum(benchmarkInfo => benchmarkInfo.BenchmarksCases.Length);
|
@@ -579,20 +575,47 @@ private static void LogTotalTime(ILogger logger, TimeSpan time, int executedBenc
|
579 | 575 | private static (BenchmarkRunInfo[], List<ValidationError>) GetSupportedBenchmarks(BenchmarkRunInfo[] benchmarkRunInfos, IResolver resolver)
|
580 | 576 | {
|
581 | 577 | List<ValidationError> validationErrors = new ();
|
| 578 | + List<BenchmarkRunInfo> runInfos = new (benchmarkRunInfos.Length); |
| 579 | + |
| 580 | + if (benchmarkRunInfos.Length == 0) |
| 581 | + { |
| 582 | + validationErrors.Add(new ValidationError(true, $"No benchmarks were found.")); |
| 583 | + return (Array.Empty<BenchmarkRunInfo>(), validationErrors); |
| 584 | + } |
| 585 | + |
| 586 | + foreach (var benchmarkRunInfo in benchmarkRunInfos) |
| 587 | + { |
| 588 | + if (benchmarkRunInfo.BenchmarksCases.Length == 0) |
| 589 | + { |
| 590 | + validationErrors.Add(new ValidationError(true, $"No [Benchmark] attribute found on '{benchmarkRunInfo.Type.Name}' benchmark case.")); |
| 591 | + continue; |
| 592 | + } |
582 | 593 |
|
583 |
| - var runInfos = benchmarkRunInfos.Select(info => new BenchmarkRunInfo( |
584 |
| - info.BenchmarksCases.Where(benchmark => |
| 594 | + var validBenchmarks = benchmarkRunInfo.BenchmarksCases |
| 595 | + .Where(benchmark => |
585 | 596 | {
|
586 |
| - var errors = benchmark.GetToolchain().Validate(benchmark, resolver).ToArray(); |
| 597 | + |
| 598 | + var errors = benchmark.GetToolchain() |
| 599 | + .Validate(benchmark, resolver) |
| 600 | + .ToArray(); |
| 601 | + |
587 | 602 | validationErrors.AddRange(errors);
|
588 |
| - return !errors.Any(); |
589 |
| - }).ToArray(), |
590 |
| - info.Type, |
591 |
| - info.Config)) |
592 |
| - .Where(infos => infos.BenchmarksCases.Any()) |
593 |
| - .ToArray(); |
594 |
| - |
595 |
| - return (runInfos, validationErrors); |
| 603 | + |
| 604 | + return errors.Length == 0; |
| 605 | + }) |
| 606 | + .ToArray(); |
| 607 | + |
| 608 | + runInfos.Add( |
| 609 | + new BenchmarkRunInfo( |
| 610 | + validBenchmarks, |
| 611 | + benchmarkRunInfo.Type, |
| 612 | + benchmarkRunInfo.Config |
| 613 | + |
| 614 | + )); |
| 615 | + |
| 616 | + |
| 617 | + } |
| 618 | + return (runInfos.ToArray(), validationErrors); |
596 | 619 | }
|
597 | 620 |
|
598 | 621 | private static string GetRootArtifactsFolderPath(BenchmarkRunInfo[] benchmarkRunInfos)
|
@@ -665,6 +688,9 @@ void AddLogger(ILogger logger)
|
665 | 688 | foreach (var logger in benchmarkRunInfo.Config.GetLoggers())
|
666 | 689 | AddLogger(logger);
|
667 | 690 |
|
| 691 | + if (benchmarkRunInfos.Length == 0) |
| 692 | + AddLogger(new ConsoleLogger()); |
| 693 | + |
668 | 694 | AddLogger(streamLogger);
|
669 | 695 |
|
670 | 696 | return new CompositeLogger(loggers.Values.ToImmutableHashSet());
|
|
0 commit comments