1# Test of the functions in the CMake Modules file:
2#
3include(GetPrerequisites)
4
5set(CMAKE_EXECUTABLE_SUFFIX "@CMAKE_EXECUTABLE_SUFFIX@")
6
7
8message(STATUS "=============================================================================")
9message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
10message(STATUS "")
11message(STATUS "Configuration '${Configuration}'")
12message(STATUS "CMAKE_COMMAND='${CMAKE_COMMAND}'")
13message(STATUS "CMAKE_EXECUTABLE_SUFFIX='${CMAKE_EXECUTABLE_SUFFIX}'")
14message(STATUS "")
15
16
17function(stresstest_list_prerequisites file)
18  message(STATUS "=============================================================================")
19  message(STATUS "stresstest_list_prerequisites file='${file}'")
20  message(STATUS "")
21
22  get_filename_component(file_full "${file}" ABSOLUTE)
23
24  message(STATUS "list_prerequisites '${file_full}' 0 0 0")
25  list_prerequisites("${file_full}" 0 0 0)
26  message(STATUS "")
27
28  message(STATUS "list_prerequisites '${file_full}' 0 0 1")
29  list_prerequisites("${file_full}" 0 0 1)
30  message(STATUS "")
31
32  message(STATUS "list_prerequisites '${file_full}' 0 1 0")
33  list_prerequisites("${file_full}" 0 1 0)
34  message(STATUS "")
35
36  message(STATUS "list_prerequisites '${file_full}' 0 1 1")
37  list_prerequisites("${file_full}" 0 1 1)
38  message(STATUS "")
39
40  message(STATUS "list_prerequisites '${file_full}' 1 0 0")
41  list_prerequisites("${file_full}" 1 0 0)
42  message(STATUS "")
43
44  message(STATUS "list_prerequisites '${file_full}' 1 0 1")
45  list_prerequisites("${file_full}" 1 0 1)
46  message(STATUS "")
47
48  message(STATUS "list_prerequisites '${file_full}' 1 1 0")
49  list_prerequisites("${file_full}" 1 1 0)
50  message(STATUS "")
51
52  message(STATUS "list_prerequisites '${file_full}' 1 1 1")
53  list_prerequisites("${file_full}" 1 1 1)
54  message(STATUS "")
55
56  message(STATUS "=============================================================================")
57  message(STATUS "")
58endfunction()
59
60
61function(test_cmake_executables)
62  message(STATUS "=============================================================================")
63  message(STATUS "Loop over all executable files in the same directory with CMake")
64  message(STATUS "")
65
66  get_filename_component(cmake_bin_dir "${CMAKE_COMMAND}" PATH)
67  list_prerequisites_by_glob(GLOB "${cmake_bin_dir}/*" 0 0 1)
68endfunction()
69
70
71message(STATUS "=============================================================================")
72message(STATUS "Simplest test - list all the direct prerequisites of CMake itself")
73message(STATUS "")
74list_prerequisites("${CMAKE_COMMAND}" 0 0 1)
75message(STATUS "")
76
77message(STATUS "=============================================================================")
78string(LENGTH "$ENV{PATH}" PATH_LENGTH_BEGIN)
79message(STATUS "Begin PATH length is: ${PATH_LENGTH_BEGIN}")
80message(STATUS "")
81
82
83# Leave the code for these tests in here, but turn them off by default... they
84# take longer than they're worth during development...
85#
86set(do_testdefaults 0)
87if(do_testdefaults)
88  message(STATUS "=============================================================================")
89  message(STATUS "Test default argument values to list_prerequisites function...")
90  message(STATUS "")
91  list_prerequisites("${CMAKE_COMMAND}")
92  message(STATUS "")
93endif()
94
95
96set(do_stresstest 0)
97if(do_stresstest)
98  message(STATUS "=============================================================================")
99  message(STATUS "stresstest_list_prerequisites with CMake itself...")
100  message(STATUS "")
101  stresstest_list_prerequisites("${CMAKE_COMMAND}")
102  message(STATUS "")
103endif()
104
105
106test_cmake_executables()
107
108
109message(STATUS "=============================================================================")
110message(STATUS "Test overriding 'gp_tool' with bogus value")
111message(STATUS "")
112set(gp_tool "bogus")
113list_prerequisites("${CMAKE_COMMAND}" 0 0 0)
114set(gp_tool)
115message(STATUS "")
116
117
118message(STATUS "=============================================================================")
119message(STATUS "Test overriding 'gp_tool' with value unlikely to be found")
120message(STATUS "")
121if(APPLE)
122  set(gp_tool "dumpbin")
123else()
124  set(gp_tool "otool")
125endif()
126set(gp_cmd "gp_cmd-NOTFOUND")
127list_prerequisites("${CMAKE_COMMAND}" 0 0 0)
128set(gp_cmd)
129set(gp_tool)
130message(STATUS "")
131
132
133message(STATUS "=============================================================================")
134message(STATUS "All variables: (Make sure functions/macros are not leaving stuff around...")
135message(STATUS "                Only variables predefined by CMake and defined in this")
136message(STATUS "                test script file should be listed here...)")
137message(STATUS "")
138get_cmake_property(vs VARIABLES)
139foreach(v ${vs})
140  message(STATUS "${v}='${${v}}'")
141endforeach()
142message(STATUS "")
143
144message(STATUS "=============================================================================")
145string(LENGTH "$ENV{PATH}" PATH_LENGTH_END)
146message(STATUS "Final PATH length is: ${PATH_LENGTH_END}")
147
148if(PATH_LENGTH_END GREATER ${PATH_LENGTH_BEGIN})
149    message(FATAL_ERROR "list_prerequisties is endlessly appending the path of gp_tool to the PATH.")
150endif()
151message(STATUS "")
152
153
154message(STATUS "=============================================================================")
155message(STATUS "End of test")
156message(STATUS "")
157