unit_test: set data dir relative to exe & add log-level arg

This commit is contained in:
jeff 2023-09-10 02:11:11 -05:00
parent 8123d945f8
commit 1025e4fcb1
No known key found for this signature in database
GPG Key ID: 6F79797A6E392442
2 changed files with 12 additions and 4 deletions

View File

@ -142,8 +142,6 @@ if (NOT MSVC)
COMPILE_FLAGS " -Wno-undef -Wno-sign-compare") COMPILE_FLAGS " -Wno-undef -Wno-sign-compare")
endif () endif ()
SET_PROPERTY(SOURCE main.cpp PROPERTY COMPILE_FLAGS -DDEFAULT_DATA_DIR="\\"${CMAKE_SOURCE_DIR}/tests/data\\"")
SET_PROPERTY(SOURCE memwipe.cpp PROPERTY COMPILE_FLAGS -Ofast) SET_PROPERTY(SOURCE memwipe.cpp PROPERTY COMPILE_FLAGS -Ofast)
add_test( add_test(

View File

@ -62,9 +62,14 @@ int main(int argc, char** argv)
::testing::InitGoogleTest(&argc, argv); ::testing::InitGoogleTest(&argc, argv);
// the default test data directory is ../data (relative to the executable's directory)
const auto default_test_data_dir = boost::filesystem::path(argv[0]).parent_path().parent_path() / "data";
po::options_description desc_options("Command line options"); po::options_description desc_options("Command line options");
const command_line::arg_descriptor<std::string> arg_data_dir = { "data-dir", "Data files directory", DEFAULT_DATA_DIR }; const command_line::arg_descriptor<std::string> arg_data_dir = { "data-dir", "Data files directory", default_test_data_dir.string() };
const command_line::arg_descriptor<std::string> arg_log_level = { "log-level", "0-4 or categories", "" };
command_line::add_arg(desc_options, arg_data_dir); command_line::add_arg(desc_options, arg_data_dir);
command_line::add_arg(desc_options, arg_log_level);
po::variables_map vm; po::variables_map vm;
bool r = command_line::handle_error_helper(desc_options, [&]() bool r = command_line::handle_error_helper(desc_options, [&]()
@ -76,7 +81,12 @@ int main(int argc, char** argv)
if (! r) if (! r)
return 1; return 1;
unit_test::data_dir = command_line::get_arg(vm, arg_data_dir); // set the test data directory
unit_test::data_dir = command_line::get_arg(vm, arg_data_dir).c_str();
// set the log level
if (!command_line::is_arg_defaulted(vm, arg_log_level))
mlog_set_log(command_line::get_arg(vm, arg_log_level).c_str());
CATCH_ENTRY_L0("main", 1); CATCH_ENTRY_L0("main", 1);