Merge branch 'leak-fixes-33126'
[platform/upstream/dbus.git] / cmake / test / CMakeLists.txt
1 project(test)
2
3 add_definitions(${DBUS_INTERNAL_CLIENT_DEFINITIONS})
4
5 add_library(dbus_testutils STATIC
6     ${CMAKE_SOURCE_DIR}/../test/test-utils.h
7     ${CMAKE_SOURCE_DIR}/../test/test-utils.c
8 )
9 target_link_libraries(dbus_testutils ${DBUS_INTERNAL_LIBRARIES})
10
11 add_subdirectory( name-test )
12
13 set (test-service_SOURCES
14     ${CMAKE_SOURCE_DIR}/../test/test-service.c
15     ${CMAKE_SOURCE_DIR}/../test/test-utils.c
16     ${CMAKE_SOURCE_DIR}/../test/test-utils.h
17 )
18
19 set (test-names_SOURCES
20     ${CMAKE_SOURCE_DIR}/../test/test-names.c
21     ${CMAKE_SOURCE_DIR}/../test/test-utils.c
22     ${CMAKE_SOURCE_DIR}/../test/test-utils.h
23 )
24
25 set (break_loader_SOURCES
26     ${CMAKE_SOURCE_DIR}/../test/break-loader.c
27 )
28
29 set (test-shell-service_SOURCES
30     ${CMAKE_SOURCE_DIR}/../test/test-shell-service.c
31     ${CMAKE_SOURCE_DIR}/../test/test-utils.c
32     ${CMAKE_SOURCE_DIR}/../test/test-utils.h
33 )
34
35 set (shell-test_SOURCES
36         ${CMAKE_SOURCE_DIR}/../test/shell-test.c
37 )
38
39 set (spawn-test_SOURCES
40     ${CMAKE_SOURCE_DIR}/../test/spawn-test.c
41 )
42
43 set (test-exit_SOURCES
44     ${CMAKE_SOURCE_DIR}/../test/test-exit.c
45 )
46
47 set (test-segfault_SOURCES
48     ${CMAKE_SOURCE_DIR}/../test/test-segfault.c
49 )
50
51 set (test-sleep-forever_SOURCES
52     ${CMAKE_SOURCE_DIR}/../test/test-sleep-forever.c
53 )
54
55 add_executable(test-service ${test-service_SOURCES})
56 target_link_libraries(test-service ${DBUS_INTERNAL_LIBRARIES})
57
58 add_executable(test-names ${test-names_SOURCES})
59 target_link_libraries(test-names ${DBUS_INTERNAL_LIBRARIES})
60
61 add_executable(shell-test ${shell-test_SOURCES})
62 target_link_libraries(shell-test ${DBUS_INTERNAL_LIBRARIES})
63 ADD_TEST(shell-test ${EXECUTABLE_OUTPUT_PATH}/shell-test${EXT})
64
65 add_executable(test-shell-service ${test-shell-service_SOURCES})
66 target_link_libraries(test-shell-service ${DBUS_INTERNAL_LIBRARIES})
67
68 add_executable(spawn-test ${spawn-test_SOURCES})
69 target_link_libraries(spawn-test ${DBUS_INTERNAL_LIBRARIES})
70
71 add_executable(test-exit ${test-exit_SOURCES})
72 target_link_libraries(test-exit ${DBUS_INTERNAL_LIBRARIES})
73
74 add_executable(test-segfault ${test-segfault_SOURCES})
75 target_link_libraries(test-segfault ${DBUS_INTERNAL_LIBRARIES})
76
77 add_executable(test-sleep-forever ${test-sleep-forever_SOURCES})
78 target_link_libraries(test-sleep-forever ${DBUS_INTERNAL_LIBRARIES})
79
80 ### keep these in creation order, i.e. uppermost dirs first 
81 set (TESTDIRS
82     test/data
83     test/data/valid-messages
84     test/data/invalid-messages
85     test/data/incomplete-messages
86     test/data/auth
87     test/data/sha-1
88     test/data/valid-config-files
89     test/data/valid-config-files/basic.d
90     test/data/valid-config-files/system.d
91     test/data/valid-config-files-system
92     test/data/valid-introspection-files
93     test/data/valid-messages
94     test/data/valid-service-files
95     test/data/valid-service-files-system
96     test/data/invalid-config-files
97     test/data/invalid-config-files-system
98     test/data/invalid-messages
99     test/data/invalid-service-files-system
100     test/data/equiv-config-files
101     test/data/equiv-config-files/basic
102     test/data/equiv-config-files/basic/basic.d
103     test/data/equiv-config-files/entities
104     test/data/equiv-config-files/entities/basic.d
105 )
106 set (CONFIG_VERBOSE 0)
107
108 ### copy tests to builddir so that generated tests and static tests 
109 ### are all in one place.
110 MESSAGE(STATUS "Copying test files to test directory")
111 FOREACH(FILE_TYPE *.message *.message-raw *.auth-script *.sha1 *.txt *.conf *.service)
112     FOREACH(DIR ${TESTDIRS})
113         FILE(GLOB FILES "${CMAKE_SOURCE_DIR}/../${DIR}/${FILE_TYPE}" )
114         FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${DIR})
115         FOREACH(FILE ${FILES})
116             GET_FILENAME_COMPONENT(FILENAME ${FILE} NAME)
117             SET (TARGET ${CMAKE_BINARY_DIR}/${DIR}/${FILENAME})
118             configure_file(${FILE} ${TARGET} COPYONLY)
119             IF (CONFIG_VERBOSE)
120                 MESSAGE("${FILE}")
121             ENDIF (CONFIG_VERBOSE)
122         ENDFOREACH(FILE)
123     ENDFOREACH(DIR)
124 ENDFOREACH(FILE_TYPE)
125
126 ### generate test files
127 MESSAGE(STATUS "Generating test files from templates into test directory")
128
129 FOREACH(FILE_TYPE *.conf.in *.service.in)
130   FOREACH(DIR ${TESTDIRS})
131     FILE(GLOB FILES "${CMAKE_SOURCE_DIR}/../${DIR}/${FILE_TYPE}" )
132     FILE(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${DIR})
133     FOREACH(FILE ${FILES})
134       GET_FILENAME_COMPONENT(FILENAME ${FILE} NAME)
135       STRING(REGEX REPLACE "\\.in$" "" FILENAME ${FILENAME})
136       SET (TARGET ${CMAKE_BINARY_DIR}/${DIR}/${FILENAME})
137       STRING(REGEX REPLACE "\\.in$" ".cmake" _file ${FILE})
138       IF (EXISTS ${_file})
139         SET (FILE ${_file})
140       ENDIF (EXISTS ${_file})
141       configure_file(${FILE} ${TARGET} @ONLY IMMEDIATE)
142       IF (CONFIG_VERBOSE)
143         MESSAGE("${FILE}")
144       ENDIF (CONFIG_VERBOSE)
145     ENDFOREACH(FILE)
146   ENDFOREACH(DIR)
147 ENDFOREACH(FILE_TYPE)
148
149 MESSAGE(STATUS "Copying generated bus config files to test directory")
150 set (OUTDIR ${CMAKE_BINARY_DIR}/test/data/valid-config-files)
151
152 FILE(GLOB FILES "${CMAKE_BINARY_DIR}/bus/*.conf" )
153 FILE(MAKE_DIRECTORY ${OUTDIR})
154 FOREACH(FILE ${FILES})
155     GET_FILENAME_COMPONENT(FILENAME ${FILE} NAME)
156     SET (TARGET ${OUTDIR}/${FILENAME})
157     configure_file(${FILE} ${TARGET} COPYONLY)
158     IF (CONFIG_VERBOSE)
159         MESSAGE("FROM: ${FILE}\nTO: ${TARGET}\n")
160     ENDIF (CONFIG_VERBOSE)
161 ENDFOREACH(FILE)
162
163 # todo: for installation the TEST_..._BINARY variables must reflect the 
164 #       installation dir or has to be defined relative
165 #