From 22547a3c5f6e2f7b67b74a420fd06ef077678c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Wed, 29 Dec 2021 23:53:59 +0100 Subject: [PATCH] Add test for stdout pass-through behaviour in MultiReporter --- tests/CMakeLists.txt | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 02e02747..5f0996e0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -418,6 +418,39 @@ set_tests_properties("ErrorHandling::InvalidTestSpecExitsEarly" FAIL_REGULAR_EXPRESSION "No tests ran" ) +if (MSVC) + set(_NullFile "NUL") +else() + set(_NullFile "/dev/null") +endif() + +# This test checks that there is nothing written out from the process, +# but if CMake is running the tests under Valgrind or similar tool, then +# that will write its own output to stdout and the test would fail. +if (NOT MEMORYCHECK_COMMAND) + add_test(NAME "MultiReporter::CapturingReportersDontPropagateStdOut" + COMMAND + $ "Sends stuff to stdout and stderr" + --reporter xml::${_NullFile} + --reporter junit::${_NullFile} + ) + set_tests_properties("MultiReporter::CapturingReportersDontPropagateStdOut" + PROPERTIES + FAIL_REGULAR_EXPRESSION ".+" + ) +endif() + +add_test(NAME "MultiReporter::NonCapturingReportersPropagateStdout" + COMMAND + $ "Sends stuff to stdout and stderr" + --reporter xml::${_NullFile} + --reporter console::${_NullFile} +) +set_tests_properties("MultiReporter::NonCapturingReportersPropagateStdout" + PROPERTIES + PASS_REGULAR_EXPRESSION "A string sent to stderr via clog" +) + if (CATCH_USE_VALGRIND) add_test(NAME ValgrindRunTests COMMAND valgrind --leak-check=full --error-exitcode=1 $)