From 578ea41d8c13401e890951209afa8085f66ee72b Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Mon, 17 Dec 2018 16:13:00 +0100 Subject: [PATCH] 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 --- cmake/CMakeLists.txt | 1 + cmake/modules/Macros.cmake | 26 ++++++++++++++++++++++++++ cmake/test/name-test/CMakeLists.txt | 13 +++++++------ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 9cc1cfe76..91da59e29 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 08fbfba6d..4e635057c 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}$ + --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 338720dfa..12a054c84 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) -- 2.47.3