]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Make sure ctest on Windows uses the currently built dbus library
authorRalf Habacker <ralf.habacker@freenet.de>
Thu, 10 Jan 2019 14:29:59 +0000 (15:29 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Thu, 10 Jan 2019 19:19:04 +0000 (20:19 +0100)
The ctest application is usually not installed in the dbus build
directory. If an older dbus library is contained in this path, it will
be used instead of the currently built one, which can lead to runtime
errors (e.g.: c0000139) if the internal dbus API differs.

cmake/CMakeLists.txt
cmake/modules/Macros.cmake

index 93402e0b99672a697e70271edd4fb0bc9ed52ef6..429205b30c98a8ec3eca9c5eb55e0b22634aa649 100644 (file)
@@ -484,6 +484,12 @@ add_definitions(${DBUS_BUS_CFLAGS})
 if (DBUS_BUILD_TESTS)
     # set variables used for the .in files (substituted by configure_file) in test/data:
     set(DBUS_TEST_EXEC ${Z_DRIVE_IF_WINE}${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${IDE_BIN})
+    # Working directory for build-time tests, so that they'll pick up
+    # the correct libdbus-1-3.dll on Windows.
+    # This happens to be the same as DBUS_TEST_EXEC, but its meaning is
+    # different, and it has no direct Autotools equivalent (Autotools
+    # tests automatically get their own ${builddir} as working directory).
+    set(DBUS_TEST_WORKING_DIR ${Z_DRIVE_IF_WINE}${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${IDE_BIN})
     set(DBUS_TEST_DATA ${Z_DRIVE_IF_WINE}${CMAKE_BINARY_DIR}/test/data)
     set(DBUS_TEST_DAEMON ${Z_DRIVE_IF_WINE}${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${IDE_BIN}/dbus-daemon${EXEEXT})
     set(DBUS_TEST_DBUS_LAUNCH ${Z_DRIVE_IF_WINE}${CMAKE_RUNTIME_OUTPUT_DIRECTORY}${IDE_BIN}/dbus-launch${EXEEXT})
index 4e635057c79c9013f48a875202e4dc0344da5de3..3b93eb99268530ac3f40c220d70263d1a5d97fb8 100644 (file)
@@ -54,7 +54,11 @@ macro(add_test_executable _target _source)
             add_test(NAME ${_target} COMMAND ${TEST_WRAPPER} ${Z_DRIVE_IF_WINE}$<TARGET_FILE:${_target}> --tap)
         endif()
     else()
-        add_test(NAME ${_target} COMMAND $<TARGET_FILE:${_target}> --tap)
+        add_test(
+            NAME ${_target}
+            COMMAND $<TARGET_FILE:${_target}> --tap
+            WORKING_DIRECTORY ${DBUS_TEST_WORKING_DIR}
+        )
     endif()
     set(_env)
     list(APPEND _env "DBUS_SESSION_BUS_ADDRESS=")
@@ -94,6 +98,7 @@ macro(add_session_test_executable _target _source)
         --dbus-daemon=${DBUS_TEST_DAEMON}
         ${Z_DRIVE_IF_WINE}$<TARGET_FILE:${_target}>
         --tap
+        WORKING_DIRECTORY ${DBUS_TEST_WORKING_DIR}
     )
     set(_env)
     list(APPEND _env "DBUS_SESSION_BUS_PID=")