aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2018-04-23 14:29:15 +0100
committerSimon Ser <contact@emersion.fr>2020-01-10 23:42:59 +0100
commita77f6bf6c41f83520261cdf67c9819f8e36f8a3d (patch)
tree4eed1f2f7a9e981cceec8b394e2daa51b02ea3e5 /tests
parentbuild/doc: Ensure destination dir exists despite VPATH (diff)
downloadwayland-a77f6bf6c41f83520261cdf67c9819f8e36f8a3d.tar
wayland-a77f6bf6c41f83520261cdf67c9819f8e36f8a3d.tar.gz
wayland-a77f6bf6c41f83520261cdf67c9819f8e36f8a3d.tar.bz2
wayland-a77f6bf6c41f83520261cdf67c9819f8e36f8a3d.tar.lz
wayland-a77f6bf6c41f83520261cdf67c9819f8e36f8a3d.tar.xz
wayland-a77f6bf6c41f83520261cdf67c9819f8e36f8a3d.tar.zst
wayland-a77f6bf6c41f83520261cdf67c9819f8e36f8a3d.zip
Support running tests from different build directories
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. Reviewed-by: Daniel Stone <daniels@collabora.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/test-helpers.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/tests/test-helpers.c b/tests/test-helpers.c
index b2189d8..20b6690 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");
}