summaryrefslogtreecommitdiff
path: root/Modules/GoogleTestAddTests.cmake
diff options
context:
space:
mode:
authorAlexander Stein <alexander.stein@mailbox.org>2020-03-06 13:42:36 +0100
committerBrad King <brad.king@kitware.com>2020-03-13 10:47:33 -0400
commite9ab39eb1db8f072b030a929992df828bc05cc63 (patch)
tree03c80db31aafa6b0de009bf7478ea10b11c8288a /Modules/GoogleTestAddTests.cmake
parentc3ab1c22b069b64483a0525c3244e3377f256a87 (diff)
downloadcmake-e9ab39eb1db8f072b030a929992df828bc05cc63.tar.gz
GoogleTest: Add XML_OUTPUT_DIR parameter
When executing googltests in parallel using 'ctest -j n' and using '--gtest_output=xml' there is a race condition upon file creation. See googletest issue https://github.com/google/googletest/issues/2506. As all testcases (potentially) can be run in parallel each testcase has to create it's own XML JUnit file. EXTRA_ARGS is not suitable because it is identical per testsuite. So instead a new (opitional) parameter has been introduced to specify the storage location for each test of the testsuite.
Diffstat (limited to 'Modules/GoogleTestAddTests.cmake')
-rw-r--r--Modules/GoogleTestAddTests.cmake6
1 files changed, 6 insertions, 0 deletions
diff --git a/Modules/GoogleTestAddTests.cmake b/Modules/GoogleTestAddTests.cmake
index 73e55ea9c6..753319f92c 100644
--- a/Modules/GoogleTestAddTests.cmake
+++ b/Modules/GoogleTestAddTests.cmake
@@ -99,6 +99,11 @@ foreach(line ${output})
endif()
string(REGEX REPLACE "^DISABLED_" "" pretty_test "${pretty_test}")
string(REGEX REPLACE "#.*" "" test "${test}")
+ if(NOT TEST_XML_OUTPUT_DIR STREQUAL "")
+ set(TEST_XML_OUTPUT_PARAM "--gtest_output=xml:${TEST_XML_OUTPUT_DIR}/${prefix}${pretty_suite}.${pretty_test}${suffix}.xml")
+ else()
+ unset(TEST_XML_OUTPUT_PARAM)
+ endif()
# ...and add to script
add_command(add_test
"${prefix}${pretty_suite}.${pretty_test}${suffix}"
@@ -106,6 +111,7 @@ foreach(line ${output})
"${TEST_EXECUTABLE}"
"--gtest_filter=${suite}.${test}"
"--gtest_also_run_disabled_tests"
+ ${TEST_XML_OUTPUT_PARAM}
${extra_args}
)
if(suite MATCHES "^DISABLED" OR test MATCHES "^DISABLED")