diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c1f809..07ae099 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,13 +94,13 @@ target_include_directories(backward PUBLIC ${BACKWARD_INCLUDE_DIRS}) if(BACKWARD_TESTS) enable_testing() - add_library(test_main SHARED test/_test_main.cpp) + add_library(test_main OBJECT test/_test_main.cpp) macro(backward_add_test src) get_filename_component(name ${src} NAME_WE) set(test_name "test_${name}") - add_executable(${test_name} ${src} ${ARGN}) + add_executable(${test_name} ${src} ${ARGN} $) target_link_libraries(${test_name} PRIVATE Backward::Backward test_main) diff --git a/test/_test_main.cpp b/test/_test_main.cpp index f905959..29f279f 100644 --- a/test/_test_main.cpp +++ b/test/_test_main.cpp @@ -122,8 +122,8 @@ int main(int argc, const char *const argv[]) { size_t success_cnt = 0; size_t total_cnt = 0; - for (test_registry_t::iterator it = test_registry.begin(); - it != test_registry.end(); ++it) { + for (test_registry_t::iterator it = test_registry().begin(); + it != test_registry().end(); ++it) { TestBase &test = **it; bool consider_test = (argc <= 1); @@ -133,7 +133,7 @@ int main(int argc, const char *const argv[]) { break; } } - if (not consider_test) { + if (!consider_test) { continue; } diff --git a/test/rectrace.cpp b/test/rectrace.cpp index bdb8072..10a38f4 100644 --- a/test/rectrace.cpp +++ b/test/rectrace.cpp @@ -30,7 +30,7 @@ using namespace backward; typedef StackTrace stacktrace_t; void end_of_our_journey(stacktrace_t &st) { - if (not st.size()) { + if (!st.size()) { st.load_here(); } } diff --git a/test/test.hpp b/test/test.hpp index 6c0bc0d..dc77c62 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -41,7 +41,7 @@ struct AssertFailedError : std::exception { : basename(_basename(filename)), line(_line), errmsg(_errmsg) {} const char *what() const throw() { - if (not _what.size()) { + if (!_what.size()) { std::ostringstream ss; ss << "assertion failed (" << basename << ":" << line; ss << ") " << errmsg; @@ -105,10 +105,14 @@ struct TestBase { }; typedef std::vector test_registry_t; -extern test_registry_t test_registry; +inline test_registry_t &test_registry() { + static test_registry_t reg; + return reg; +} -TestBase::TestBase(const char *n, TestStatus s) : name(n), expected_status(s) { - test_registry.push_back(this); +inline TestBase::TestBase(const char *n, TestStatus s) + : name(n), expected_status(s) { + test_registry().push_back(this); } } // namespace test @@ -135,9 +139,9 @@ TestBase::TestBase(const char *n, TestStatus s) : name(n), expected_status(s) { : throw ::test::AssertFailedError(__FILE__, __LINE__, #expr) #define _ASSERT_BINOP(a, b, cmp) \ - (not(a cmp b)) ? static_cast(0) \ - : throw ::test::AssertFailedError( \ - __FILE__, __LINE__, "because " #a " " #cmp " " #b) + (!(a cmp b)) ? static_cast(0) \ + : throw ::test::AssertFailedError( \ + __FILE__, __LINE__, "because " #a " " #cmp " " #b) #define ASSERT_EQ(a, b) _ASSERT_BINOP(a, b, !=) #define ASSERT_NE(a, b) _ASSERT_BINOP(a, b, ==)