From d8ff16f7a9929b97b3960508144e86993eeb9fe1 Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Sat, 10 Dec 2016 01:39:04 +0300 Subject: [PATCH] More tests --- example/getting_started.cpp | 3 ++- test/test.cpp | 22 ++++++++-------------- test/test_impl.cpp | 11 +++++++++++ 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/example/getting_started.cpp b/example/getting_started.cpp index 14b6688..7558944 100644 --- a/example/getting_started.cpp +++ b/example/getting_started.cpp @@ -97,6 +97,7 @@ void my_terminate_handler() { } void my_signal_handler(int signum) { + ::signal(signum, SIG_DFL); boost::stacktrace::stacktrace bt; if (bt) { std::cerr << "Signal " << signum << ", backtrace:\n" << boost::stacktrace::stacktrace() << '\n'; // ``[footnote Strictly speaking this code is not async-signal-safe, because it uses std::cerr. [link boost_stacktrace.build_macros_and_backends Section "Build, Macros and Backends"] describes async-signal-safe backends, so if you will use the noop backend code becomes absolutely valid as that backens always returns 0 frames and `operator<<` will be never called. ]`` @@ -173,7 +174,7 @@ int main() { setup_handlers(); BOOST_TRY { - foo(5); // testing assert handler + foo(105); // testing assert handler } BOOST_CATCH(...) { } BOOST_CATCH_END diff --git a/test/test.cpp b/test/test.cpp index 60892b8..7010cfd 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -24,6 +24,8 @@ using boost::stacktrace::frame; BOOST_ST_API std::pair foo2(int i); BOOST_ST_API std::pair foo1(int i); BOOST_ST_API stacktrace return_from_nested_namespaces(); +BOOST_ST_API boost::stacktrace::basic_stacktrace<4> bar1(); +BOOST_ST_API boost::stacktrace::basic_stacktrace<4> bar2(); void test_deeply_nested_namespaces() { std::stringstream ss; @@ -228,18 +230,6 @@ void test_empty_basic_stacktrace() { BOOST_TEST(hash_value(st) == hash_value(st_t())); BOOST_TEST(st == st_t()); } -/* -BOOST_NOINLINE boost::stacktrace::basic_stacktrace<2> bar1() { - boost::stacktrace::basic_stacktrace<2> result; - BOOST_TEST(result.size() == 2); - return result; -} - -BOOST_NOINLINE boost::stacktrace::basic_stacktrace<2> bar2() { - boost::stacktrace::basic_stacktrace<2> result; - BOOST_TEST(result.size() == 2); - return result; -}*/ int main() { test_deeply_nested_namespaces(); @@ -249,8 +239,12 @@ int main() { test_frame(); test_empty_basic_stacktrace(); - //BOOST_TEST(&bar1 != &bar2); - //test_comparisons_base(bar1(), bar2()); + BOOST_TEST(&bar1 != &bar2); + boost::stacktrace::basic_stacktrace<4> b1 = bar1(); + BOOST_TEST(b1.size() == 4); + boost::stacktrace::basic_stacktrace<4> b2 = bar2(); + BOOST_TEST(b2.size() == 4); + test_comparisons_base(bar1(), bar2()); return boost::report_errors(); } diff --git a/test/test_impl.cpp b/test/test_impl.cpp index 42c08e5..e46636c 100644 --- a/test/test_impl.cpp +++ b/test/test_impl.cpp @@ -65,3 +65,14 @@ BOOST_ST_API BOOST_NOINLINE stacktrace return_from_nested_namespaces() { return get_backtrace_from_nested_namespaces(); } + +BOOST_ST_API BOOST_NOINLINE boost::stacktrace::basic_stacktrace<4> bar1() { + boost::stacktrace::basic_stacktrace<4> result; + return result; +} + +BOOST_ST_API BOOST_NOINLINE boost::stacktrace::basic_stacktrace<4> bar2() { + boost::stacktrace::basic_stacktrace<4> result; + return result; +} +