|
|
be3800 |
From b97351958572028b6c23945bbf2d8f509f2e29a2 Mon Sep 17 00:00:00 2001
|
|
|
be3800 |
From: Yu Watanabe <watanabe.yu+github@gmail.com>
|
|
|
be3800 |
Date: Tue, 11 Sep 2018 09:17:22 +0900
|
|
|
be3800 |
Subject: [PATCH] test: introduce test_is_running_from_builddir()
|
|
|
be3800 |
|
|
|
be3800 |
(cherry picked from commit 8cb10a4f4dabc508a04f76ea55f23ef517881b61)
|
|
|
be3800 |
(cherry picked from commit 4fa54d7a72600788349fc363b7814bb52849b5e6)
|
|
|
be3800 |
|
|
|
be3800 |
Resolves: #1836979
|
|
|
be3800 |
---
|
|
|
be3800 |
src/shared/tests.c | 23 ++++++++++++++++++++---
|
|
|
be3800 |
src/shared/tests.h | 1 +
|
|
|
be3800 |
2 files changed, 21 insertions(+), 3 deletions(-)
|
|
|
be3800 |
|
|
|
be3800 |
diff --git a/src/shared/tests.c b/src/shared/tests.c
|
|
|
be3800 |
index b10343650f..c77eb00924 100644
|
|
|
be3800 |
--- a/src/shared/tests.c
|
|
|
be3800 |
+++ b/src/shared/tests.c
|
|
|
be3800 |
@@ -19,6 +19,24 @@ char* setup_fake_runtime_dir(void) {
|
|
|
be3800 |
return p;
|
|
|
be3800 |
}
|
|
|
be3800 |
|
|
|
be3800 |
+bool test_is_running_from_builddir(char **exedir) {
|
|
|
be3800 |
+ _cleanup_free_ char *s = NULL;
|
|
|
be3800 |
+ bool r;
|
|
|
be3800 |
+
|
|
|
be3800 |
+ /* Check if we're running from the builddir. Optionally, this returns
|
|
|
be3800 |
+ * the path to the directory where the binary is located. */
|
|
|
be3800 |
+
|
|
|
be3800 |
+ assert_se(readlink_and_make_absolute("/proc/self/exe", &s) >= 0);
|
|
|
be3800 |
+ r = path_startswith(s, ABS_BUILD_DIR);
|
|
|
be3800 |
+
|
|
|
be3800 |
+ if (exedir) {
|
|
|
be3800 |
+ dirname(s);
|
|
|
be3800 |
+ *exedir = TAKE_PTR(s);
|
|
|
be3800 |
+ }
|
|
|
be3800 |
+
|
|
|
be3800 |
+ return r;
|
|
|
be3800 |
+}
|
|
|
be3800 |
+
|
|
|
be3800 |
const char* get_testdata_dir(const char *suffix) {
|
|
|
be3800 |
const char *env;
|
|
|
be3800 |
/* convenience: caller does not need to free result */
|
|
|
be3800 |
@@ -35,14 +53,13 @@ const char* get_testdata_dir(const char *suffix) {
|
|
|
be3800 |
strncpy(testdir, env, sizeof(testdir) - 1);
|
|
|
be3800 |
} else {
|
|
|
be3800 |
_cleanup_free_ char *exedir = NULL;
|
|
|
be3800 |
- assert_se(readlink_and_make_absolute("/proc/self/exe", &exedir) >= 0);
|
|
|
be3800 |
|
|
|
be3800 |
/* Check if we're running from the builddir. If so, use the compiled in path. */
|
|
|
be3800 |
- if (path_startswith(exedir, ABS_BUILD_DIR))
|
|
|
be3800 |
+ if (test_is_running_from_builddir(&exedir))
|
|
|
be3800 |
assert_se(snprintf(testdir, sizeof(testdir), "%s/test", ABS_SRC_DIR) > 0);
|
|
|
be3800 |
else
|
|
|
be3800 |
/* Try relative path, according to the install-test layout */
|
|
|
be3800 |
- assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", dirname(exedir)) > 0);
|
|
|
be3800 |
+ assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", exedir) > 0);
|
|
|
be3800 |
|
|
|
be3800 |
/* test this without the suffix, as it may contain a glob */
|
|
|
be3800 |
if (access(testdir, F_OK) < 0) {
|
|
|
be3800 |
diff --git a/src/shared/tests.h b/src/shared/tests.h
|
|
|
be3800 |
index cad21169f8..7f45c32d32 100644
|
|
|
be3800 |
--- a/src/shared/tests.h
|
|
|
be3800 |
+++ b/src/shared/tests.h
|
|
|
be3800 |
@@ -2,5 +2,6 @@
|
|
|
be3800 |
#pragma once
|
|
|
be3800 |
|
|
|
be3800 |
char* setup_fake_runtime_dir(void);
|
|
|
be3800 |
+bool test_is_running_from_builddir(char **exedir);
|
|
|
be3800 |
const char* get_testdata_dir(const char *suffix);
|
|
|
be3800 |
void test_setup_logging(int level);
|