diff options
-rw-r--r-- | src/resolve/test-dns-packet.c | 5 | ||||
-rw-r--r-- | src/shared/tests.c | 45 | ||||
-rw-r--r-- | src/shared/tests.h | 2 | ||||
-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 | 3 | ||||
-rw-r--r-- | src/test/test-helper.h | 5 | ||||
-rw-r--r-- | src/test/test-journal-importer.c | 6 | ||||
-rw-r--r-- | src/test/test-path.c | 2 | ||||
-rw-r--r-- | src/test/test-sched-prio.c | 2 |
10 files changed, 37 insertions, 37 deletions
diff --git a/src/resolve/test-dns-packet.c b/src/resolve/test-dns-packet.c index 3ca7e78495..8cbe492526 100644 --- a/src/resolve/test-dns-packet.c +++ b/src/resolve/test-dns-packet.c @@ -29,10 +29,9 @@ #include "resolved-dns-rr.h" #include "string-util.h" #include "strv.h" +#include "tests.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) { @@ -117,7 +116,7 @@ int main(int argc, char **argv) { N = argc - 1; fnames = argv + 1; } else { - assert_se(glob(TEST_DATA_DIR("/test-resolve/*.pkts"), GLOB_NOSORT, NULL, &g) == 0); + assert_se(glob(get_testdata_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 be098b304c..f300bbc66f 100644 --- a/src/shared/tests.c +++ b/src/shared/tests.c @@ -36,33 +36,38 @@ char* setup_fake_runtime_dir(void) { return p; } -const char* get_testdata_dir(void) { +const char* get_testdata_dir(const char *suffix) { const char *env; - _cleanup_free_ char *exedir = NULL; /* convenience: caller does not need to free result */ static char testdir[PATH_MAX]; /* if the env var is set, use that */ env = getenv("SYSTEMD_TEST_DATA"); + testdir[sizeof(testdir) - 1] = '\0'; if (env) { - if (access(env, F_OK) >= 0) - return env; - - fputs("ERROR: $SYSTEMD_TEST_DATA directory does not exist\n", stderr); - exit(1); + if (access(env, F_OK) < 0) { + fputs("ERROR: $SYSTEMD_TEST_DATA directory does not exist\n", stderr); + exit(1); + } + strncpy(testdir, env, sizeof(testdir) - 1); + } else { + _cleanup_free_ char *exedir = NULL; + assert_se(readlink_and_make_absolute("/proc/self/exe", &exedir) >= 0); + + /* Check if we're running from the builddir. If so, use the compiled in path. */ + if (path_startswith(exedir, ABS_BUILD_DIR)) + assert_se(snprintf(testdir, sizeof(testdir), "%s/test", ABS_SRC_DIR) > 0); + else + /* Try relative path, according to the install-test layout */ + assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", dirname(exedir)) > 0); + + /* test this without the suffix, as it may contain a glob */ + if (access(testdir, F_OK) < 0) { + fputs("ERROR: Cannot find testdata directory, set $SYSTEMD_TEST_DATA\n", stderr); + exit(1); + } } - assert_se(readlink_and_make_absolute("/proc/self/exe", &exedir) >= 0); - - /* Check if we're running from the builddir. If so, use the compiled in path. */ - if (path_startswith(exedir, ABS_BUILD_DIR)) - return ABS_SRC_DIR "/test"; - - /* Try relative path, according to the install-test layout */ - assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", dirname(exedir)) > 0); - if (access(testdir, F_OK) >= 0) - return testdir; - - fputs("ERROR: Cannot find testdata directory, set $SYSTEMD_TEST_DATA\n", stderr); - exit(1); + strncpy(testdir + strlen(testdir), suffix, sizeof(testdir) - strlen(testdir) - 1); + return testdir; } diff --git a/src/shared/tests.h b/src/shared/tests.h index 927b9fc2bb..7055124990 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -20,4 +20,4 @@ ***/ char* setup_fake_runtime_dir(void); -const char* get_testdata_dir(void); +const char* get_testdata_dir(const char *suffix); diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c index adcff56bff..b42088c680 100644 --- a/src/test/test-cgroup-mask.c +++ b/src/test/test-cgroup-mask.c @@ -35,7 +35,7 @@ static int test_cgroup_mask(void) { int r; /* Prepare the manager. */ - assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0); + assert_se(set_unit_path(get_testdata_dir("")) >= 0); assert_se(runtime_dir = setup_fake_runtime_dir()); r = manager_new(UNIT_FILE_USER, true, &m); if (r == -EPERM || r == -EACCES) { diff --git a/src/test/test-engine.c b/src/test/test-engine.c index 3c0c18b188..8133343fb3 100644 --- a/src/test/test-engine.c +++ b/src/test/test-engine.c @@ -38,7 +38,7 @@ int main(int argc, char *argv[]) { int r; /* prepare the test */ - assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0); + assert_se(set_unit_path(get_testdata_dir("")) >= 0); assert_se(runtime_dir = setup_fake_runtime_dir()); r = manager_new(UNIT_FILE_USER, true, &m); if (MANAGER_SKIP_TEST(r)) { diff --git a/src/test/test-execute.c b/src/test/test-execute.c index 145aa37a66..90540b884b 100644 --- a/src/test/test-execute.c +++ b/src/test/test-execute.c @@ -35,6 +35,7 @@ #endif #include "stat-util.h" #include "test-helper.h" +#include "tests.h" #include "unit.h" #include "util.h" #include "virt.h" @@ -516,7 +517,7 @@ int main(int argc, char *argv[]) { } assert_se(setenv("XDG_RUNTIME_DIR", "/tmp/", 1) == 0); - assert_se(set_unit_path(TEST_DATA_DIR("/test-execute/")) >= 0); + assert_se(set_unit_path(get_testdata_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 7c9eff2483..ddb10f88fd 100644 --- a/src/test/test-helper.h +++ b/src/test/test-helper.h @@ -20,8 +20,6 @@ ***/ #include "sd-daemon.h" -#include "string-util.h" -#include "tests.h" #include "macro.h" @@ -41,6 +39,3 @@ -ENOENT, \ -ENOMEDIUM /* cannot determine cgroup */ \ ) - -#define TEST_DATA_DIR(subdir) \ - strjoina(get_testdata_dir(), subdir) diff --git a/src/test/test-journal-importer.c b/src/test/test-journal-importer.c index 1f0684863e..a61212ce7b 100644 --- a/src/test/test-journal-importer.c +++ b/src/test/test-journal-importer.c @@ -24,7 +24,7 @@ #include "log.h" #include "journal-importer.h" #include "string-util.h" -#include "test-helper.h" +#include "tests.h" static void assert_iovec_entry(const struct iovec *iovec, const char* content) { assert_se(strlen(content) == iovec->iov_len); @@ -39,7 +39,7 @@ static void test_basic_parsing(void) { _cleanup_(journal_importer_cleanup) JournalImporter imp = {}; int r; - imp.fd = open(TEST_DATA_DIR("/journal-data/journal-1.txt"), O_RDONLY|O_CLOEXEC); + imp.fd = open(get_testdata_dir("/journal-data/journal-1.txt"), O_RDONLY|O_CLOEXEC); assert_se(imp.fd >= 0); do @@ -68,7 +68,7 @@ static void test_bad_input(void) { _cleanup_(journal_importer_cleanup) JournalImporter imp = {}; int r; - imp.fd = open(TEST_DATA_DIR("/journal-data/journal-2.txt"), O_RDONLY|O_CLOEXEC); + imp.fd = open(get_testdata_dir("/journal-data/journal-2.txt"), O_RDONLY|O_CLOEXEC); assert_se(imp.fd >= 0); do diff --git a/src/test/test-path.c b/src/test/test-path.c index 7f108440b1..70ac6b3df3 100644 --- a/src/test/test-path.c +++ b/src/test/test-path.c @@ -262,7 +262,7 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); - assert_se(set_unit_path(TEST_DATA_DIR("/test-path/")) >= 0); + assert_se(set_unit_path(get_testdata_dir("/test-path")) >= 0); assert_se(runtime_dir = setup_fake_runtime_dir()); for (test = tests; test && *test; test++) { diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c index 9a918cde20..81d9abc2d5 100644 --- a/src/test/test-sched-prio.c +++ b/src/test/test-sched-prio.c @@ -35,7 +35,7 @@ int main(int argc, char *argv[]) { int r; /* prepare the test */ - assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0); + assert_se(set_unit_path(get_testdata_dir("")) >= 0); assert_se(runtime_dir = setup_fake_runtime_dir()); r = manager_new(UNIT_FILE_USER, true, &m); if (MANAGER_SKIP_TEST(r)) { |