61dce17bd83a3a0a789f1003512dbba7ad59483a
[platform/upstream/cmake.git] / Tests / RunCMake / FileAPI / RunCMakeTest.cmake
1 include(RunCMake)
2
3 # Function called in *-check.cmake scripts to check api files.
4 function(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}
13 do not match what we expected:
14   ${expect}
15 in directory:
16   ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1" PARENT_SCOPE)
17   endif()
18 endfunction()
19
20 function(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()
36 endfunction()
37
38 if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
39   set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release\\;MinSizeRel\\;RelWithDebInfo")
40 endif()
41
42 run_cmake(Nothing)
43 run_cmake(Empty)
44 run_cmake(EmptyClient)
45 run_cmake(Stale)
46 run_cmake(SharedStateless)
47 run_cmake(ClientStateless)
48 run_cmake(MixedStateless)
49 run_cmake(DuplicateStateless)
50 run_cmake(ClientStateful)
51
52 function(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} .)
61 endfunction()
62
63 run_object(codemodel-v2)
64 run_object(cache-v2)
65 run_object(cmakeFiles-v1)
66 run_object(toolchains-v1)