Allow running individual benchmarks

mirrors and reuses the option from 2f6a9d12f1db84322e0b69fd5ddc986f1f143606
This commit is contained in:
sfan5 2023-12-14 11:41:22 +01:00
parent 3c60d359ed
commit e5a6048eec
3 changed files with 12 additions and 7 deletions

@ -23,10 +23,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#define CATCH_CONFIG_RUNNER #define CATCH_CONFIG_RUNNER
#include "benchmark_setup.h" #include "benchmark_setup.h"
int run_benchmarks() bool run_benchmarks(const char *arg)
{ {
int argc = 1; const char *const argv[] = {
const char *argv[] = { "MinetestBenchmark", NULL }; "MinetestBenchmark", arg, nullptr
};
const int argc = arg ? 2 : 1;
int errCount = Catch::Session().run(argc, argv); int errCount = Catch::Session().run(argc, argv);
return errCount ? 1 : 0; return errCount == 0;
} }

@ -22,5 +22,5 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "config.h" #include "config.h"
#if BUILD_BENCHMARKS #if BUILD_BENCHMARKS
extern int run_benchmarks(); extern bool run_benchmarks(const char *arg = nullptr);
#endif #endif

@ -234,7 +234,10 @@ int main(int argc, char *argv[])
// Run benchmarks // Run benchmarks
if (cmd_args.getFlag("run-benchmarks")) { if (cmd_args.getFlag("run-benchmarks")) {
#if BUILD_BENCHMARKS #if BUILD_BENCHMARKS
return run_benchmarks(); if (cmd_args.exists("test-module"))
return run_benchmarks(cmd_args.get("test-module").c_str()) ? 0 : 1;
else
return run_benchmarks() ? 0 : 1;
#else #else
errorstream << "Benchmark support is not enabled in this binary. " errorstream << "Benchmark support is not enabled in this binary. "
<< "If you want to enable it, compile project with BUILD_BENCHMARKS=1 flag." << "If you want to enable it, compile project with BUILD_BENCHMARKS=1 flag."
@ -340,7 +343,7 @@ static void set_allowed_options(OptionList *allowed_options)
allowed_options->insert(std::make_pair("run-benchmarks", ValueSpec(VALUETYPE_FLAG, allowed_options->insert(std::make_pair("run-benchmarks", ValueSpec(VALUETYPE_FLAG,
_("Run the benchmarks and exit")))); _("Run the benchmarks and exit"))));
allowed_options->insert(std::make_pair("test-module", ValueSpec(VALUETYPE_STRING, allowed_options->insert(std::make_pair("test-module", ValueSpec(VALUETYPE_STRING,
_("Only run the specified test module")))); _("Only run the specified test module or benchmark"))));
allowed_options->insert(std::make_pair("map-dir", ValueSpec(VALUETYPE_STRING, allowed_options->insert(std::make_pair("map-dir", ValueSpec(VALUETYPE_STRING,
_("Same as --world (deprecated)")))); _("Same as --world (deprecated)"))));
allowed_options->insert(std::make_pair("world", ValueSpec(VALUETYPE_STRING, allowed_options->insert(std::make_pair("world", ValueSpec(VALUETYPE_STRING,