summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2014-09-21 09:49:06 -0700
committerKeith Packard <keithp@keithp.com>2014-10-09 14:15:45 +0200
commitda887726eeaece0396962dd3912578d3372881b1 (patch)
tree1278fc3edefc2f5643d4075539c17d4973856e46
parentcccba52d152a7d233c0b762a54844ecef831483e (diff)
Use unique display name for each xi2 test program [v3]
make -j 8 check was sporadically failing in different xi2 tests. After adding the asserts in the previous commit to catch xkb failure it became easier to catch the failures and see that multiple tests were running at once trying to write to /tmp/server-(null).xkm and then delete it, and interfering with each other. Putting a unique string into the display variable let them each write to their own file and not interfere with others. v2: Fix Linux bits: Add #include <errno.h> to get a declaration of program_invocation_name on Linux. Use only the last portion of the pathname so that the resulting display name doesn't contain any slashes. v3: use program_invocation_short_name on Linux This is the same as program_invocation_name, except is has stripped off any path prefix. Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--configure.ac4
-rw-r--r--include/dix-config.h.in7
-rw-r--r--test/xi2/protocol-common.c12
3 files changed, 22 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 30c0c5cd9..c6971889c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -217,10 +217,12 @@ AC_SUBST(DLOPEN_LIBS)
dnl Checks for library functions.
AC_CHECK_FUNCS([backtrace ffs geteuid getuid issetugid getresuid \
- getdtablesize getifaddrs getpeereid getpeerucred getzoneid \
+ getdtablesize getifaddrs getpeereid getpeerucred getprogname getzoneid \
mmap seteuid shmctl64 strncasecmp vasprintf vsnprintf walkcontext])
AC_REPLACE_FUNCS([strcasecmp strcasestr strlcat strlcpy strndup])
+AC_CHECK_DECLS([program_invocation_short_name], [], [], [[#include <errno.h>]])
+
dnl Find the math libary, then check for cbrt function in it.
AC_CHECK_LIB(m, sqrt)
AC_CHECK_FUNCS([cbrt])
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index f170c1c2f..1aa77a5eb 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -72,6 +72,10 @@
/* Define to 1 if you have the <dbm.h> header file. */
#undef HAVE_DBM_H
+/* Define to 1 if you have the declaration of `program_invocation_short_name', and
+ to 0 if you don't. */
+#undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
+
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
*/
#undef HAVE_DIRENT_H
@@ -100,6 +104,9 @@
/* Define to 1 if you have the `getpeerucred' function. */
#undef HAVE_GETPEERUCRED
+/* Define to 1 if you have the `getprogname' function. */
+#undef HAVE_GETPROGNAME
+
/* Define to 1 if you have the `getzoneid' function. */
#undef HAVE_GETZONEID
diff --git a/test/xi2/protocol-common.c b/test/xi2/protocol-common.c
index 64a5777d0..9265ba390 100644
--- a/test/xi2/protocol-common.c
+++ b/test/xi2/protocol-common.c
@@ -25,6 +25,7 @@
#include <dix-config.h>
#endif
+#include <errno.h>
#include <stdint.h>
#include "extinit.h" /* for XInputExtensionInit */
#include "exglobals.h"
@@ -139,6 +140,17 @@ init_devices(void)
struct devices local_devices;
int ret;
+ /*
+ * Put a unique name in display pointer so that when tests are run in
+ * parallel, their xkbcomp outputs to /tmp/server-<display>.xkm don't
+ * stomp on each other.
+ */
+#ifdef HAVE_GETPROGNAME
+ display = getprogname();
+#elif HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
+ display = program_invocation_short_name;
+#endif
+
client = init_client(0, NULL);
AllocDevicePair(&client, "Virtual core", &local_devices.vcp, &local_devices.vck,