libuav original

Dependents:   UAVCAN UAVCAN_Subscriber

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers test_main.cpp Source File

test_main.cpp

00001 /*
00002  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
00003  */
00004 
00005 #include <gtest/gtest.h>
00006 #include <uavcan/build_config.hpp>
00007 #include <cstdio>
00008 #include <cstdlib>
00009 #include <execinfo.h>
00010 #include <signal.h>
00011 #include <unistd.h>
00012 
00013 static void sigsegv_handler(int sig)
00014 {
00015     const int BacktraceSize = 32;
00016     void* array[BacktraceSize];
00017     const int size = backtrace(array, BacktraceSize);
00018 
00019     std::fprintf(stderr, "SIGNAL %d RECEIVED; STACKTRACE:\n", sig);
00020     backtrace_symbols_fd(array, size, STDERR_FILENO);
00021     std::exit(1);
00022 }
00023 
00024 int main(int argc, char **argv)
00025 {
00026     signal(SIGSEGV, sigsegv_handler);
00027 
00028 #ifndef UAVCAN_CPP_VERSION
00029 # error UAVCAN_CPP_VERSION
00030 #endif
00031 #if UAVCAN_CPP_VERSION == UAVCAN_CPP11
00032     std::cout << "C++11" << std::endl;
00033 #elif UAVCAN_CPP_VERSION == UAVCAN_CPP03
00034     std::cout << "C++03" << std::endl;
00035 #else
00036 # error UAVCAN_CPP_VERSION
00037 #endif
00038 
00039     ::testing::InitGoogleTest(&argc, argv);
00040     return RUN_ALL_TESTS();
00041 }