From 60f6496c12b304baae24d5b63b86fec9e7d1e35e Mon Sep 17 00:00:00 2001 From: Andrei Maiboroda Date: Wed, 9 Sep 2020 15:48:17 +0200 Subject: [PATCH] test: allow single file as input to spectest runner --- test/smoketests/spectests/CMakeLists.txt | 12 ++++++++- test/spectests/spectests.cpp | 32 +++++++++++++++++------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/test/smoketests/spectests/CMakeLists.txt b/test/smoketests/spectests/CMakeLists.txt index 3b1a5e6ec..0142b1a6d 100644 --- a/test/smoketests/spectests/CMakeLists.txt +++ b/test/smoketests/spectests/CMakeLists.txt @@ -12,6 +12,16 @@ set_tests_properties( PASS_REGULAR_EXPRESSION "PASSED 32, FAILED 0, SKIPPED 3" ) +add_test( + NAME fizzy/smoketests/spectests/default/smoketest.json + COMMAND fizzy-spectests ${CMAKE_CURRENT_LIST_DIR}/default/smoketest.json +) +set_tests_properties( + fizzy/smoketests/spectests/default + PROPERTIES + PASS_REGULAR_EXPRESSION "PASSED 32, FAILED 0, SKIPPED 3" +) + add_test( NAME fizzy/smoketests/spectests/skipvalidation COMMAND fizzy-spectests ${CMAKE_CURRENT_LIST_DIR}/default --skip-validation @@ -79,7 +89,7 @@ add_test( set_tests_properties( fizzy/smoketests/spectests/cli-missing-dir-arg PROPERTIES - PASS_REGULAR_EXPRESSION "Missing DIR argument" + PASS_REGULAR_EXPRESSION "Missing PATH argument" ) add_test( diff --git a/test/spectests/spectests.cpp b/test/spectests/spectests.cpp index 825403bae..378d85095 100644 --- a/test/spectests/spectests.cpp +++ b/test/spectests/spectests.cpp @@ -667,6 +667,21 @@ class test_runner std::string m_current_test_type; }; +void log_total(const fs::path& path, const test_results& res) +{ + std::cout << "TOTAL " << (res.passed + res.failed + res.skipped) << " tests ran from " << path + << ".\n PASSED " << res.passed << ", FAILED " << res.failed << ", SKIPPED " + << res.skipped << ".\n"; +} + +bool run_tests_from_file(const fs::path& path, const test_settings& settings) +{ + const auto res = test_runner{settings}.run_from_file(path); + + log_total(path, res); + return res.failed == 0; +} + bool run_tests_from_dir(const fs::path& path, const test_settings& settings) { std::vector files; @@ -688,10 +703,7 @@ bool run_tests_from_dir(const fs::path& path, const test_settings& settings) total.skipped += res.skipped; } - std::cout << "TOTAL " << (total.passed + total.failed + total.skipped) << " tests ran from " - << path << ".\n PASSED " << total.passed << ", FAILED " << total.failed - << ", SKIPPED " << total.skipped << ".\n"; - + log_total(path, total); return total.failed == 0; } @@ -701,7 +713,7 @@ int main(int argc, char** argv) { try { - std::string dir; + std::string target; test_settings settings; for (auto i = 1; i < argc; ++i) @@ -723,16 +735,18 @@ int main(int argc, char** argv) } } else - dir = argv[i]; + target = argv[i]; } - if (dir.empty()) + if (target.empty()) { - std::cerr << "Missing DIR argument\n"; + std::cerr << "Missing PATH argument\n"; return -1; } - const bool res = run_tests_from_dir(dir, settings); + const fs::path path = target; + const bool res = fs::is_directory(path) ? run_tests_from_dir(path, settings) : + run_tests_from_file(path, settings); return res ? 0 : 1; } catch (const std::exception& ex)