mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-22 13:33:56 +03:00
Merge pull request #10046 from yuwata/fix-10045
test: use installed catalogs when test-catalog is not located at build dir
This commit is contained in:
commit
878f2dae77
@ -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(
|
||||
|
@ -14,14 +14,13 @@
|
||||
#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();
|
||||
|
@ -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) {
|
||||
|
@ -2,4 +2,5 @@
|
||||
#pragma once
|
||||
|
||||
char* setup_fake_runtime_dir(void);
|
||||
bool test_is_running_from_builddir(char **exedir);
|
||||
const char* get_testdata_dir(const char *suffix);
|
||||
|
@ -757,7 +757,7 @@ tests += [
|
||||
[threads,
|
||||
libxz,
|
||||
liblz4],
|
||||
'', '', '-DCATALOG_DIR="@0@"'.format(build_catalog_dir)],
|
||||
'', '', '-DCATALOG_DIR="@0@"'.format(catalogdir)],
|
||||
|
||||
[['src/journal/test-compress.c'],
|
||||
[libjournal_core,
|
||||
|
Loading…
Reference in New Issue
Block a user