mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-11 05:17:44 +03:00
Merge pull request #5298 from martinpitt/relocatable-tests
test: make unit tests relocatable and add an "install-tests" make target
This commit is contained in:
commit
f34182f00e
48
Makefile.am
48
Makefile.am
@ -93,6 +93,7 @@ kernelinstalldir = $(prefix)/lib/kernel/install.d
|
||||
factory_etcdir = $(datadir)/factory/etc
|
||||
factory_pamdir = $(datadir)/factory/etc/pam.d
|
||||
bootlibdir = $(prefix)/lib/systemd/boot/efi
|
||||
testsdir = $(prefix)/lib/systemd/tests
|
||||
|
||||
# And these are the special ones for /
|
||||
rootprefix=@rootprefix@
|
||||
@ -133,6 +134,7 @@ check_DATA =
|
||||
dist_rootlibexec_DATA =
|
||||
tests=
|
||||
manual_tests =
|
||||
TEST_DATA_FILES =
|
||||
TEST_EXTENSIONS = .py
|
||||
PY_LOG_COMPILER = $(PYTHON)
|
||||
DISABLE_HARD_ERRORS = yes
|
||||
@ -150,6 +152,7 @@ endif
|
||||
AM_TESTS_ENVIRONMENT = \
|
||||
export SYSTEMD_KBD_MODEL_MAP=$(abs_top_srcdir)/src/locale/kbd-model-map; \
|
||||
export SYSTEMD_LANGUAGE_FALLBACK_MAP=$(abs_top_srcdir)/src/locale/language-fallback-map; \
|
||||
export TEST_DIR=$(abs_top_srcdir)/test; \
|
||||
export PATH=$(abs_top_builddir):$$PATH;
|
||||
|
||||
if ENABLE_BASH_COMPLETION
|
||||
@ -218,7 +221,6 @@ AM_CPPFLAGS = \
|
||||
-DLIBDIR=\"$(libdir)\" \
|
||||
-DROOTLIBDIR=\"$(rootlibdir)\" \
|
||||
-DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \
|
||||
-DTEST_DIR=\"$(abs_top_srcdir)/test\" \
|
||||
-I $(top_srcdir)/src \
|
||||
-I $(top_builddir)/src/basic \
|
||||
-I $(top_srcdir)/src/basic \
|
||||
@ -1606,7 +1608,7 @@ tests += \
|
||||
test-seccomp
|
||||
endif
|
||||
|
||||
EXTRA_DIST += \
|
||||
TEST_DATA_FILES += \
|
||||
test/a.service \
|
||||
test/basic.target \
|
||||
test/b.service \
|
||||
@ -5638,7 +5640,7 @@ test_dns_packet_SOURCES = \
|
||||
|
||||
test_dns_packet_CPPFLAGS = \
|
||||
$(AM_CPPFLAGS) \
|
||||
-DRESOLVE_TEST_DIR=\"$(abs_top_srcdir)/src/resolve/test-data\"
|
||||
-I $(top_srcdir)/src/test
|
||||
|
||||
test_dns_packet_CFLAGS = \
|
||||
$(AM_CFLAGS) \
|
||||
@ -5649,18 +5651,20 @@ test_dns_packet_LDADD = \
|
||||
$(GCRYPT_LIBS) \
|
||||
-lm
|
||||
|
||||
EXTRA_DIST += \
|
||||
src/resolve/test-data/_openpgpkey.fedoraproject.org.pkts \
|
||||
src/resolve/test-data/fedoraproject.org.pkts \
|
||||
src/resolve/test-data/gandi.net.pkts \
|
||||
src/resolve/test-data/google.com.pkts \
|
||||
src/resolve/test-data/root.pkts \
|
||||
src/resolve/test-data/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts \
|
||||
src/resolve/test-data/teamits.com.pkts \
|
||||
src/resolve/test-data/zbyszek@fedoraproject.org.pkts \
|
||||
src/resolve/test-data/_443._tcp.fedoraproject.org.pkts \
|
||||
src/resolve/test-data/kyhwana.org.pkts \
|
||||
src/resolve/test-data/fake-caa.pkts
|
||||
TEST_DATA_FILES += \
|
||||
test/test-resolve/_openpgpkey.fedoraproject.org.pkts \
|
||||
test/test-resolve/fedoraproject.org.pkts \
|
||||
test/test-resolve/gandi.net.pkts \
|
||||
test/test-resolve/google.com.pkts \
|
||||
test/test-resolve/root.pkts \
|
||||
test/test-resolve/sw1a1aa-sw1a2aa-sw1a2ab-sw1a2ac.find.me.uk.pkts \
|
||||
test/test-resolve/teamits.com.pkts \
|
||||
test/test-resolve/zbyszek@fedoraproject.org.pkts \
|
||||
test/test-resolve/_443._tcp.fedoraproject.org.pkts \
|
||||
test/test-resolve/kyhwana.org.pkts \
|
||||
test/test-resolve/fake-caa.pkts
|
||||
|
||||
EXTRA_DIST += $(TEST_DATA_FILES)
|
||||
|
||||
test_dnssec_SOURCES = \
|
||||
src/resolve/test-dnssec.c \
|
||||
@ -6694,6 +6698,20 @@ tests += \
|
||||
test-libsystemd-sym \
|
||||
test-libudev-sym
|
||||
|
||||
.PHONY: install-tests
|
||||
install-tests: $(tests) $(TEST_DATA_FILES)
|
||||
for f in $(tests); do \
|
||||
if [ -x .libs/$$f ]; then \
|
||||
install -D -m 755 .libs/$$f $(DESTDIR)/$(testsdir)/$$f; \
|
||||
else \
|
||||
install -D -m 755 $$f $(DESTDIR)/$(testsdir)/$$f; \
|
||||
fi; \
|
||||
done
|
||||
for f in $(TEST_DATA_FILES); do \
|
||||
install -D -m 644 $$f $(DESTDIR)/$(testsdir)/testdata/$${f#test/}; \
|
||||
done
|
||||
|
||||
|
||||
.PHONY: cppcheck
|
||||
cppcheck:
|
||||
cppcheck --enable=all -q $(top_srcdir)
|
||||
|
@ -31,6 +31,8 @@
|
||||
#include "strv.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) {
|
||||
@ -115,7 +117,7 @@ int main(int argc, char **argv) {
|
||||
N = argc - 1;
|
||||
fnames = argv + 1;
|
||||
} else {
|
||||
assert_se(glob(RESOLVE_TEST_DIR "/*.pkts", GLOB_NOSORT, NULL, &g) == 0);
|
||||
assert_se(glob(TEST_DATA_DIR("/test-resolve/*.pkts"), GLOB_NOSORT, NULL, &g) == 0);
|
||||
N = g.gl_pathc;
|
||||
fnames = g.gl_pathv;
|
||||
}
|
||||
|
@ -17,6 +17,9 @@
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
#include <alloc-util.h>
|
||||
#include <fs-util.h>
|
||||
#include <libgen.h>
|
||||
#include <stdlib.h>
|
||||
#include <util.h>
|
||||
|
||||
@ -31,3 +34,13 @@ char* setup_fake_runtime_dir(void) {
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
const char* get_exe_relative_testdata_dir(void) {
|
||||
_cleanup_free_ char *exedir = NULL;
|
||||
/* convenience: caller does not need to free result */
|
||||
static char testdir[PATH_MAX];
|
||||
|
||||
assert_se(readlink_and_make_absolute("/proc/self/exe", &exedir) >= 0);
|
||||
assert_se(snprintf(testdir, sizeof(testdir), "%s/testdata", dirname(exedir)) > 0);
|
||||
return testdir;
|
||||
}
|
||||
|
@ -20,3 +20,4 @@
|
||||
***/
|
||||
|
||||
char* setup_fake_runtime_dir(void);
|
||||
const char* get_exe_relative_testdata_dir(void);
|
||||
|
@ -34,7 +34,7 @@ static int test_cgroup_mask(void) {
|
||||
int r;
|
||||
|
||||
/* Prepare the manager. */
|
||||
assert_se(set_unit_path(TEST_DIR) >= 0);
|
||||
assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0);
|
||||
r = manager_new(UNIT_FILE_USER, true, &m);
|
||||
if (r == -EPERM || r == -EACCES) {
|
||||
puts("manager_new: Permission denied. Skipping test.");
|
||||
|
@ -40,7 +40,7 @@ int main(int argc, char *argv[]) {
|
||||
assert_se(runtime_dir = setup_fake_runtime_dir());
|
||||
|
||||
/* prepare the test */
|
||||
assert_se(set_unit_path(TEST_DIR) >= 0);
|
||||
assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0);
|
||||
r = manager_new(UNIT_FILE_USER, true, &m);
|
||||
if (MANAGER_SKIP_TEST(r)) {
|
||||
log_notice_errno(r, "Skipping test: manager_new: %m");
|
||||
|
@ -516,7 +516,7 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
assert_se(setenv("XDG_RUNTIME_DIR", "/tmp/", 1) == 0);
|
||||
assert_se(set_unit_path(TEST_DIR "/test-execute/") >= 0);
|
||||
assert_se(set_unit_path(TEST_DATA_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),
|
||||
|
@ -20,6 +20,8 @@
|
||||
***/
|
||||
|
||||
#include "sd-daemon.h"
|
||||
#include "string-util.h"
|
||||
#include "tests.h"
|
||||
|
||||
#include "macro.h"
|
||||
|
||||
@ -39,3 +41,6 @@
|
||||
-ENOENT, \
|
||||
-ENOMEDIUM /* cannot determine cgroup */ \
|
||||
)
|
||||
|
||||
#define TEST_DATA_DIR(subdir) \
|
||||
strjoina(getenv("TEST_DIR") ?: get_exe_relative_testdata_dir(), subdir)
|
||||
|
@ -263,7 +263,7 @@ int main(int argc, char *argv[]) {
|
||||
log_open();
|
||||
|
||||
assert_se(runtime_dir = setup_fake_runtime_dir());
|
||||
assert_se(set_unit_path(TEST_DIR "/test-path/") >= 0);
|
||||
assert_se(set_unit_path(TEST_DATA_DIR("/test-path/")) >= 0);
|
||||
|
||||
for (test = tests; test && *test; test++) {
|
||||
int r;
|
||||
|
@ -37,7 +37,7 @@ int main(int argc, char *argv[]) {
|
||||
assert_se(runtime_dir = setup_fake_runtime_dir());
|
||||
|
||||
/* prepare the test */
|
||||
assert_se(set_unit_path(TEST_DIR) >= 0);
|
||||
assert_se(set_unit_path(TEST_DATA_DIR("")) >= 0);
|
||||
r = manager_new(UNIT_FILE_USER, true, &m);
|
||||
if (MANAGER_SKIP_TEST(r)) {
|
||||
log_notice_errno(r, "Skipping test: manager_new: %m");
|
||||
|
Loading…
Reference in New Issue
Block a user