From fe484f30496bb6b1f93adc96c89e91a9d75871ea Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Sun, 8 Oct 2017 21:19:05 +0100 Subject: [PATCH] unit_tests: data dir is now overridden with --data-dir rather than a raw string without option --- tests/unit_tests/CMakeLists.txt | 2 +- tests/unit_tests/main.cpp | 31 ++++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/tests/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt index 1dac92bed..e0eef5c5d 100644 --- a/tests/unit_tests/CMakeLists.txt +++ b/tests/unit_tests/CMakeLists.txt @@ -100,4 +100,4 @@ endif () add_test( NAME unit_tests - COMMAND unit_tests "${TEST_DATA_DIR}") + COMMAND unit_tests --data-dir "${TEST_DATA_DIR}") diff --git a/tests/unit_tests/main.cpp b/tests/unit_tests/main.cpp index b2abad942..1706c43c9 100644 --- a/tests/unit_tests/main.cpp +++ b/tests/unit_tests/main.cpp @@ -31,31 +31,44 @@ #include "gtest/gtest.h" #include +#include #include "include_base_utils.h" +#include "common/command_line.h" #include "unit_tests_utils.h" +namespace po = boost::program_options; + boost::filesystem::path unit_test::data_dir; int main(int argc, char** argv) { + epee::string_tools::set_module_name_and_folder(argv[0]); mlog_configure(mlog_get_default_log_path("unit_tests.log"), true); epee::debug::get_set_enable_assert(true, false); ::testing::InitGoogleTest(&argc, argv); - // Process remaining arguments - if (argc == 2 && argv[1] != NULL) { // one arg: path to dir with test data - unit_test::data_dir = argv[1]; - } else if (argc == 1) { // legacy: assume test binaries in 'build/release' - epee::string_tools::set_module_name_and_folder(argv[0]); + po::options_description desc_options("Command line options"); + const command_line::arg_descriptor arg_data_dir = {"data-dir", "Data files directory", "", true}; + command_line::add_arg(desc_options, command_line::arg_data_dir, ""); + + po::variables_map vm; + bool r = command_line::handle_error_helper(desc_options, [&]() + { + po::store(po::parse_command_line(argc, argv, desc_options), vm); + po::notify(vm); + return true; + }); + if (! r) + return 1; + + if (vm["data-dir"].defaulted()) unit_test::data_dir = boost::filesystem::path(epee::string_tools::get_current_module_folder()) .parent_path().parent_path().parent_path().parent_path() .append("tests").append("data"); - } else { - std::cerr << "Usage: " << argv[0] << " []" << std::endl; - return 1; - } + else + unit_test::data_dir = command_line::get_arg(vm, arg_data_dir); return RUN_ALL_TESTS(); }