diff options
| author | Emmanuele Bassi <ebassi@gnome.org> | 2018-04-23 14:29:15 +0100 |
|---|---|---|
| committer | Simon Ser <contact@emersion.fr> | 2020-01-10 23:42:59 +0100 |
| commit | a77f6bf6c41f83520261cdf67c9819f8e36f8a3d (patch) | |
| tree | 4eed1f2f7a9e981cceec8b394e2daa51b02ea3e5 /tests | |
| parent | build/doc: Ensure destination dir exists despite VPATH (diff) | |
| download | wayland-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.c | 13 |
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"); } |
