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)

#------------------------------------------------------------
# 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)
