test: make test-catalog relocatable
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 11 Sep 2018 00:18:33 +0000 (09:18 +0900)
committerThe Plumber <50238977+systemd-rhel-bot@users.noreply.github.com>
Mon, 18 May 2020 17:35:19 +0000 (19:35 +0200)
Fixes #10045.

(cherry picked from commit d9b6baa69968132d33e4ad8627c7fe0bd527c859)
(cherry picked from commit 444ad721dc163d4952bb35a0b061e57c91bfc9ff)

Resolves: #1836979

catalog/meson.build
src/journal/test-catalog.c
src/test/meson.build

index 1b13150894f0d21c0e96f8b7eb5de270bceba2fe..3db8e390f2a631fde7531de301f4dcd5cbf19efb 100644 (file)
@@ -17,7 +17,6 @@ in_files = '''
 
 support_url = get_option('support-url')
 support_sed = 's~%SUPPORT_URL%~@0@~'.format(support_url)
-build_catalog_dir = meson.current_build_dir()
 
 foreach file : in_files
         custom_target(
index 8eae993780f01b4a84aac3c2041e5c8cacd2e6a1..0c4da29f3129fed22dba92cf263d6ca8c32476bf 100644 (file)
 #include "fileio.h"
 #include "log.h"
 #include "macro.h"
+#include "path-util.h"
 #include "string-util.h"
+#include "strv.h"
+#include "tests.h"
 #include "util.h"
 
-static const char *catalog_dirs[] = {
-        CATALOG_DIR,
-        NULL,
-};
-
+static char** catalog_dirs = NULL;
 static const char *no_catalog_dirs[] = {
         "/bin/hopefully/with/no/catalog",
         NULL
@@ -167,8 +166,8 @@ static void test_catalog_update(const char *database) {
         assert_se(r == 0);
 
         /* Make sure that we at least have some files loaded or the
-           catalog_list below will fail. */
-        r = catalog_update(database, NULL, catalog_dirs);
+         * catalog_list below will fail. */
+        r = catalog_update(database, NULL, (const char * const *) catalog_dirs);
         assert_se(r == 0);
 }
 
@@ -202,14 +201,26 @@ static void test_catalog_file_lang(void) {
 
 int main(int argc, char *argv[]) {
         _cleanup_(unlink_tempfilep) char database[] = "/tmp/test-catalog.XXXXXX";
-        _cleanup_free_ char *text = NULL;
+        _cleanup_free_ char *text = NULL, *catalog_dir = NULL;
         int r;
 
         setlocale(LC_ALL, "de_DE.UTF-8");
 
+        log_set_max_level(LOG_DEBUG);
         log_parse_environment();
         log_open();
 
+        /* If test-catalog is located at the build directory, then use catalogs in that.
+         * If it is not, e.g. installed by systemd-tests package, then use installed catalogs. */
+        if (test_is_running_from_builddir(NULL)) {
+                assert_se(catalog_dir = path_join(NULL, ABS_BUILD_DIR, "catalog"));
+                catalog_dirs = STRV_MAKE(catalog_dir);
+        } else
+                catalog_dirs = STRV_MAKE(CATALOG_DIR);
+
+        assert_se(access(catalog_dirs[0], F_OK) >= 0);
+        log_notice("Using catalog directory '%s'", catalog_dirs[0]);
+
         test_catalog_file_lang();
 
         test_catalog_import_invalid();
index 4259421f980479dd9bb6e9fab67c72fcd46d26d9..ead000e30ce5a80347a1418b7695302dc5a74bf7 100644 (file)
@@ -766,7 +766,7 @@ tests += [
          [threads,
           libxz,
           liblz4],
-         '', '', '-DCATALOG_DIR="@0@"'.format(build_catalog_dir)],
+         '', '', '-DCATALOG_DIR="@0@"'.format(catalogdir)],
 
         [['src/journal/test-compress.c'],
          [libjournal_core,