Commit 0001339a authored by Alexander Stein's avatar Alexander Stein Committed by Brad King
Browse files

GoogleTest: Add test case for XML_OUTPUT_DIR

parent e9ab39eb
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()
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()
#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;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment