[PATCH 1/4] Support running tests from different build directories

Emmanuele Bassi ebassi at gmail.com
Mon Apr 23 13:29:15 UTC 2018


From: Emmanuele Bassi <ebassi at gnome.org>

The tests that run exec-fd-leak-checker expect the binary to be located
in the current directory. This is not always the case; for instance, the
binaries could be built under `tests`, but be invoked under the
top-level build directory.

We can use an environment variable to control what's the location of the
test binaries, and fall back to the current directory if the variable is
unset.
---
 tests/test-helpers.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/tests/test-helpers.c b/tests/test-helpers.c
index b2189d8..8ad332b 100644
--- a/tests/test-helpers.c
+++ b/tests/test-helpers.c
@@ -29,6 +29,7 @@
 #include <errno.h>
 #include <dirent.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <time.h>
 #include <sys/time.h>
@@ -67,11 +68,19 @@ count_open_fds(void)
 void
 exec_fd_leak_check(int nr_expected_fds)
 {
-	const char *exe = "./exec-fd-leak-checker";
+	const char *exe = "exec-fd-leak-checker";
 	char number[16] = { 0 };
+        const char *test_build_dir = getenv("TEST_BUILD_DIR");
+        char exe_path[256] = { 0 };
+
+        if (test_build_dir == NULL || test_build_dir[0] == 0) {
+                test_build_dir = ".";
+        }
+
+        snprintf(exe_path, sizeof exe_path - 1, "%s/%s", test_build_dir, exe);
 
 	snprintf(number, sizeof number - 1, "%d", nr_expected_fds);
-	execl(exe, exe, number, (char *)NULL);
+	execl(exe_path, exe, number, (char *)NULL);
 	assert(0 && "execing fd leak checker failed");
 }
 
-- 
2.17.0



More information about the wayland-devel mailing list