summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChengwei Yang <chengwei.yang@intel.com>2013-09-13 16:56:26 +0800
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2013-09-13 14:29:45 +0100
commitee0f28f6a575337fe6d0571f5935f82a601c37c9 (patch)
tree7d2bd64649ef210648f04c96d5985ec9c97a5a8d
parent2cf320fc82593fd1b3c71688f770e443366780ec (diff)
downloaddbus-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.ac3
-rw-r--r--dbus/dbus-sysdeps-unix.c9
-rw-r--r--test/name-test/Makefile.am7
-rw-r--r--tools/dbus-launch.c10
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",