diff options
author | Alexander Stein <alexander.stein@mailbox.org> | 2020-03-06 12:42:36 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-03-13 14:47:33 (GMT) |
commit | e9ab39eb1db8f072b030a929992df828bc05cc63 (patch) | |
tree | 03c80db31aafa6b0de009bf7478ea10b11c8288a /Modules/GoogleTestAddTests.cmake | |
parent | c3ab1c22b069b64483a0525c3244e3377f256a87 (diff) | |
download | CMake-e9ab39eb1db8f072b030a929992df828bc05cc63.zip CMake-e9ab39eb1db8f072b030a929992df828bc05cc63.tar.gz CMake-e9ab39eb1db8f072b030a929992df828bc05cc63.tar.bz2 |
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.cmake | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Modules/GoogleTestAddTests.cmake b/Modules/GoogleTestAddTests.cmake index 73e55ea..753319f 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") |