summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2018-12-17 16:13:00 +0100
committerRalf Habacker <ralf.habacker@freenet.de>2018-12-17 16:25:12 +0100
commit578ea41d8c13401e890951209afa8085f66ee72b (patch)
tree7828b0ca69f6c920ecdcf77f0ce46f6af4075e6e /cmake
parenta9e25f06c8010193f4df5476115614a34630cdf0 (diff)
downloaddbus-578ea41d8c13401e890951209afa8085f66ee72b.tar.gz
Add cmake support for session based test executables
This patch introduces a new cmake macro add_session_test_executable, which uses dbus-run-session to start a dbus-daemon process with a temporary session bus in the background and the desired client file. add_session_test_executable requires additional environment variables defined in the top level CMakeLists.txt. Bug: https://gitlab.freedesktop.org/dbus/dbus/issues/135 Signed-off-by: Ralf Habacker <ralf.habacker@freenet.de>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/CMakeLists.txt1
-rw-r--r--cmake/modules/Macros.cmake26
-rw-r--r--cmake/test/name-test/CMakeLists.txt13
3 files changed, 34 insertions, 6 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 9cc1cfe7..91da59e2 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -488,6 +488,7 @@ if (DBUS_BUILD_TESTS)
set(DBUS_TEST_DAEMON ${Z_DRIVE_IF_WINE}${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/dbus-daemon${EXEEXT})
set(DBUS_TEST_DBUS_LAUNCH ${Z_DRIVE_IF_WINE}${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/dbus-launch${EXEEXT})
set(DBUS_TEST_HOMEDIR ${Z_DRIVE_IF_WINE}${CMAKE_BINARY_DIR}/dbus)
+ set(DBUS_TEST_RUN_SESSION ${Z_DRIVE_IF_WINE}${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/dbus-run-session${EXEEXT}
set(TEST_LAUNCH_HELPER_BINARY ${Z_DRIVE_IF_WINE}${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/dbus-daemon-launch-helper-test${EXEEXT})
if (UNIX)
set(TEST_SOCKET_DIR ${DBUS_SESSION_SOCKET_DIR})
diff --git a/cmake/modules/Macros.cmake b/cmake/modules/Macros.cmake
index 08fbfba6..4e635057 100644
--- a/cmake/modules/Macros.cmake
+++ b/cmake/modules/Macros.cmake
@@ -78,6 +78,32 @@ macro(add_helper_executable _target _source)
target_link_libraries(${_target} ${ARGN})
endmacro(add_helper_executable)
+macro(add_session_test_executable _target _source)
+ set(_sources "${_source}")
+ if(WIN32 AND NOT MSVC)
+ # avoid triggering UAC
+ add_uac_manifest(_sources)
+ endif()
+ add_executable(${_target} ${_sources})
+ target_link_libraries(${_target} ${ARGN})
+ add_test(NAME ${_target}
+ COMMAND
+ ${TEST_WRAPPER}
+ ${DBUS_TEST_RUN_SESSION}
+ --config-file=${DBUS_TEST_DATA}/valid-config-files/tmp-session.conf
+ --dbus-daemon=${DBUS_TEST_DAEMON}
+ ${Z_DRIVE_IF_WINE}$<TARGET_FILE:${_target}>
+ --tap
+ )
+ set(_env)
+ list(APPEND _env "DBUS_SESSION_BUS_PID=")
+ list(APPEND _env "DBUS_SESSION_BUS_ADDRESS=")
+ list(APPEND _env "DBUS_FATAL_WARNINGS=1")
+ list(APPEND _env "DBUS_TEST_DAEMON=${DBUS_TEST_DAEMON}")
+ list(APPEND _env "DBUS_TEST_DATA=${DBUS_TEST_DATA}")
+ list(APPEND _env "DBUS_TEST_HOMEDIR=${DBUS_TEST_HOMEDIR}")
+ set_tests_properties(${_target} PROPERTIES ENVIRONMENT "${_env}")
+endmacro(add_session_test_executable)
#
# generate compiler flags from MSVC warning identifiers (e.g. '4114') or gcc warning keys (e.g. 'pointer-sign')
diff --git a/cmake/test/name-test/CMakeLists.txt b/cmake/test/name-test/CMakeLists.txt
index 338720df..12a054c8 100644
--- a/cmake/test/name-test/CMakeLists.txt
+++ b/cmake/test/name-test/CMakeLists.txt
@@ -4,11 +4,12 @@ set (NAME_TEST_DIR ../../../test/name-test)
add_definitions(${DBUS_INTERNAL_CLIENT_DEFINITIONS})
-add_helper_executable(test-pending-call-dispatch ${NAME_TEST_DIR}/test-pending-call-dispatch.c ${DBUS_INTERNAL_LIBRARIES})
-add_helper_executable(test-pending-call-timeout ${NAME_TEST_DIR}/test-pending-call-timeout.c ${DBUS_INTERNAL_LIBRARIES})
-add_helper_executable(test-thread-init ${NAME_TEST_DIR}/test-threads-init.c ${DBUS_INTERNAL_LIBRARIES})
-add_helper_executable(test-ids ${NAME_TEST_DIR}/test-ids.c ${DBUS_INTERNAL_LIBRARIES})
-add_helper_executable(test-shutdown ${NAME_TEST_DIR}/test-shutdown.c dbus-testutils)
-add_helper_executable(test-privserver-client ${NAME_TEST_DIR}/test-privserver-client.c dbus-testutils)
add_helper_executable(test-autolaunch ${NAME_TEST_DIR}/test-autolaunch.c dbus-testutils)
+add_helper_executable(test-privserver-client ${NAME_TEST_DIR}/test-privserver-client.c dbus-testutils)
+
+add_session_test_executable(test-ids ${NAME_TEST_DIR}/test-ids.c ${DBUS_INTERNAL_LIBRARIES})
+add_session_test_executable(test-pending-call-dispatch ${NAME_TEST_DIR}/test-pending-call-dispatch.c ${DBUS_INTERNAL_LIBRARIES})
+add_session_test_executable(test-pending-call-timeout ${NAME_TEST_DIR}/test-pending-call-timeout.c ${DBUS_INTERNAL_LIBRARIES})
+add_session_test_executable(test-shutdown ${NAME_TEST_DIR}/test-shutdown.c dbus-testutils)
+add_session_test_executable(test-thread-init ${NAME_TEST_DIR}/test-threads-init.c ${DBUS_INTERNAL_LIBRARIES})
endif (DBUS_ENABLE_EMBEDDED_TESTS)