Merge pull request #226 from gudnimg/parallel-unit-tests
Run unit tests in parallel when possiblepull/230/head
commit
0506af08ac
|
|
@ -15,12 +15,25 @@ if(GCOV_ENABLE)
|
||||||
COMMAND ${CMAKE_COMMAND} -E remove ${PROJECT_BINARY_DIR}/.ctest-finished
|
COMMAND ${CMAKE_COMMAND} -E remove ${PROJECT_BINARY_DIR}/.ctest-finished
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(ctest_test_args --timeout 30 --output-on-failure)
|
||||||
|
|
||||||
|
include(ProcessorCount)
|
||||||
|
ProcessorCount(N)
|
||||||
|
if(N EQUAL 0)
|
||||||
|
message(
|
||||||
|
WARNING "CTest: There was an issue reading the core count, tests won't be run in parallel"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
message(STATUS "CTest: Detected ${N} CPU threads")
|
||||||
|
set(ctest_test_args -j${N} ${ctest_test_args})
|
||||||
|
endif()
|
||||||
|
|
||||||
# This step needs to always return OK but log whether it was successful or not. The thought here
|
# This step needs to always return OK but log whether it was successful or not. The thought here
|
||||||
# is that if the tests all pass, .ctest-finished is created and we can check for its existance
|
# is that if the tests all pass, .ctest-finished is created and we can check for its existance
|
||||||
# after generating the report to determine if the overall build result is a pass or fail.
|
# after generating the report to determine if the overall build result is a pass or fail.
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
test_run_all
|
test_run_all
|
||||||
COMMAND ${CMAKE_COMMAND} -E env CTEST_OUTPUT_ON_FAILURE=1 ${CMAKE_CTEST_COMMAND} --timeout 30
|
COMMAND ${CMAKE_CTEST_COMMAND} ${ctest_test_args}
|
||||||
COMMAND ${CMAKE_COMMAND} -E touch .ctest-finished || exit 0
|
COMMAND ${CMAKE_COMMAND} -E touch .ctest-finished || exit 0
|
||||||
BYPRODUCTS ${PROJECT_BINARY_DIR}/.ctest-finished
|
BYPRODUCTS ${PROJECT_BINARY_DIR}/.ctest-finished
|
||||||
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}"
|
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue