summaryrefslogtreecommitdiff
path: root/src/shared/tests.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-09-11 09:17:22 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2018-09-11 09:17:22 +0900
commit8cb10a4f4dabc508a04f76ea55f23ef517881b61 (patch)
tree1493767d552f04baf2afedce4d22a8350af9ad4d /src/shared/tests.c
parentc6d7a5e9a3836f837cd3574495f54637073325ee (diff)
downloadsystemd-8cb10a4f4dabc508a04f76ea55f23ef517881b61.tar.gz
test: introduce test_is_running_from_builddir()
Diffstat (limited to 'src/shared/tests.c')
-rw-r--r--src/shared/tests.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/shared/tests.c b/src/shared/tests.c
index 6b3df0aa07..c3704c743f 100644
--- a/src/shared/tests.c
+++ b/src/shared/tests.c
@@ -19,6 +19,24 @@ char* setup_fake_runtime_dir(void) {
return p;
}
+bool test_is_running_from_builddir(char **exedir) {
+ _cleanup_free_ char *s = NULL;
+ bool r;
+
+ /* Check if we're running from the builddir. Optionally, this returns
+ * the path to the directory where the binary is located. */
+
+ assert_se(readlink_and_make_absolute("/proc/self/exe", &s) >= 0);
+ r = path_startswith(s, ABS_BUILD_DIR);
+
+ if (exedir) {
+ dirname(s);
+ *exedir = TAKE_PTR(s);
+ }
+
+ return r;
+}
+
const char* get_testdata_dir(const char *suffix) {
const char *env;
/* convenience: caller does not need to free result */
@@ -35,14 +53,13 @@ const char* get_testdata_dir(const char *suffix) {
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))
+ if (test_is_running_from_builddir(&exedir))
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);
+ assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", exedir) > 0);
/* test this without the suffix, as it may contain a glob */
if (access(testdir, F_OK) < 0) {