diff options
author | Chengwei Yang <chengwei.yang@intel.com> | 2013-09-13 16:56:26 +0800 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-09-13 14:29:45 +0100 |
commit | ee0f28f6a575337fe6d0571f5935f82a601c37c9 (patch) | |
tree | 7d2bd64649ef210648f04c96d5985ec9c97a5a8d | |
parent | 2cf320fc82593fd1b3c71688f770e443366780ec (diff) | |
download | dbus-ee0f28f6a575337fe6d0571f5935f82a601c37c9.tar.gz |
Use test binaries in build dir to do test
When do autolaunch testing, libdbus will try to start dbus-launch in
installed direcotry, if fail then fall back to dbus-launch in $PATH.
dbus-launch does a relative better thing to start dbus-daemon in build
directory, however, in most of case, the build $prefix is different from
the real prefix where dbus-daemon installed. So dbus-daemon will fail to
start due to can't find its config file. And then dbus-launch will fall
back to finally the installed dbus-daemon.
This patch fix this behavior and will start dbus-launch and dbus-daemon
in build directory in test environment.
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37849
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | dbus/dbus-sysdeps-unix.c | 9 | ||||
-rw-r--r-- | test/name-test/Makefile.am | 7 | ||||
-rw-r--r-- | tools/dbus-launch.c | 10 |
4 files changed, 25 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac index ab7b1e17..b6ff7690 100644 --- a/configure.ac +++ b/configure.ac @@ -1647,6 +1647,9 @@ AC_DEFINE_UNQUOTED(TEST_BUS_BINARY, ["$DBUS_PWD/bus/dbus-daemon$EXEEXT"], [Full path to the daemon in the builddir]) AC_SUBST(TEST_BUS_BINARY) +AC_DEFINE_UNQUOTED(TEST_BUS_LAUNCH_BINARY, ["$DBUS_PWD/tools/dbus-launch$EXEEXT"], + [Full path to the dbus-launch in the builddir]) + ## Export the non-setuid external helper TEST_LAUNCH_HELPER_BINARY="$DBUS_PWD/bus/dbus-daemon-launch-helper-test$EXEEXT" AC_SUBST(TEST_LAUNCH_HELPER_BINARY) diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index 72697340..54c02721 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -3518,7 +3518,12 @@ _dbus_get_autolaunch_address (const char *scope, } i = 0; - argv[i] = "dbus-launch"; +#ifdef DBUS_ENABLE_EMBEDDED_TESTS + if (_dbus_getenv ("DBUS_USE_TEST_BINARY") != NULL) + argv[i] = TEST_BUS_LAUNCH_BINARY; + else +#endif + argv[i] = DBUS_BINDIR "/dbus-launch"; ++i; argv[i] = "--autolaunch"; ++i; @@ -3533,7 +3538,7 @@ _dbus_get_autolaunch_address (const char *scope, _dbus_assert (i == _DBUS_N_ELEMENTS (argv)); - retval = _read_subprocess_line_argv (DBUS_BINDIR "/dbus-launch", + retval = _read_subprocess_line_argv (argv[0], TRUE, argv, address, error); diff --git a/test/name-test/Makefile.am b/test/name-test/Makefile.am index 54b02af0..931cb2c9 100644 --- a/test/name-test/Makefile.am +++ b/test/name-test/Makefile.am @@ -13,7 +13,12 @@ AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ ## so if adding tests not to be run in make check, don't add them to ## TESTS if DBUS_ENABLE_EMBEDDED_TESTS -TESTS_ENVIRONMENT=DBUS_TOP_BUILDDIR=@abs_top_builddir@ DBUS_TOP_SRCDIR=@abs_top_srcdir@ PYTHON=@PYTHON@ +TESTS_ENVIRONMENT = \ + DBUS_TOP_BUILDDIR=@abs_top_builddir@ \ + DBUS_TOP_SRCDIR=@abs_top_srcdir@ \ + PYTHON=@PYTHON@ \ + DBUS_TEST_DATA=@abs_top_builddir@/test/data \ + $(NULL) TESTS=run-test.sh run-test-systemserver.sh else TESTS= diff --git a/tools/dbus-launch.c b/tools/dbus-launch.c index 15249759..14fa226d 100644 --- a/tools/dbus-launch.c +++ b/tools/dbus-launch.c @@ -1110,8 +1110,16 @@ main (int argc, char **argv) #ifdef DBUS_ENABLE_EMBEDDED_TESTS /* exec from testdir */ - if (getenv("DBUS_USE_TEST_BINARY") != NULL) + if (getenv ("DBUS_USE_TEST_BINARY") != NULL) { + if (config_file == NULL && getenv ("DBUS_TEST_DATA") != NULL) + { + ret = asprintf (&config_file, "%s/valid-config-files/session.conf", + getenv ("DBUS_TEST_DATA")); + } + if (ret == -1 && config_file != NULL) + free (config_file); + execl (TEST_BUS_BINARY, TEST_BUS_BINARY, "--fork", |