mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 22:30:13 -06:00
GoogleTest: Add test case for XML_OUTPUT_DIR
This commit is contained in:
committed by
Brad King
parent
e9ab39eb1d
commit
0001339a6f
@@ -0,0 +1,4 @@
|
||||
set(RESULT_FILE "${RunCMake_TEST_BINARY_DIR}/GoogleTestXML.Foo.xml")
|
||||
if(NOT EXISTS ${RESULT_FILE})
|
||||
set(RunCMake_TEST_FAILED "Result XML file ${RESULT_FILE} was not created")
|
||||
endif()
|
||||
11
Tests/RunCMake/GoogleTest/GoogleTestXML.cmake
Normal file
11
Tests/RunCMake/GoogleTest/GoogleTestXML.cmake
Normal file
@@ -0,0 +1,11 @@
|
||||
project(test_include_dirs)
|
||||
include(CTest)
|
||||
include(GoogleTest)
|
||||
|
||||
enable_testing()
|
||||
|
||||
add_executable(xml_output xml_output.cpp)
|
||||
gtest_discover_tests(
|
||||
xml_output
|
||||
XML_OUTPUT_DIR ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
@@ -78,4 +78,32 @@ function(run_GoogleTest)
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(run_GoogleTestXML)
|
||||
# Use a single build tree for a few tests without cleaning.
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/GoogleTestXML-build)
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
if(NOT RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
||||
set(RunCMake_TEST_OPTIONS -DCMAKE_BUILD_TYPE=Debug)
|
||||
endif()
|
||||
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
||||
file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
||||
|
||||
run_cmake(GoogleTestXML)
|
||||
|
||||
run_cmake_command(GoogleTestXML-discovery
|
||||
${CMAKE_COMMAND}
|
||||
--build .
|
||||
--config Debug
|
||||
--target xml_output
|
||||
)
|
||||
|
||||
run_cmake_command(GoogleTestXML-result
|
||||
${CMAKE_CTEST_COMMAND}
|
||||
-C Debug
|
||||
-R GoogleTestXML
|
||||
--no-label-summary
|
||||
)
|
||||
endfunction()
|
||||
|
||||
run_GoogleTest()
|
||||
run_GoogleTestXML()
|
||||
|
||||
26
Tests/RunCMake/GoogleTest/xml_output.cpp
Normal file
26
Tests/RunCMake/GoogleTest/xml_output.cpp
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
// Note: GoogleTestXML.cmake doesn't actually depend on Google Test as such;
|
||||
// it only mimicks the output file creation using the path passed to this
|
||||
// test without any content
|
||||
for (int i = 0; i < argc; i++) {
|
||||
std::string param(argv[i]);
|
||||
if (param.find("--gtest_list_tests") != std::string::npos) {
|
||||
// This actually defines the name of the file passed in the 2nd run
|
||||
std::cout << "GoogleTestXML." << std::endl;
|
||||
std::cout << " Foo" << std::endl;
|
||||
} else if (param.find("--gtest_output=xml:") != std::string::npos) {
|
||||
std::string::size_type split = param.find(":");
|
||||
std::string filepath = param.substr(split + 1);
|
||||
// The full file path is passed
|
||||
std::ofstream ostrm(filepath.c_str(), std::ios::binary);
|
||||
ostrm << "--gtest_output=xml: mockup file\n";
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user