1include(RunCMake)
2
3# Function called in *-check.cmake scripts to check api files.
4function(check_api expect)
5  file(GLOB_RECURSE actual
6    LIST_DIRECTORIES TRUE
7    RELATIVE ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1
8    ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1/*
9    )
10  if(NOT "${actual}" MATCHES "${expect}")
11    set(RunCMake_TEST_FAILED "API files:
12  ${actual}
13do not match what we expected:
14  ${expect}
15in directory:
16  ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1" PARENT_SCOPE)
17  endif()
18endfunction()
19
20function(check_python case)
21  if(RunCMake_TEST_FAILED OR NOT PYTHON_EXECUTABLE)
22    return()
23  endif()
24  file(GLOB index ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1/reply/index-*.json)
25  execute_process(
26    COMMAND ${PYTHON_EXECUTABLE} "${RunCMake_SOURCE_DIR}/${case}-check.py" "${index}" "${CMAKE_CXX_COMPILER_ID}"
27      "${RunCMake_TEST_BINARY_DIR}"
28    RESULT_VARIABLE result
29    OUTPUT_VARIABLE output
30    ERROR_VARIABLE output
31    )
32  if(NOT result EQUAL 0)
33    string(REPLACE "\n" "\n  " output "  ${output}")
34    set(RunCMake_TEST_FAILED "Unexpected index:\n${output}" PARENT_SCOPE)
35  endif()
36endfunction()
37
38if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
39  set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release\\;MinSizeRel\\;RelWithDebInfo")
40endif()
41
42run_cmake(Nothing)
43run_cmake(Empty)
44run_cmake(EmptyClient)
45run_cmake(Stale)
46run_cmake(SharedStateless)
47run_cmake(ClientStateless)
48run_cmake(MixedStateless)
49run_cmake(DuplicateStateless)
50run_cmake(ClientStateful)
51
52function(run_object object)
53  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${object}-build)
54  list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0118=NEW)
55  run_cmake(${object})
56  list(POP_BACK RunCMake_TEST_OPTIONS)
57  set(RunCMake_TEST_NO_CLEAN 1)
58  run_cmake_command(${object}-SharedStateless ${CMAKE_COMMAND} .)
59  run_cmake_command(${object}-ClientStateless ${CMAKE_COMMAND} .)
60  run_cmake_command(${object}-ClientStateful ${CMAKE_COMMAND} .)
61endfunction()
62
63run_object(codemodel-v2)
64run_object(cache-v2)
65run_object(cmakeFiles-v1)
66run_object(toolchains-v1)
67