mirror of https://github.com/google/benchmark.git
Change RunSpecifiedBenchmarks to return the number of benchmarks run. Fixes #145
This commit is contained in:
parent
9fcdd6fc25
commit
e0de8171c6
|
@ -160,10 +160,14 @@ class BenchmarkReporter;
|
|||
|
||||
void Initialize(int* argc, char** argv);
|
||||
|
||||
// Otherwise, run all benchmarks specified by the --benchmark_filter flag,
|
||||
// and exit after running the benchmarks.
|
||||
void RunSpecifiedBenchmarks();
|
||||
void RunSpecifiedBenchmarks(BenchmarkReporter* reporter);
|
||||
// Run all benchmarks which match the specified --benchmark_filter flag.
|
||||
// The second overload reports the results using the specified 'reporter'.
|
||||
//
|
||||
// RETURNS: The number of benchmarks run, not including repetitions. If
|
||||
// '--benchmark_list_tests' is specified '0' is returned.
|
||||
size_t RunSpecifiedBenchmarks();
|
||||
size_t RunSpecifiedBenchmarks(BenchmarkReporter* reporter);
|
||||
|
||||
|
||||
// If this routine is called, peak memory allocation past this point in the
|
||||
// benchmark is reported at the end of the benchmark report line. (It is
|
||||
|
|
|
@ -863,14 +863,14 @@ void PrintBenchmarkList() {
|
|||
}
|
||||
}
|
||||
|
||||
void RunMatchingBenchmarks(const std::string& spec,
|
||||
size_t RunMatchingBenchmarks(const std::string& spec,
|
||||
BenchmarkReporter* reporter) {
|
||||
CHECK(reporter != nullptr);
|
||||
if (spec.empty()) return;
|
||||
CHECK(!spec.empty());
|
||||
|
||||
std::vector<Benchmark::Instance> benchmarks;
|
||||
auto families = BenchmarkFamilies::GetInstance();
|
||||
if (!families->FindBenchmarks(spec, &benchmarks)) return;
|
||||
if (!families->FindBenchmarks(spec, &benchmarks)) return 0;
|
||||
|
||||
// Determine the width of the name field using a minimum width of 10.
|
||||
size_t name_field_width = 10;
|
||||
|
@ -894,6 +894,7 @@ void RunMatchingBenchmarks(const std::string& spec,
|
|||
RunBenchmark(benchmark, reporter);
|
||||
}
|
||||
}
|
||||
return benchmarks.size();
|
||||
}
|
||||
|
||||
std::unique_ptr<BenchmarkReporter> GetDefaultReporter() {
|
||||
|
@ -913,14 +914,14 @@ std::unique_ptr<BenchmarkReporter> GetDefaultReporter() {
|
|||
} // end namespace
|
||||
} // end namespace internal
|
||||
|
||||
void RunSpecifiedBenchmarks() {
|
||||
RunSpecifiedBenchmarks(nullptr);
|
||||
size_t RunSpecifiedBenchmarks() {
|
||||
return RunSpecifiedBenchmarks(nullptr);
|
||||
}
|
||||
|
||||
void RunSpecifiedBenchmarks(BenchmarkReporter* reporter) {
|
||||
size_t RunSpecifiedBenchmarks(BenchmarkReporter* reporter) {
|
||||
if (FLAGS_benchmark_list_tests) {
|
||||
internal::PrintBenchmarkList();
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
std::string spec = FLAGS_benchmark_filter;
|
||||
if (spec.empty() || spec == "all")
|
||||
|
@ -931,8 +932,9 @@ void RunSpecifiedBenchmarks(BenchmarkReporter* reporter) {
|
|||
default_reporter = internal::GetDefaultReporter();
|
||||
reporter = default_reporter.get();
|
||||
}
|
||||
internal::RunMatchingBenchmarks(spec, reporter);
|
||||
size_t num_run = internal::RunMatchingBenchmarks(spec, reporter);
|
||||
reporter->Finalize();
|
||||
return num_run;
|
||||
}
|
||||
|
||||
namespace internal {
|
||||
|
|
|
@ -72,7 +72,7 @@ int main(int argc, char* argv[]) {
|
|||
benchmark::Initialize(&argc, argv);
|
||||
|
||||
TestReporter test_reporter;
|
||||
benchmark::RunSpecifiedBenchmarks(&test_reporter);
|
||||
const size_t returned_count = benchmark::RunSpecifiedBenchmarks(&test_reporter);
|
||||
|
||||
if (argc == 2) {
|
||||
// Make sure we ran all of the tests
|
||||
|
@ -81,9 +81,9 @@ int main(int argc, char* argv[]) {
|
|||
ss >> expected;
|
||||
|
||||
const size_t count = test_reporter.GetCount();
|
||||
if (count != expected) {
|
||||
std::cerr << "ERROR: Expected " << expected << " tests to be ran but only "
|
||||
<< count << " completed" << std::endl;
|
||||
if (count != expected || returned_count != expected) {
|
||||
std::cerr << "ERROR: Expected " << expected << " tests to be run but returned_count = "
|
||||
<< returned_count << " and reporter_count = " << count << std::endl;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue