]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Use macros for test and helper executable targets on cmake build system.
authorRalf Habacker <ralf.habacker@freenet.de>
Thu, 10 Oct 2013 21:42:57 +0000 (23:42 +0200)
committerRalf Habacker <ralf.habacker@freenet.de>
Fri, 10 Jan 2014 00:24:56 +0000 (01:24 +0100)
The new macros add_test_executables and add helper_executables provides a
platform independent way for specifing dbus test and service applications.

On native Windows and Linux/UNIX systems the test applications are
directly runable.

When cross compiling for Windows on Linux test applications could be
executed on the Linux host system with the help of wine and activated
binfmt_misc support for wine.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=41252
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
cmake/bus/CMakeLists.txt
cmake/dbus/CMakeLists.txt
cmake/modules/Macros.cmake
cmake/test/CMakeLists.txt
cmake/test/name-test/CMakeLists.txt

index d2217bbb5bd2d3188b074921719631f3b4824607..56235315d7cf787abb91f8e18b10a31285dda4c5 100644 (file)
@@ -106,10 +106,9 @@ if (DBUS_SERVICE)
 endif (DBUS_SERVICE)
 
 if (DBUS_ENABLE_EMBEDDED_TESTS)
-       add_executable(bus-test ${BUS_SOURCES} ${BUS_DIR}/test-main.c)
-       target_link_libraries(bus-test ${DBUS_INTERNAL_LIBRARIES} ${XML_LIBRARY})
+       set(SOURCES ${BUS_SOURCES} ${BUS_DIR}/test-main.c)
+       add_test_executable(bus-test "${SOURCES}"  ${DBUS_INTERNAL_LIBRARIES} ${XML_LIBRARY})
        set_target_properties(bus-test PROPERTIES COMPILE_FLAGS ${DBUS_INTERNAL_CLIENT_DEFINITIONS})
-       add_test(bus-test ${EXECUTABLE_OUTPUT_PATH}/bus-test ${CMAKE_BINARY_DIR}/test/data)
 endif (DBUS_ENABLE_EMBEDDED_TESTS)
 
 if(MSVC)
@@ -146,11 +145,9 @@ if(NOT WIN32)
    set_target_properties(dbus-daemon-launch-helper-test PROPERTIES COMPILE_FLAGS "-DACTIVATION_LAUNCHER_TEST")
    target_link_libraries(dbus-daemon-launch-helper-test ${DBUS_INTERNAL_LIBRARIES} ${XML_LIBRARY} )
    
-   add_executable(bus-test-launch-helper ${LAUNCH_HELPER_SOURCES}  ${BUS_DIR}/test-launch-helper.c)
+   set (SOURCES ${LAUNCH_HELPER_SOURCES} ${BUS_DIR}/test-launch-helper.c)
+   add_test_executable(bus-test-launch-helper "${SOURCES}"  ${DBUS_INTERNAL_LIBRARIES} ${XML_LIBRARY})
    set_target_properties(bus-test-launch-helper PROPERTIES COMPILE_FLAGS "-DACTIVATION_LAUNCHER_TEST -DACTIVATION_LAUNCHER_DO_OOM")
-   target_link_libraries(bus-test-launch-helper ${DBUS_INTERNAL_LIBRARIES} ${XML_LIBRARY} )
-   add_test(bus-test-launch-helper ${EXECUTABLE_OUTPUT_PATH}/bus-test-launch-helper )
-
 endif(NOT WIN32)
 
 #### Init scripts fun
index 1d2086472752a4d5bbffb803cfc96939318b561d..cea22985c591ab64a718ab56132659b0fe55df68 100644 (file)
@@ -297,10 +297,7 @@ else(WIN32)
 endif(WIN32)
 
 if (DBUS_ENABLE_EMBEDDED_TESTS)
-       set (TESTS_ENVIRONMENT "DBUS_TEST_DATA=${CMAKE_SOURCE_DIR}/test/data DBUS_TEST_HOMEDIR=${CMAKE_BUILD_DIR}/dbus")
-       ADD_EXECUTABLE(dbus-test ${CMAKE_SOURCE_DIR}/../dbus/dbus-test-main.c)
-       target_link_libraries(dbus-test ${DBUS_INTERNAL_LIBRARIES})
-       add_test(dbus-test ${EXECUTABLE_OUTPUT_PATH}/dbus-test ${CMAKE_SOURCE_DIR}/../test/data)
+       add_test_executable(dbus-test ${CMAKE_SOURCE_DIR}/../dbus/dbus-test-main.c ${DBUS_INTERNAL_LIBRARIES})
        set_target_properties(dbus-test PROPERTIES COMPILE_FLAGS ${DBUS_INTERNAL_CLIENT_DEFINITIONS})
 ENDIF (DBUS_ENABLE_EMBEDDED_TESTS)
 
index adb34b51611cb551e6d43fa8bb694ae7904a7054..9a1519d63a8f295f572453ddb4c1eed6a46e7ab5 100644 (file)
@@ -1,4 +1,3 @@
-
 MACRO(TIMESTAMP RESULT)
     if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
         EXECUTE_PROCESS(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE DATE)
@@ -10,3 +9,29 @@ MACRO(TIMESTAMP RESULT)
         EXECUTE_PROCESS(COMMAND "date" "+%Y%m%d%H%M" OUTPUT_VARIABLE ${RESULT})
     endif ()
 ENDMACRO()
+
+macro(add_test_executable _target _source)
+    add_executable(${_target} ${_source})
+    target_link_libraries(${_target} ${ARGN})
+    if (CMAKE_CROSSCOMPILING AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
+        # run tests with binfmt_misc
+        set(PREFIX "z:")
+        set(_env "DBUS_TEST_DAEMON=${PREFIX}${CMAKE_BINARY_DIR}/bin/dbus-daemon${EXEEXT}")
+        add_test(NAME ${_target} COMMAND $<TARGET_FILE:${_target}>)
+    else()
+        set(PREFIX)
+        set(_env "DBUS_TEST_DAEMON=${CMAKE_BINARY_DIR}/bin/dbus-daemon${EXEEXT}")
+        add_test(NAME ${_target} COMMAND $<TARGET_FILE:${_target}>)
+    endif()
+    list(APPEND _env "DBUS_SESSION_BUS_ADDRESS=")
+    list(APPEND _env "DBUS_FATAL_WARNINGS=1")
+    list(APPEND _env "DBUS_BLOCK_ON_ABORT=1")
+    list(APPEND _env "DBUS_TEST_DATA=${PREFIX}${CMAKE_BINARY_DIR}/test/data")
+    list(APPEND _env "DBUS_TEST_HOMEDIR=${PREFIX}${CMAKE_BINARY_DIR}/dbus")
+    set_tests_properties(${_target} PROPERTIES ENVIRONMENT "${_env}")
+endmacro(add_test_executable)
+
+macro(add_helper_executable _target _source)
+    add_executable(${_target} ${_source})
+    target_link_libraries(${_target} ${ARGN})
+endmacro(add_helper_executable)
index 6c1a62c05560ffb0095caaf53f563350a82d129f..327b0924b21a29d67b4c5fa0845adc296a0889d3 100644 (file)
@@ -47,31 +47,15 @@ set (test-sleep-forever_SOURCES
     ${CMAKE_SOURCE_DIR}/../test/test-sleep-forever.c
 )
 
-add_executable(test-service ${test-service_SOURCES})
-target_link_libraries(test-service dbus-testutils)
-
-add_executable(test-names ${test-names_SOURCES})
-target_link_libraries(test-names dbus-testutils)
-
-add_executable(shell-test ${shell-test_SOURCES})
-target_link_libraries(shell-test ${DBUS_INTERNAL_LIBRARIES})
-ADD_TEST(shell-test ${EXECUTABLE_OUTPUT_PATH}/shell-test${EXEEXT})
-
-add_executable(test-shell-service ${test-shell-service_SOURCES})
-target_link_libraries(test-shell-service dbus-testutils)
-
-add_executable(spawn-test ${spawn-test_SOURCES})
-target_link_libraries(spawn-test ${DBUS_INTERNAL_LIBRARIES})
-
-add_executable(test-exit ${test-exit_SOURCES})
-target_link_libraries(test-exit ${DBUS_INTERNAL_LIBRARIES})
-
-add_executable(test-segfault ${test-segfault_SOURCES})
-target_link_libraries(test-segfault ${DBUS_INTERNAL_LIBRARIES})
-
-add_executable(test-sleep-forever ${test-sleep-forever_SOURCES})
-target_link_libraries(test-sleep-forever ${DBUS_INTERNAL_LIBRARIES})
-
+add_helper_executable(test-service ${test-service_SOURCES} dbus-testutils)
+add_helper_executable(test-names ${test-names_SOURCES} dbus-testutils)
+add_test_executable(shell-test ${shell-test_SOURCES} ${DBUS_INTERNAL_LIBRARIES})
+add_test_executable(test-printf ${CMAKE_SOURCE_DIR}/../test/internals/printf.c dbus-testutils)
+add_helper_executable(test-shell-service ${test-shell-service_SOURCES} dbus-testutils)
+add_helper_executable(spawn-test ${spawn-test_SOURCES} ${DBUS_INTERNAL_LIBRARIES})
+add_helper_executable(test-exit ${test-exit_SOURCES} ${DBUS_INTERNAL_LIBRARIES})
+add_helper_executable(test-segfault ${test-segfault_SOURCES} ${DBUS_INTERNAL_LIBRARIES})
+add_helper_executable(test-sleep-forever ${test-sleep-forever_SOURCES} ${DBUS_INTERNAL_LIBRARIES})
 
 if(DBUS_WITH_GLIB)
     message(STATUS "with glib test apps")
@@ -84,37 +68,18 @@ if(DBUS_WITH_GLIB)
         ${GOBJECT_INCLUDE_DIR}
         ${CMAKE_SOURCE_DIR}/../test
     )
-    set (TEST_LIBRARIES dbus-testutils ${GLIB2_LIBRARIES} ${GOBJECT_LIBRARIES})
-
-    add_executable(test-corrupt ${CMAKE_SOURCE_DIR}/../test/corrupt.c)
-    target_link_libraries(test-corrupt ${TEST_LIBRARIES})
-
-    add_executable(test-dbus-daemon ${CMAKE_SOURCE_DIR}/../test/dbus-daemon.c)
-    target_link_libraries(test-dbus-daemon ${TEST_LIBRARIES})
-
-    add_executable(test-dbus-daemon-eavesdrop ${CMAKE_SOURCE_DIR}/../test/dbus-daemon-eavesdrop.c)
-    target_link_libraries(test-dbus-daemon-eavesdrop ${TEST_LIBRARIES})
-
-    add_executable(test-loopback ${CMAKE_SOURCE_DIR}/../test/loopback.c)
-    target_link_libraries(test-loopback ${TEST_LIBRARIES})
-
-    add_executable(test-marshal ${CMAKE_SOURCE_DIR}/../test/marshal.c)
-    target_link_libraries(test-marshal ${TEST_LIBRARIES})
-
-    add_executable(test-refs ${CMAKE_SOURCE_DIR}/../test/internals/refs.c)
-    target_link_libraries(test-refs ${TEST_LIBRARIES})
-
-    add_executable(test-relay ${CMAKE_SOURCE_DIR}/../test/relay.c)
-    target_link_libraries(test-relay ${TEST_LIBRARIES})
-
-    add_executable(test-syntax ${CMAKE_SOURCE_DIR}/../test/syntax.c)
-    target_link_libraries(test-syntax ${TEST_LIBRARIES})
-
-    add_executable(test-syslog ${CMAKE_SOURCE_DIR}/../test/internals/syslog.c)
-    target_link_libraries(test-syslog ${TEST_LIBRARIES})
-
-    add_executable(manual-authz ${CMAKE_SOURCE_DIR}/../test/manual-authz.c)
-    target_link_libraries(manual-authz ${TEST_LIBRARIES})
+    set(TEST_LIBRARIES ${DBUS_INTERNAL_LIBRARIES} dbus-testutils ${GLIB2_LIBRARIES} ${GOBJECT_LIBRARIES})
+
+    add_test_executable(test-corrupt ${CMAKE_SOURCE_DIR}/../test/corrupt.c ${TEST_LIBRARIES})
+    add_test_executable(test-dbus-daemon ${CMAKE_SOURCE_DIR}/../test/dbus-daemon.c ${TEST_LIBRARIES})
+    add_test_executable(test-dbus-daemon-eavesdrop ${CMAKE_SOURCE_DIR}/../test/dbus-daemon-eavesdrop.c ${TEST_LIBRARIES})
+    add_test_executable(test-loopback ${CMAKE_SOURCE_DIR}/../test/loopback.c ${TEST_LIBRARIES})
+    add_test_executable(test-marshal ${CMAKE_SOURCE_DIR}/../test/marshal.c ${TEST_LIBRARIES})
+    add_test_executable(test-refs ${CMAKE_SOURCE_DIR}/../test/internals/refs.c ${TEST_LIBRARIES})
+    add_test_executable(test-relay ${CMAKE_SOURCE_DIR}/../test/relay.c ${TEST_LIBRARIES})
+    add_test_executable(test-syntax ${CMAKE_SOURCE_DIR}/../test/syntax.c ${TEST_LIBRARIES})
+    add_test_executable(test-syslog ${CMAKE_SOURCE_DIR}/../test/internals/syslog.c ${TEST_LIBRARIES})
+    add_helper_executable(manual-authz ${CMAKE_SOURCE_DIR}/../test/manual-authz.c ${TEST_LIBRARIES})
 endif()
 
 ### keep these in creation order, i.e. uppermost dirs first 
@@ -210,4 +175,4 @@ add_custom_target(check
     COMMAND ctest -R test-relay
     COMMAND ctest -R test-syntax
     COMMAND ctest -R test-syslog
-)
\ No newline at end of file
+)
index bf096ba7eb44e56a16458263608d2d3b3a276079..befb28f9344da283faaa78fec2132f206f745f8d 100644 (file)
@@ -4,36 +4,12 @@ set (NAMEtest-DIR ../../../test/name-test)
 
 add_definitions(${DBUS_INTERNAL_CLIENT_DEFINITIONS})
 
-add_executable(test-pending-call-dispatch ${NAMEtest-DIR}/test-pending-call-dispatch.c)
-target_link_libraries(test-pending-call-dispatch ${DBUS_INTERNAL_LIBRARIES})
-ADD_TEST(test-pending-call-dispatch ${EXECUTABLE_OUTPUT_PATH}/test-pending-call-dispatch)
-
-add_executable(test-pending-call-timeout ${NAMEtest-DIR}/test-pending-call-timeout.c)
-target_link_libraries(test-pending-call-timeout ${DBUS_INTERNAL_LIBRARIES})
-ADD_TEST(test-pending-call-timeout ${EXECUTABLE_OUTPUT_PATH}/test-pending-call-timeout)
-
-add_executable(test-thread-init ${NAMEtest-DIR}/test-threads-init.c)
-target_link_libraries(test-thread-init ${DBUS_INTERNAL_LIBRARIES})
-ADD_TEST(test-thread-init ${EXECUTABLE_OUTPUT_PATH}/test-thread-init)
-
-add_executable(test-ids ${NAMEtest-DIR}/test-ids.c)
-target_link_libraries(test-ids ${DBUS_INTERNAL_LIBRARIES})
-ADD_TEST(test-ids ${EXECUTABLE_OUTPUT_PATH}/test-ids)
-
-add_executable(test-shutdown ${NAMEtest-DIR}/test-shutdown.c)
-target_link_libraries(test-shutdown dbus-testutils)
-ADD_TEST(test-shutdown ${EXECUTABLE_OUTPUT_PATH}/test-shutdown)
-
-add_executable(test-privserver ${NAMEtest-DIR}/test-privserver.c)
-target_link_libraries(test-privserver dbus-testutils)
-ADD_TEST(test-privserver ${EXECUTABLE_OUTPUT_PATH}/test-privserver)
-
-add_executable(test-privserver-client ${NAMEtest-DIR}/test-privserver-client.c)
-target_link_libraries(test-privserver-client dbus-testutils)
-ADD_TEST(test-privserver-client ${EXECUTABLE_OUTPUT_PATH}/test-privserver-client)
-
-add_executable(test-autolaunch ${NAMEtest-DIR}/test-autolaunch.c)
-target_link_libraries(test-autolaunch dbus-testutils)
-ADD_TEST(test-autolaunch ${EXECUTABLE_OUTPUT_PATH}/test-autolaunch)
-
+add_helper_executable(test-pending-call-dispatch ${NAMEtest-DIR}/test-pending-call-dispatch.c ${DBUS_INTERNAL_LIBRARIES})
+add_helper_executable(test-pending-call-timeout ${NAMEtest-DIR}/test-pending-call-timeout.c ${DBUS_INTERNAL_LIBRARIES})
+add_helper_executable(test-thread-init ${NAMEtest-DIR}/test-threads-init.c ${DBUS_INTERNAL_LIBRARIES})
+add_helper_executable(test-ids ${NAMEtest-DIR}/test-ids.c ${DBUS_INTERNAL_LIBRARIES})
+add_helper_executable(test-shutdown ${NAMEtest-DIR}/test-shutdown.c dbus-testutils)
+add_helper_executable(test-privserver ${NAMEtest-DIR}/test-privserver.c dbus-testutils)
+add_helper_executable(test-privserver-client ${NAMEtest-DIR}/test-privserver-client.c dbus-testutils)
+add_helper_executable(test-autolaunch ${NAMEtest-DIR}/test-autolaunch.c dbus-testutils)
 endif (DBUS_ENABLE_EMBEDDED_TESTS)