Merge branch 'fix-issue-541' into 'master'

cmake: add missing environment variables for running tests

Closes #541

See merge request dbus/dbus!505
This commit is contained in:
Simon McVittie 2024-12-12 15:52:20 +00:00
commit e6b77c3454
2 changed files with 39 additions and 2 deletions

View file

@ -38,6 +38,34 @@ if((DBUS_ENABLE_MODULAR_TESTS OR DBUS_ENABLE_INTRUSIVE_TESTS) AND CMAKE_CROSSCOM
endif()
endif()
#
# unit test setup
#
macro(setup_unit_tests)
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(DBUS_PATH_DELIMITER ";")
else()
set(DBUS_PATH_DELIMITER ":")
endif()
# Tests in bus/config-parser.c rely on these specific values for XDG_*
set(DBUS_TEST_XDG_DATA_DIRS "${Z_DRIVE_IF_WINE}${PROJECT_BINARY_DIR}/test/XDG_DATA_DIRS" "${Z_DRIVE_IF_WINE}${PROJECT_BINARY_DIR}/test/XDG_DATA_DIRS2")
set(DBUS_TEST_XDG_DATA_HOME "${Z_DRIVE_IF_WINE}${PROJECT_BINARY_DIR}/test/XDG_DATA_HOME")
set(DBUS_TEST_XDG_RUNTIME_DIR "${Z_DRIVE_IF_WINE}${PROJECT_BINARY_DIR}/test/XDG_RUNTIME_DIR")
list(JOIN DBUS_TEST_XDG_DATA_DIRS "${DBUS_PATH_DELIMITER}" DBUS_TEST_XDG_DATA_DIRS_JOINED)
# the test environment expects these directories to be present
foreach(_dir ${DBUS_TEST_XDG_RUNTIME_DIR})
if(NOT EXISTS ${_dir})
message(STATUS "creating directory '${_dir}' for test environment")
file(MAKE_DIRECTORY ${_dir})
if(NOT WIN32)
file(CHMOD ${_dir} DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
endif()
endif()
endforeach()
endmacro()
#
# add dbus specific test
#
@ -56,17 +84,28 @@ macro(add_unit_test _name _target)
COMMAND ${TEST_WRAPPER} ${__ARGS} ${Z_DRIVE_IF_WINE}$<TARGET_FILE:${_target}> --tap
WORKING_DIRECTORY ${DBUS_TEST_WORKING_DIR}
)
if(NOT setup_unit_tests_called)
setup_unit_tests()
set(setup_unit_test_called 1)
endif()
set(_env)
list(APPEND _env "DBUS_SESSION_BUS_ADDRESS=")
list(APPEND _env "DBUS_FATAL_WARNINGS=1")
list(APPEND _env "DBUS_TEST_BUILDDIR=${Z_DRIVE_IF_WINE}${PROJECT_BINARY_DIR}/test")
list(APPEND _env "DBUS_TEST_DAEMON=${DBUS_TEST_DAEMON}")
list(APPEND _env "DBUS_TEST_DATA=${DBUS_TEST_DATA}")
list(APPEND _env "DBUS_TEST_DBUS_LAUNCH=${DBUS_TEST_DBUS_LAUNCH}")
list(APPEND _env "DBUS_TEST_EXEC=${DBUS_TEST_EXEC}")
list(APPEND _env "DBUS_TEST_HOMEDIR=${DBUS_TEST_HOMEDIR}")
list(APPEND _env "DBUS_TEST_UNINSTALLED=1")
# used by GLib-based tests to implement g_test_build_filename(), etc.
list(APPEND _env "G_TEST_BUILDDIR=${Z_DRIVE_IF_WINE}${PROJECT_BINARY_DIR}/test")
list(APPEND _env "G_TEST_SRCDIR=${Z_DRIVE_IF_WINE}${PROJECT_SOURCE_DIR}/test")
list(APPEND _env "XDG_DATA_DIRS=${DBUS_TEST_XDG_DATA_DIRS_JOINED}")
list(APPEND _env "XDG_DATA_HOME=${DBUS_TEST_XDG_DATA_HOME}")
list(APPEND _env "XDG_RUNTIME_DIR=${DBUS_TEST_XDG_RUNTIME_DIR}")
list(APPEND _env ${__ENV})
set_tests_properties(${_name} PROPERTIES ENVIRONMENT "${_env}")
endmacro()

View file

@ -149,8 +149,6 @@ if(DBUS_ENABLE_INTRUSIVE_TESTS)
set(SOURCES bus/main.c bus/common.c bus/common.h)
add_test_executable(test-bus "${SOURCES}" dbus-daemon-internal dbus-testutils ${EXPAT_LIBRARIES})
# TODO: For full coverage this should be run with some specific
# environment variable values: see dbus#541
set_target_properties(test-bus PROPERTIES COMPILE_FLAGS ${DBUS_INTERNAL_CLIENT_DEFINITIONS})
if(ENABLE_TRADITIONAL_ACTIVATION)