mirror of
https://github.com/reactos/CMake.git
synced 2024-12-19 01:27:11 +00:00
e378ba5f39
Add a test that verifies that when ctest -j 4 is called, at most, 4 tests are executed at any one time. The test works by running the same script as each of 100 tests. And then setting up test properties for DEPENDS, RUN_SERIAL, PROCESSORS and COST in order to get the tests to run in a semi-deterministic ordering, even in parallel. The script writes a file, sleeps for a bit, and then deletes the file. In the meantime, it counts files that currently exist, and emits output that triggers a test failure if the count of files is ever greater than 4. Prior to the commit that fixed bug #12904, this would result in a failed test because the output of some of the tests would indicate that more than 4 tests were running simultaneously. Now that this issue is resolved, this test will help guarantee that it stays resolved moving forward.
51 lines
1.6 KiB
CMake
51 lines
1.6 KiB
CMake
cmake_minimum_required(VERSION 2.8)
|
|
project(CTestLimitDashJ NONE)
|
|
|
|
# This file demonstrates http://public.kitware.com/Bug/view.php?id=12904
|
|
# when configured with CMake 2.8.10.2 and earlier, and when running
|
|
# "ctest -j 4" in the resulting build tree. This example is hard-coded
|
|
# to assume -j 4 just to reproduce the issue easily. Adjust the
|
|
# FAIL_REGULAR_EXPRESSION and PROCESSORS values to reproduce this problem
|
|
# with a different ctest -j value...
|
|
|
|
if(EXISTS "${CMAKE_BINARY_DIR}/Testing/Temporary/CTestCostData.txt")
|
|
message(STATUS "Removing CTestCostData.txt to force ordering by COST PROPERTY value rather than prior run data")
|
|
file(REMOVE "${CMAKE_BINARY_DIR}/Testing/Temporary/CTestCostData.txt")
|
|
endif()
|
|
|
|
include(CTest)
|
|
|
|
configure_file(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/CreateSleepDelete.cmake
|
|
${CMAKE_CURRENT_BINARY_DIR}/CreateSleepDelete.cmake
|
|
@ONLY
|
|
)
|
|
|
|
foreach(n RANGE 1 100)
|
|
add_test(NAME t${n}
|
|
COMMAND ${CMAKE_CTEST_COMMAND}
|
|
-D basefilename=f${n}
|
|
-S ${CMAKE_CURRENT_BINARY_DIR}/CreateSleepDelete.cmake
|
|
)
|
|
set_property(TEST t${n} PROPERTY FAIL_REGULAR_EXPRESSION "(c='[5-9]'|c='[1-9][0-9]+')")
|
|
endforeach()
|
|
|
|
set_property(TEST t1 PROPERTY RUN_SERIAL 1)
|
|
set_property(TEST t1 PROPERTY PROCESSORS 4)
|
|
|
|
set_property(TEST t51 PROPERTY RUN_SERIAL 1)
|
|
set_property(TEST t51 PROPERTY PROCESSORS 4)
|
|
|
|
foreach(n RANGE 2 50)
|
|
set_property(TEST t${n} PROPERTY DEPENDS t1)
|
|
endforeach()
|
|
set_property(TEST t1 PROPERTY DEPENDS t51)
|
|
set_property(TEST t51 PROPERTY DEPENDS t100)
|
|
|
|
foreach(n 50)
|
|
set_property(TEST t${n} PROPERTY COST 6)
|
|
endforeach()
|
|
foreach(n RANGE 52 99)
|
|
set_property(TEST t${n} PROPERTY COST 3)
|
|
endforeach()
|