Merge topic 'gtest-discover-flush-duplicates'

007d7ea648 GoogleTest: Avoid extra call to set DISABLED test property in discovery
9a24c1e802 GoogleTest: Clear script content buffer on flush and flush less often

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9982
This commit is contained in:
Brad King
2024-11-13 14:14:06 +00:00
committed by Kitware Robot
5 changed files with 77 additions and 49 deletions
@@ -1,5 +0,0 @@
list(LENGTH flush_script_test_TESTS LIST_SIZE)
set(EXPECTED_LIST_SIZE 4)
if(NOT LIST_SIZE EQUAL ${EXPECTED_LIST_SIZE})
message("TEST_LIST should have ${EXPECTED_LIST_SIZE} elements but it has ${LIST_SIZE}")
endif()
@@ -0,0 +1,34 @@
set(expected_number_of_tests 12)
# Check the flushing of the test names buffer
list(LENGTH flush_script_test_TESTS num_test_names)
if(NOT num_test_names EQUAL expected_number_of_tests)
message(FATAL_ERROR
"Test name list has wrong number of test names:\n"
" Expected: ${expected_number_of_tests}\n"
" Actual: ${num_test_names}"
)
endif()
# Check the flushing of the script content variable.
# Note that flushing errors would repeat a test name, so such errors are not
# uncovered by checking the name buffer flushing above.
# PRE_TEST can have a config-specific tests file, POST_BUILD never does
set(tests_file "@CMAKE_CURRENT_BINARY_DIR@/flush_script_test[1]_tests-Debug.cmake")
if(NOT EXISTS "${tests_file}")
set(tests_file "@CMAKE_CURRENT_BINARY_DIR@/flush_script_test[1]_tests.cmake")
endif()
if(NOT EXISTS "${tests_file}")
message(FATAL_ERROR "Tests file is missing")
endif()
file(STRINGS "${tests_file}" add_test_lines REGEX "^add_test" ENCODING UTF-8)
list(LENGTH add_test_lines num_add_test_lines)
if(NOT num_add_test_lines EQUAL expected_number_of_tests)
message(FATAL_ERROR
"Test script has wrong number of add_test() calls:\n"
" Expected: ${expected_number_of_tests}\n"
" Actual: ${num_add_test_lines}"
)
endif()
@@ -10,5 +10,11 @@ xcode_sign_adhoc(flush_script_test)
gtest_discover_tests(
flush_script_test
)
configure_file(GoogleTest-discovery-flush-script-check-list.cmake.in
check-test-lists.cmake
@ONLY
)
set_property(DIRECTORY APPEND PROPERTY TEST_INCLUDE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/GoogleTest-discovery-flush-script-check-list.cmake)
${CMAKE_CURRENT_BINARY_DIR}/check-test-lists.cmake
)
@@ -10,10 +10,11 @@ int main(int argc, char** argv)
if (argc > 1 && std::string(argv[1]) == "--gtest_list_tests") {
std::cout << "flush_script_test.\n";
const size_t flushThreshold = 50000;
const size_t testCaseNum = 4;
std::string testName(flushThreshold / (testCaseNum - 1), 'T');
for (size_t i = 0; i < testCaseNum; ++i)
std::cout << " " << testName.c_str() << "\n";
const size_t flushAfter = 4;
const size_t testCaseNum = 3 * flushAfter;
std::string testName(flushThreshold / flushAfter, 'T');
for (size_t i = 1; i <= testCaseNum; ++i)
std::cout << " t" << i << testName.c_str() << "\n";
}
return 0;
}