| include(RunCTest) |
| |
| # Isolate our ctest runs from external environment. |
| unset(ENV{CTEST_PARALLEL_LEVEL}) |
| unset(ENV{CTEST_OUTPUT_ON_FAILURE}) |
| |
| function(run_ctest_test CASE_NAME) |
| set(CASE_CTEST_FIXTURES_ARGS "${ARGN}") |
| run_ctest(${CASE_NAME}) |
| endfunction() |
| |
| #------------------------------------------------------------ |
| # CMake configure will pass |
| #------------------------------------------------------------ |
| run_ctest_test(one INCLUDE one) |
| run_ctest_test(two INCLUDE two) |
| run_ctest_test(three INCLUDE three) |
| run_ctest_test(setupFoo INCLUDE setupFoo) |
| run_ctest_test(wontRun INCLUDE wontRun) |
| run_ctest_test(unused INCLUDE Unused) |
| |
| run_ctest_test(exclude_setup_foo |
| INCLUDE "one|two" |
| EXCLUDE_FIXTURE_SETUP "Foo" |
| ) |
| |
| run_ctest_test(exclude_setup_bar |
| INCLUDE "one|two" |
| EXCLUDE_FIXTURE_SETUP "Bar" |
| ) |
| |
| run_ctest_test(exclude_cleanup_foo |
| INCLUDE "one|two" |
| EXCLUDE_FIXTURE_CLEANUP "Foo" |
| ) |
| |
| run_ctest_test(exclude_cleanup_bar |
| INCLUDE "one|two" |
| EXCLUDE_FIXTURE_CLEANUP "Bar" |
| ) |
| |
| run_ctest_test(exclude_any_foo |
| INCLUDE "one|two" |
| EXCLUDE_FIXTURE "Foo" |
| ) |
| |
| run_ctest_test(exclude_any_bar |
| INCLUDE "one|two" |
| EXCLUDE_FIXTURE "Bar" |
| ) |
| |
| run_ctest_test(exclude_any_foobar |
| INCLUDE "one|two" |
| EXCLUDE_FIXTURE "Foo|Bar" |
| ) |
| |
| #------------------------------------------------------------ |
| # CMake configure will fail due to cyclic test dependencies |
| #------------------------------------------------------------ |
| set(CASE_CMAKELISTS_CYCLIC_CODE [[ |
| set_tests_properties(cyclicSetup PROPERTIES |
| FIXTURES_SETUP "Foo" |
| FIXTURES_REQUIRED "Foo") |
| ]]) |
| run_ctest(cyclicSetup) |
| |
| set(CASE_CMAKELISTS_CYCLIC_CODE [[ |
| set_tests_properties(cyclicCleanup PROPERTIES |
| FIXTURES_CLEANUP "Foo" |
| FIXTURES_REQUIRED "Foo") |
| ]]) |
| run_ctest(cyclicCleanup) |
| |
| #------------------------------------------------------------ |
| # Repeat some of the exclusion tests with ctest command line |
| # options instead of arguments to ctest_test(). This verifies |
| # that the command line options make it through as well. |
| #------------------------------------------------------------ |
| unset(CASE_CMAKELISTS_CYCLIC_CODE) |
| set(CASE_CTEST_FIXTURES_ARGS "") |
| |
| run_ctest(exclude_setup_foo -R "one|two" -FS Foo) |
| run_ctest(exclude_setup_foo -R "one|two" --fixture-exclude-setup Foo) |
| run_ctest(exclude_cleanup_foo -R "one|two" -FC Foo) |
| run_ctest(exclude_cleanup_foo -R "one|two" --fixture-exclude-cleanup Foo) |
| run_ctest(exclude_any_foo -R "one|two" -FA Foo) |
| run_ctest(exclude_any_foo -R "one|two" --fixture-exclude-any Foo) |