diff options
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | src/resolve/test-dns-packet.c | 4 | ||||
-rw-r--r-- | src/shared/tests.c | 13 | ||||
-rw-r--r-- | src/shared/tests.h | 1 | ||||
-rw-r--r-- | src/test/test-cgroup-mask.c | 2 | ||||
-rw-r--r-- | src/test/test-engine.c | 2 | ||||
-rw-r--r-- | src/test/test-execute.c | 2 | ||||
-rw-r--r-- | src/test/test-helper.h | 5 | ||||
-rw-r--r-- | src/test/test-path.c | 2 | ||||
-rw-r--r-- | src/test/test-sched-prio.c | 2 |
10 files changed, 30 insertions, 8 deletions
diff --git a/Makefile.am b/Makefile.am index 3c20c9d4bf..489cf3c1b7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -150,6 +150,7 @@ endif AM_TESTS_ENVIRONMENT = \ export SYSTEMD_KBD_MODEL_MAP=$(abs_top_srcdir)/src/locale/kbd-model-map; \ export SYSTEMD_LANGUAGE_FALLBACK_MAP=$(abs_top_srcdir)/src/locale/language-fallback-map; \ + export TEST_DIR=$(abs_top_srcdir)/test; \ export PATH=$(abs_top_builddir):$$PATH; if ENABLE_BASH_COMPLETION @@ -218,7 +219,6 @@ AM_CPPFLAGS = \ -DLIBDIR=\"$(libdir)\" \ -DROOTLIBDIR=\"$(rootlibdir)\" \ -DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \ - -DTEST_DIR=\"$(abs_top_srcdir)/test\" \ -I $(top_srcdir)/src \ -I $(top_builddir)/src/basic \ -I $(top_srcdir)/src/basic \ @@ -5637,7 +5637,8 @@ test_dns_packet_SOURCES = \ $(basic_dns_sources) test_dns_packet_CPPFLAGS = \ - $(AM_CPPFLAGS) + $(AM_CPPFLAGS) \ + -I $(top_srcdir)/src/test test_dns_packet_CFLAGS = \ $(AM_CFLAGS) \ diff --git a/src/resolve/test-dns-packet.c b/src/resolve/test-dns-packet.c index 957b8677ba..3ca7e78495 100644 --- a/src/resolve/test-dns-packet.c +++ b/src/resolve/test-dns-packet.c @@ -31,6 +31,8 @@ #include "strv.h" #include "unaligned.h" +#include "test-helper.h" + #define HASH_KEY SD_ID128_MAKE(d3,1e,48,90,4b,fa,4c,fe,af,9d,d5,a1,d7,2e,8a,b1) static void verify_rr_copy(DnsResourceRecord *rr) { @@ -115,7 +117,7 @@ int main(int argc, char **argv) { N = argc - 1; fnames = argv + 1; } else { - assert_se(glob(TEST_DIR "/test-resolve/*.pkts", GLOB_NOSORT, NULL, &g) == 0); + assert_se(glob(TEST_DATA_DIR("/test-resolve/*.pkts"), GLOB_NOSORT, NULL, &g) == 0); N = g.gl_pathc; fnames = g.gl_pathv; } diff --git a/src/shared/tests.c b/src/shared/tests.c index 409116290d..7034687725 100644 --- a/src/shared/tests.c +++ b/src/shared/tests.c @@ -17,6 +17,9 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include <alloc-util.h> +#include <fs-util.h> +#include <libgen.h> #include <stdlib.h> #include <util.h> @@ -31,3 +34,13 @@ char* setup_fake_runtime_dir(void) { return p; } + +const char* get_exe_relative_testdata_dir(void) { + _cleanup_free_ char *exedir = NULL; + /* convenience: caller does not need to free result */ + static char testdir[PATH_MAX]; + + assert_se(readlink_and_make_absolute("/proc/self/exe", &exedir) >= 0); + assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", dirname(exedir)) > 0); + return testdir; +} diff --git a/src/shared/tests.h b/src/shared/tests.h index 93f09013a1..0100b48937 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -20,3 +20,4 @@ ***/ char* setup_fake_runtime_dir(void); +const char* get_exe_relative_testdata_dir(void); diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c index a027eb0fd2..630587aaf1 100644 --- a/src/test/test-cgroup-mask.c +++ b/src/test/test-cgroup-mask.c @@ -34,7 +34,7 @@ static int test_cgroup_mask(void) { int r; /* Prepare the manager. */ - assert_se(set_unit_path(TEST_DIR) >= 0); + assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0); r = manager_new(UNIT_FILE_USER, true, &m); if (r == -EPERM || r == -EACCES) { puts("manager_new: Permission denied. Skipping test."); diff --git a/src/test/test-engine.c b/src/test/test-engine.c index a651f6b683..3ec2dfe10e 100644 --- a/src/test/test-engine.c +++ b/src/test/test-engine.c @@ -40,7 +40,7 @@ int main(int argc, char *argv[]) { assert_se(runtime_dir = setup_fake_runtime_dir()); /* prepare the test */ - assert_se(set_unit_path(TEST_DIR) >= 0); + assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0); r = manager_new(UNIT_FILE_USER, true, &m); if (MANAGER_SKIP_TEST(r)) { log_notice_errno(r, "Skipping test: manager_new: %m"); diff --git a/src/test/test-execute.c b/src/test/test-execute.c index 3a3ab3eb94..145aa37a66 100644 --- a/src/test/test-execute.c +++ b/src/test/test-execute.c @@ -516,7 +516,7 @@ int main(int argc, char *argv[]) { } assert_se(setenv("XDG_RUNTIME_DIR", "/tmp/", 1) == 0); - assert_se(set_unit_path(TEST_DIR "/test-execute/") >= 0); + assert_se(set_unit_path(TEST_DATA_DIR("/test-execute/")) >= 0); /* Unset VAR1, VAR2 and VAR3 which are used in the PassEnvironment test * cases, otherwise (and if they are present in the environment), diff --git a/src/test/test-helper.h b/src/test/test-helper.h index ddb10f88fd..4e633ae6d8 100644 --- a/src/test/test-helper.h +++ b/src/test/test-helper.h @@ -20,6 +20,8 @@ ***/ #include "sd-daemon.h" +#include "string-util.h" +#include "tests.h" #include "macro.h" @@ -39,3 +41,6 @@ -ENOENT, \ -ENOMEDIUM /* cannot determine cgroup */ \ ) + +#define TEST_DATA_DIR(subdir) \ + strjoina(getenv("TEST_DIR") ?: get_exe_relative_testdata_dir(), subdir) diff --git a/src/test/test-path.c b/src/test/test-path.c index 5e99d478ee..d09df3e8a5 100644 --- a/src/test/test-path.c +++ b/src/test/test-path.c @@ -263,7 +263,7 @@ int main(int argc, char *argv[]) { log_open(); assert_se(runtime_dir = setup_fake_runtime_dir()); - assert_se(set_unit_path(TEST_DIR "/test-path/") >= 0); + assert_se(set_unit_path(TEST_DATA_DIR("/test-path/")) >= 0); for (test = tests; test && *test; test++) { int r; diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c index 7b37910c33..dab64fea57 100644 --- a/src/test/test-sched-prio.c +++ b/src/test/test-sched-prio.c @@ -37,7 +37,7 @@ int main(int argc, char *argv[]) { assert_se(runtime_dir = setup_fake_runtime_dir()); /* prepare the test */ - assert_se(set_unit_path(TEST_DIR) >= 0); + assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0); r = manager_new(UNIT_FILE_USER, true, &m); if (MANAGER_SKIP_TEST(r)) { log_notice_errno(r, "Skipping test: manager_new: %m"); |