int abort_tests(Thread * Self) { printf("STARTING ABORT TESTS\n"); printf("test_abort_1 started\n"); test_abort_1(Self); printf("test_abort_1 finished\n\n"); printf("test_abort_2 started\n"); test_abort_2(Self); printf("test_abort_2 finished\n\n"); printf("test_abort_3 started\n"); test_abort_3(Self); printf("test_abort_3 finished\n\n"); return 1; }
int main(int argc, char* argv[]) { if (argc > 1 && argv[1] == std::string("test")) { return main_test(argc, argv); } loguru::init(argc, argv); // auto verbose_type_name = loguru::demangle(typeid(std::ofstream).name()); // loguru::add_stack_cleanup(verbose_type_name.c_str(), "std::ofstream"); // std::ofstream os; // die(os); if (argc == 1) { loguru::add_file("latest_readable.log", loguru::Truncate, loguru::Verbosity_INFO); loguru::add_file("everything.log", loguru::Append, loguru::Verbosity_MAX); LOG_F(INFO, "Loguru test"); test_thread_names(); test_scopes(); test_levels(); #if LOGURU_WITH_STREAMS test_stream(); #endif loguru::shutdown(); LOG_F(INFO, "goes to stderr, but not to file"); } else { std::string test = argv[1]; if (test == "ABORT_F") { ABORT_F("ABORT_F format message"); } else if (test == "ABORT_S") { ABORT_S() << "ABORT_S stream message"; } else if (test == "assert") { const char* ptr = 0; assert(ptr && "Error that was unexpected"); } else if (test == "LOG_F(FATAL)") { LOG_F(FATAL, "Fatal format message"); } else if (test == "LOG_S(FATAL)") { LOG_S(FATAL) << "Fatal stream message"; } else if (test == "CHECK_NOTNULL_F") { const char* ptr = 0; CHECK_NOTNULL_F(ptr); } else if (test == "CHECK_F") { CHECK_F(1 > 2); } else if (test == "CHECK_EQ_F") { CHECK_EQ_F(always_increasing(), 0); CHECK_EQ_F(always_increasing(), 1); CHECK_EQ_F(always_increasing(), 42); } else if (test == "CHECK_EQ_F_int") { int x = 42; CHECK_EQ_F(x, x + 1); } else if (test == "CHECK_EQ_F_unsigned") { unsigned x = 42; CHECK_EQ_F(x, x + 1); } else if (test == "CHECK_EQ_F_size_t") { size_t x = 42; CHECK_EQ_F(x, x + 1); } else if (test == "CHECK_EQ_F_message") { CHECK_EQ_F(always_increasing(), 0, "Should pass"); CHECK_EQ_F(always_increasing(), 1, "Should pass"); CHECK_EQ_F(always_increasing(), 42, "Should fail"); } else if (test == "CHECK_EQ_S") { std::string str = "right"; CHECK_EQ_F(str, "wrong", "Expected to fail, since `str` isn't \"wrong\" but \"%s\"", str.c_str()); } else if (test == "CHECK_LT_S") { CHECK_EQ_F(always_increasing(), 0); CHECK_EQ_F(always_increasing(), 1); CHECK_EQ_F(always_increasing(), 42); } else if (test == "CHECK_LT_S_message") { CHECK_EQ_F(always_increasing(), 0, "Should pass"); CHECK_EQ_F(always_increasing(), 1, "Should pass"); CHECK_EQ_F(always_increasing(), 42, "Should fail!"); } else if (test == "deep_abort") { deep_abort_10({"deep_abort"}); } else if (test == "SIGSEGV") { test_SIGSEGV_2(); } else if (test == "abort") { test_abort_2(); } else if (test == "error_context") { test_error_contex(); } else if (test == "throw_on_fatal") { throw_on_fatal(); } else if (test == "throw_on_signal") { throw_on_signal(); } else if (test == "hang") { loguru::add_file("hang.log", loguru::Truncate, loguru::Verbosity_INFO); test_hang_2(); } else { LOG_F(ERROR, "Unknown test: '%s'", test.c_str()); } } }