1// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 2// -*- Mode: C++ -*- 3// 4// Copyright (C) 2013-2022 Red Hat, Inc. 5 6#include <iostream> 7#include "test-utils.h" 8 9using std::string; 10 11namespace abigail 12{ 13namespace tests 14{ 15 16/// Returns the absolute path to the source directory. 17/// 18/// \return the absolute path tho the source directory. 19const char* 20get_src_dir() 21{ 22#ifndef ABIGAIL_SRC_DIR 23#error the macro ABIGAIL_SRC_DIR must be set at compile time 24#endif 25 26 static __thread const char* s(ABIGAIL_SRC_DIR); 27 return s; 28} 29 30/// Returns the absolute path to the build directory. 31/// 32/// \return the absolute path the build directory. 33const char* 34get_build_dir() 35{ 36#ifndef ABIGAIL_BUILD_DIR 37#error the macro ABIGAIL_BUILD_DIR must be set at compile time 38#endif 39 40 static __thread const char* s(ABIGAIL_BUILD_DIR); 41 return s; 42} 43 44/// Emit test status on the standard output. 45/// 46/// This function also increments passed, failed and total test 47/// numbers accordingly. 48/// 49/// @param test_passed indicated if the test succeeded or not. 50/// 51/// @param test_cmd the test command that was executed. If the test 52/// failed, the exact command is displayed. 53/// 54/// @param passed_count the number of passed tests. This is going to 55/// be incremented if the test passes. 56/// 57/// @param failed_count the number of failed tests. This is going to 58/// be incremented if the test fails. 59/// 60/// @param total_count the total number of tests. This is going to be 61/// incremented. 62void 63emit_test_status_and_update_counters(bool test_passed, 64 const std::string& test_cmd, 65 unsigned& passed_count, 66 unsigned& failed_count, 67 unsigned& total_count) 68{ 69 if (test_passed) 70 passed_count++; 71 else 72 { 73 std::cout << TEST_FAILURE_COLOR 74 << "Test Failed: " 75 << DEFAULT_TERMINAL_COLOR 76 << test_cmd 77 << std::endl; 78 failed_count++; 79 } 80 total_count++; 81} 82 83/// Emit the summary of the test. 84/// 85/// @param total_count the total number of tests executed. 86/// 87/// @param passed_count the number of tests that succeeded. 88/// 89/// @param failed_count the number of tests that failed. 90void 91emit_test_summary(unsigned total_count, 92 unsigned passed_count, 93 unsigned failed_count) 94{ 95 if (failed_count) 96 std::cout << TEST_FAILURE_COLOR << "FAILURE!"; 97 else 98 std::cout << TEST_SUCCESS_COLOR << "SUCCESS!"; 99 std::cout << DEFAULT_TERMINAL_COLOR << "\n"; 100 101 std::cout << "Total number of tests executed: " << total_count 102 << " Number of tests PASSED: " << passed_count 103 << ", Number of tests FAILED: " << failed_count 104 << ".\n"; 105} 106}//end namespace tests 107}//end namespace abigail 108