From a24b57019a5d1ec459047c245db65f89dfeb9db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Fri, 30 Oct 2020 10:41:34 +0100 Subject: [PATCH] Improve Catch2 integration Mainly dealing with outputs --- tests/mpi_test_main.cpp | 83 ++++++++++++++++++++++------------------- tests/test_main.cpp | 33 +++++++++------- 2 files changed, 64 insertions(+), 52 deletions(-) diff --git a/tests/mpi_test_main.cpp b/tests/mpi_test_main.cpp index df55a88dc..33ab8ed16 100644 --- a/tests/mpi_test_main.cpp +++ b/tests/mpi_test_main.cpp @@ -33,50 +33,57 @@ main(int argc, char* argv[]) Catch::Session session; int result = session.applyCommandLine(argc, argv); - if (parallel::rank() != 0) { - // Disable outputs for ranks != 0 - setenv("GCOV_PREFIX", gcov_prefix.string().c_str(), 1); - parallel_output /= output_base_name + std::to_string(parallel::rank()); - - Catch::ConfigData data{session.configData()}; - data.outputFilename = parallel_output.string(); - session.useConfigData(data); - } - if (result == 0) { - // Disable outputs from tested classes to the standard output - std::cout.setstate(std::ios::badbit); - - SynchronizerManager::create(); - MeshDataManager::create(); - DiamondDualConnectivityManager::create(); - DiamondDualMeshManager::create(); - - test_MeshDataBase::create(); - - if (parallel::rank() == 0) { - if (parallel::size() > 1) { - session.config().stream() << rang::fgB::green << "Other rank outputs are stored in corresponding files" - << rang::style::reset << '\n'; - - for (size_t i_rank = 1; i_rank < parallel::size(); ++i_rank) { - std::filesystem::path parallel_output(std::string{PUGS_BINARY_DIR}); - parallel_output /= output_base_name + std::to_string(i_rank); - session.config().stream() << " - " << rang::fg::green << parallel_output.parent_path().string() - << parallel_output.preferred_separator << rang::style::reset << rang::fgB::green - << parallel_output.filename().string() << rang::style::reset << '\n'; + const auto& config = session.config(); + if (config.listReporters() or config.listTags() or config.listTestNamesOnly() or config.listTests()) { + if (parallel::rank() == 0) { + session.run(); + } + } else { + if (parallel::rank() != 0) { + // Disable outputs for ranks != 0 + setenv("GCOV_PREFIX", gcov_prefix.string().c_str(), 1); + parallel_output /= output_base_name + std::to_string(parallel::rank()); + + Catch::ConfigData data{session.configData()}; + data.outputFilename = parallel_output.string(); + session.useConfigData(data); + } + + // Disable outputs from tested classes to the standard output + std::cout.setstate(std::ios::badbit); + + SynchronizerManager::create(); + MeshDataManager::create(); + DiamondDualConnectivityManager::create(); + DiamondDualMeshManager::create(); + + test_MeshDataBase::create(); + + if (parallel::rank() == 0) { + if (parallel::size() > 1) { + session.config().stream() << rang::fgB::green << "Other rank outputs are stored in corresponding files" + << rang::style::reset << '\n'; + + for (size_t i_rank = 1; i_rank < parallel::size(); ++i_rank) { + std::filesystem::path parallel_output(std::string{PUGS_BINARY_DIR}); + parallel_output /= output_base_name + std::to_string(i_rank); + session.config().stream() << " - " << rang::fg::green << parallel_output.parent_path().string() + << parallel_output.preferred_separator << rang::style::reset << rang::fgB::green + << parallel_output.filename().string() << rang::style::reset << '\n'; + } } } - } - result = session.run(); + result = session.run(); - test_MeshDataBase::destroy(); + test_MeshDataBase::destroy(); - DiamondDualMeshManager::destroy(); - DiamondDualConnectivityManager::destroy(); - MeshDataManager::destroy(); - SynchronizerManager::destroy(); + DiamondDualMeshManager::destroy(); + DiamondDualConnectivityManager::destroy(); + MeshDataManager::destroy(); + SynchronizerManager::destroy(); + } } Kokkos::finalize(); diff --git a/tests/test_main.cpp b/tests/test_main.cpp index 2a9b6268f..1f7a5aafe 100644 --- a/tests/test_main.cpp +++ b/tests/test_main.cpp @@ -21,28 +21,33 @@ main(int argc, char* argv[]) int result = session.applyCommandLine(argc, argv); if (result == 0) { - // Disable outputs from tested classes to the standard output - std::cout.setstate(std::ios::badbit); + const auto& config = session.config(); + if (config.listReporters() or config.listTags() or config.listTestNamesOnly() or config.listTests()) { + result = session.run(); + } else { + // Disable outputs from tested classes to the standard output + std::cout.setstate(std::ios::badbit); - SynchronizerManager::create(); - MeshDataManager::create(); - DiamondDualConnectivityManager::create(); - DiamondDualMeshManager::create(); + SynchronizerManager::create(); + MeshDataManager::create(); + DiamondDualConnectivityManager::create(); + DiamondDualMeshManager::create(); - test_MeshDataBase::create(); + test_MeshDataBase::create(); - result = session.run(); + result = session.run(); - test_MeshDataBase::destroy(); + test_MeshDataBase::destroy(); - DiamondDualMeshManager::destroy(); - DiamondDualConnectivityManager::destroy(); - MeshDataManager::destroy(); - SynchronizerManager::destroy(); + DiamondDualMeshManager::destroy(); + DiamondDualConnectivityManager::destroy(); + MeshDataManager::destroy(); + SynchronizerManager::destroy(); + } } Kokkos::finalize(); parallel::Messenger::destroy(); - std::cout << "finalizing\n"; + return result; } -- GitLab