cmake_minimum_required (VERSION 3.8.0)
project(ctest_fixtures LANGUAGES NONE)
include(CTest)

macro(passTest testName)
  set(someFile "${CMAKE_CURRENT_SOURCE_DIR}/test.cmake")
  add_test(NAME ${testName}
           COMMAND ${CMAKE_COMMAND} -E compare_files "${someFile}" "${someFile}")
endmacro()

macro(failTest testName)
  set(someFile "${CMAKE_CURRENT_SOURCE_DIR}/test.cmake")
  add_test(NAME ${testName}
           COMMAND ${CMAKE_COMMAND} -E compare_files "${someFile}" "${someFile}xxx")
endmacro()

# Intersperse actual tests among setup/cleanup tests so that we don't
# define them in the same order as they need to be executed. Numbers
# at the end of each line correspond to the test numbers ctest will
# use for each test.
passTest(one)           # 1
passTest(setupBoth)     # 2
passTest(setupFoo)      # 3
passTest(setupMeta)     # 4
passTest(cleanupFoo)    # 5
passTest(two)           # 6
passTest(cleanupBar)    # 7
passTest(three)         # 8
failTest(setupFails)    # 9

# Special case, test executable always missing to verify fixture dependencies
# are checked before existence of test executable to be run
add_test(NAME wontRun COMMAND iDoNotExist)  # 10

passTest(cyclicSetup)   # 11
passTest(cyclicCleanup) # 12
passTest(cleanupUnused) # 13
passTest(setupUnused)   # 14

# Define fixture dependencies and ordering
set_tests_properties(setupFoo   PROPERTIES FIXTURES_SETUP    "Foo")
set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP  "Foo")

set_tests_properties(setupBoth  PROPERTIES FIXTURES_SETUP    "Foo;Bar")
set_tests_properties(cleanupBar PROPERTIES FIXTURES_CLEANUP  "Bar")

set_tests_properties(setupMeta  PROPERTIES FIXTURES_SETUP    "Meta"
                                           FIXTURES_REQUIRED "Foo;Bar")

set_tests_properties(setupBoth  PROPERTIES DEPENDS           setupFoo)

set_tests_properties(setupFails PROPERTIES FIXTURES_SETUP    "Fails")

set_tests_properties(one        PROPERTIES FIXTURES_REQUIRED "Other;Foo")
set_tests_properties(two        PROPERTIES FIXTURES_REQUIRED "Bar")
set_tests_properties(three      PROPERTIES FIXTURES_REQUIRED "Meta;Bar")
set_tests_properties(wontRun    PROPERTIES FIXTURES_REQUIRED "Fails")

set_tests_properties(cleanupUnused PROPERTIES FIXTURES_CLEANUP "Unused")
set_tests_properties(setupUnused   PROPERTIES FIXTURES_SETUP   "Unused")

@CASE_CMAKELISTS_CYCLIC_CODE@

# These are the cases verified by the main cmake build
#
#   Regex:         Test case list (in order)
#    one            3, 2, 1, 5
#    two            2, 6, 7
#    three          3, 2, 4, 5, 8, 7
#    setupFoo       3
#    wontRun        9, 10
#    cyclicSetup    -NA- (configure fails)
#    cyclicCleanup  -NA- (configure fails)
#    unused         14, 13
#
# In the case of asking for just setupFoo, since there are
# no tests using the Foo fixture, we do NOT expect cleanupFoo
# to be executed. It is important not to pull in cleanupFoo
# if setupFoo is explicitly requested and no other test requires
# the Foo fixture, otherwise it would not be possible to run
# just a setup or cleanup test in isolation (likely to be
# needed during initial creation of such test cases).
#
# For the wontRun case, test 9 fails and test 10 should not run.
# The result of the set of tests should be failure, which is
# verified by the main cmake build's tests.
#
# For the two cyclic test cases invoked by the main cmake build,
# FIXTURES_... properties are added to the relevant test at the
# location marked with CASE_CMAKELISTS_CYCLIC_CODE. This creates
# a self-dependency which causes the configure step to fail.
