libabigail/tests/test-utils.cc
Dodji Seketeli 41625582a3 test-utils: Define test status reporting functions
* tests/test-utils.h (emit_test_status_and_update_counters)
	(emit_test_summary): Declare ...
	* tests/test-utils.cc (emit_test_status_and_update_counters)
	(emit_test_summary): ... new functions.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2021-11-17 12:02:37 +01:00

108 lines
2.6 KiB
C++

// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// -*- Mode: C++ -*-
//
// Copyright (C) 2013-2020 Red Hat, Inc.
#include <iostream>
#include "test-utils.h"
using std::string;
namespace abigail
{
namespace tests
{
/// Returns the absolute path to the source directory.
///
/// \return the absolute path tho the source directory.
const char*
get_src_dir()
{
#ifndef ABIGAIL_SRC_DIR
#error the macro ABIGAIL_SRC_DIR must be set at compile time
#endif
static __thread const char* s(ABIGAIL_SRC_DIR);
return s;
}
/// Returns the absolute path to the build directory.
///
/// \return the absolute path the build directory.
const char*
get_build_dir()
{
#ifndef ABIGAIL_BUILD_DIR
#error the macro ABIGAIL_BUILD_DIR must be set at compile time
#endif
static __thread const char* s(ABIGAIL_BUILD_DIR);
return s;
}
/// Emit test status on the standard output.
///
/// This function also increments passed, failed and total test
/// numbers accordingly.
///
/// @param test_passed indicated if the test succeeded or not.
///
/// @param test_cmd the test command that was executed. If the test
/// failed, the exact command is displayed.
///
/// @param passed_count the number of passed tests. This is going to
/// be incremented if the test passes.
///
/// @param failed_count the number of failed tests. This is going to
/// be incremented if the test fails.
///
/// @param total_count the total number of tests. This is going to be
/// incremented.
void
emit_test_status_and_update_counters(bool test_passed,
const std::string& test_cmd,
unsigned& passed_count,
unsigned& failed_count,
unsigned& total_count)
{
if (test_passed)
passed_count++;
else
{
std::cout << TEST_FAILURE_COLOR
<< "Test Failed: "
<< DEFAULT_TERMINAL_COLOR
<< test_cmd
<< std::endl;
failed_count++;
}
total_count++;
}
/// Emit the summary of the test.
///
/// @param total_count the total number of tests executed.
///
/// @param passed_count the number of tests that succeeded.
///
/// @param failed_count the number of tests that failed.
void
emit_test_summary(unsigned total_count,
unsigned passed_count,
unsigned failed_count)
{
if (failed_count)
std::cout << TEST_FAILURE_COLOR << "FAILURE!";
else
std::cout << TEST_SUCCESS_COLOR << "SUCCESS!";
std::cout << DEFAULT_TERMINAL_COLOR << "\n";
std::cout << "Total number of tests executed: " << total_count
<< " Number of tests PASSED: " << passed_count
<< ", Number of tests FAILED: " << failed_count
<< ".\n";
}
}//end namespace tests
}//end namespace abigail