Merge pull request #10070 from keszybz/test-reporting

Test reporting improvements
This commit is contained in:
Yu Watanabe 2018-09-15 15:55:15 +09:00 committed by GitHub
commit 0ac4f1a513
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
93 changed files with 431 additions and 435 deletions

7
NEWS
View File

@ -594,10 +594,9 @@ CHANGES WITH 237:
different from what the documentation said, and not particularly
useful, as repeated systemd-tmpfiles invocations would not be
idempotent and grow such files without bounds. With this release
behaviour has been altered slightly, to match what the documentation
says: lines of this type only have an effect if the indicated files
don't exist yet, and only then the argument string is written to the
file.
behaviour has been altered to match what the documentation says:
lines of this type only have an effect if the indicated files don't
exist yet, and only then the argument string is written to the file.
* FUTURE INCOMPATIBILITY: In systemd v238 we intend to slightly change
systemd-tmpfiles behaviour: previously, read-only files owned by root

View File

@ -36,9 +36,11 @@ endif
############################################################
parse_hwdb_py = find_program('parse_hwdb.py')
test('parse-hwdb',
parse_hwdb_py,
timeout : 90)
if want_tests != 'false'
test('parse-hwdb',
parse_hwdb_py,
timeout : 90)
endif
############################################################

View File

@ -270,12 +270,14 @@ pkgconfig = import('pkgconfig')
check_compilation_sh = find_program('tools/meson-check-compilation.sh')
meson_build_sh = find_program('tools/meson-build.sh')
if get_option('tests') != 'false'
cxx = find_program('c++', required : false)
if cxx.found()
# Used only for tests
add_languages('cpp')
endif
want_tests = get_option('tests')
slow_tests = want_tests != 'false' and get_option('slow-tests')
install_tests = get_option('install-tests')
cxx = find_program('c++', required : false)
if cxx.found()
# Used only for tests
add_languages('cpp')
endif
want_ossfuzz = get_option('oss-fuzz')
@ -1291,9 +1293,6 @@ conf.set10('ENABLE_NSS', enable_nss)
conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
want_tests = get_option('tests')
install_tests = get_option('install-tests')
slow_tests = get_option('slow-tests')
tests = []
fuzzers = []
@ -1465,7 +1464,8 @@ test_dlopen = executable(
test_dlopen_c,
include_directories : includes,
link_with : [libbasic],
dependencies : [libdl])
dependencies : [libdl],
build_by_default : want_tests != 'false')
foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
['systemd', 'ENABLE_NSS_SYSTEMD'],
@ -1503,9 +1503,12 @@ foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
'rm $DESTDIR@0@/libnss_@1@.so'
.format(rootlibdir, module))
test('dlopen-nss_' + module,
test_dlopen,
args : [nss.full_path()]) # path to dlopen must include a slash
if want_tests != 'false'
test('dlopen-nss_' + module,
test_dlopen,
# path to dlopen must include a slash
args : nss.full_path())
endif
endif
endforeach
@ -1746,9 +1749,12 @@ if conf.get('ENABLE_LOGIND') == 1
install : true,
install_dir : pamlibdir)
test('dlopen-pam_systemd',
test_dlopen,
args : [pam_systemd.full_path()]) # path to dlopen must include a slash
if want_tests != 'false'
test('dlopen-pam_systemd',
test_dlopen,
# path to dlopen must include a slash
args : pam_systemd.full_path())
endif
endif
endif
@ -2435,10 +2441,12 @@ if conf.get('ENABLE_TMPFILES') == 1
install_dir : rootbindir)
public_programs += exe
test('test-systemd-tmpfiles',
test_systemd_tmpfiles_py,
args : exe.full_path())
# https://github.com/mesonbuild/meson/issues/2681
if want_tests != 'false'
test('test-systemd-tmpfiles',
test_systemd_tmpfiles_py,
# https://github.com/mesonbuild/meson/issues/2681
args : exe.full_path())
endif
endif
if conf.get('ENABLE_HWDB') == 1
@ -2476,7 +2484,7 @@ public_programs += exe
exe = executable('systemd-udevd',
systemd_udevd_sources,
include_directories : includes,
c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
c_args : '-DLOG_REALM=LOG_REALM_UDEV',
link_with : [libudev_core,
libsystemd_network,
libudev_static],
@ -2492,7 +2500,7 @@ public_programs += exe
exe = executable('udevadm',
udevadm_sources,
c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
c_args : '-DLOG_REALM=LOG_REALM_UDEV',
include_directories : includes,
link_with : [libudev_core,
libsystemd_network,
@ -2630,9 +2638,8 @@ foreach tuple : tests
timeout = type.split('=')[1].to_int()
type = ''
endif
if want_tests == 'false'
message('Not compiling @0@ because tests is set to false'.format(name))
elif condition == '' or conf.get(condition) == 1
if condition == '' or conf.get(condition) == 1
exe = executable(
name,
sources,
@ -2640,6 +2647,7 @@ foreach tuple : tests
link_with : link_with,
dependencies : dependencies,
c_args : defs,
build_by_default : want_tests != 'false',
install_rpath : rootlibexecdir,
install : install_tests,
install_dir : join_paths(testsdir, type))
@ -2648,7 +2656,7 @@ foreach tuple : tests
message('@0@ is a manual test'.format(name))
elif type == 'unsafe' and want_tests != 'unsafe'
message('@0@ is an unsafe test'.format(name))
else
elif want_tests != 'false'
test(name, exe,
env : test_env,
timeout : timeout)
@ -2663,9 +2671,12 @@ exe = executable(
test_libsystemd_sym_c,
include_directories : includes,
link_with : [libsystemd],
build_by_default : want_tests != 'false',
install : install_tests,
install_dir : testsdir)
test('test-libsystemd-sym', exe)
if want_tests != 'false'
test('test-libsystemd-sym', exe)
endif
exe = executable(
'test-libsystemd-static-sym',
@ -2674,10 +2685,10 @@ exe = executable(
link_with : [install_libsystemd_static],
dependencies : [threads], # threads is already included in dependencies on the library,
# but does not seem to get propagated. Add here as a work-around.
build_by_default : static_libsystemd_pic,
build_by_default : want_tests != 'false' and static_libsystemd_pic,
install : install_tests and static_libsystemd_pic,
install_dir : testsdir)
if static_libsystemd_pic
if want_tests != 'false' and static_libsystemd_pic
test('test-libsystemd-static-sym', exe)
endif
@ -2685,22 +2696,25 @@ exe = executable(
'test-libudev-sym',
test_libudev_sym_c,
include_directories : includes,
c_args : ['-Wno-deprecated-declarations'],
c_args : '-Wno-deprecated-declarations',
link_with : [libudev],
build_by_default : want_tests != 'false',
install : install_tests,
install_dir : testsdir)
test('test-libudev-sym', exe)
if want_tests != 'false'
test('test-libudev-sym', exe)
endif
exe = executable(
'test-libudev-static-sym',
test_libudev_sym_c,
include_directories : includes,
c_args : ['-Wno-deprecated-declarations'],
c_args : '-Wno-deprecated-declarations',
link_with : [install_libudev_static],
build_by_default : static_libudev_pic,
build_by_default : want_tests != 'false' and static_libudev_pic,
install : install_tests and static_libudev_pic,
install_dir : testsdir)
if static_libudev_pic
if want_tests != 'false' and static_libudev_pic
test('test-libudev-static-sym', exe)
endif
@ -2790,9 +2804,11 @@ meson_check_help = find_program('tools/meson-check-help.sh')
foreach exec : public_programs
name = exec.full_path().split('/')[-1]
test('check-help-' + name,
meson_check_help,
args : [exec.full_path()])
if want_tests != 'false'
test('check-help-' + name,
meson_check_help,
args : exec.full_path())
endif
endforeach
############################################################

View File

@ -169,9 +169,11 @@ if have_gnu_efi
efi_ldflags + tuple[2] +
['-lefi', '-lgnuefi', libgcc_file_name])
test('no-undefined-symbols-' + tuple[0],
no_undefined_symbols,
args : [so])
if want_tests != 'false'
test('no-undefined-symbols-' + tuple[0],
no_undefined_symbols,
args : [so])
endif
stub = custom_target(
tuple[1],

View File

@ -4,6 +4,7 @@
#include "log.h"
#include "fileio.h"
#include "fuzz.h"
#include "tests.h"
/* This is a test driver for the systemd fuzzers that provides main function
* for regression testing outside of oss-fuzz (https://github.com/google/oss-fuzz)
@ -16,9 +17,7 @@ int main(int argc, char **argv) {
size_t size;
char *name;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
for (i = 1; i < argc; i++) {
_cleanup_free_ char *buf = NULL;

View File

@ -206,9 +206,7 @@ int main(int argc, char *argv[]) {
setlocale(LC_ALL, "de_DE.UTF-8");
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
/* 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. */

View File

@ -8,6 +8,7 @@
#include "process-util.h"
#include "random-util.h"
#include "string-util.h"
#include "tests.h"
#include "util.h"
typedef int (compress_t)(const void *src, uint64_t src_size, void *dst,
@ -142,30 +143,23 @@ static void test_compress_decompress(const char* label, const char* type,
int main(int argc, char *argv[]) {
#if HAVE_XZ || HAVE_LZ4
const char *i;
int r;
log_set_max_level(LOG_INFO);
test_setup_logging(LOG_INFO);
if (argc >= 2) {
unsigned x;
assert_se(safe_atou(argv[1], &x) >= 0);
arg_duration = x * USEC_PER_SEC;
} else {
bool slow;
r = getenv_bool("SYSTEMD_SLOW_TESTS");
slow = r >= 0 ? r : SYSTEMD_SLOW_TESTS_DEFAULT;
arg_duration = slow ? 2 * USEC_PER_SEC : USEC_PER_SEC / 50;
}
} else
arg_duration = slow_tests_enabled() ?
2 * USEC_PER_SEC : USEC_PER_SEC / 50;
if (argc == 3)
(void) safe_atozu(argv[2], &arg_start);
else
arg_start = getpid_cached();
const char *i;
NULSTR_FOREACH(i, "zeros\0simple\0random\0") {
#if HAVE_XZ
test_compress_decompress("XZ", i, compress_blob_xz, decompress_blob_xz);
@ -176,6 +170,6 @@ int main(int argc, char *argv[]) {
}
return 0;
#else
return EXIT_TEST_SKIP;
return log_tests_skipped("No compression feature is enabled");
#endif
}

View File

@ -12,6 +12,7 @@
#include "macro.h"
#include "path-util.h"
#include "random-util.h"
#include "tests.h"
#include "util.h"
#if HAVE_XZ
@ -253,7 +254,7 @@ int main(int argc, char *argv[]) {
memcpy(huge, "HUGE=", 5);
char_array_0(huge);
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
random_bytes(data + 7, sizeof(data) - 7);
@ -305,6 +306,7 @@ int main(int argc, char *argv[]) {
return 0;
#else
log_info("/* XZ and LZ4 tests skipped */");
return EXIT_TEST_SKIP;
#endif
}

View File

@ -7,12 +7,13 @@
#include "journal-internal.h"
#include "log.h"
#include "macro.h"
#include "tests.h"
int main(int argc, char *argv[]) {
unsigned n = 0;
_cleanup_(sd_journal_closep) sd_journal*j = NULL;
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY) >= 0);

View File

@ -5,6 +5,7 @@
#include "log.h"
#include "parse-util.h"
#include "rm-rf.h"
#include "tests.h"
#include "util.h"
int main(int argc, char *argv[]) {
@ -12,7 +13,7 @@ int main(int argc, char *argv[]) {
int r, i, I = 100;
char t[] = "/tmp/journal-stream-XXXXXX";
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
if (argc >= 2) {
r = safe_atoi(argv[1], &I);

View File

@ -15,9 +15,9 @@
#include "parse-util.h"
#include "rm-rf.h"
#include "util.h"
#include "tests.h"
/* This program tests skipping around in a multi-file journal.
*/
/* This program tests skipping around in a multi-file journal. */
static bool arg_keep = false;
@ -274,11 +274,11 @@ static void test_sequence_numbers(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
/* journal_file_open requires a valid machine id */
if (access("/etc/machine-id", F_OK) != 0)
return EXIT_TEST_SKIP;
return log_tests_skipped("/etc/machine-id not found");
arg_keep = argc > 1;

View File

@ -8,13 +8,14 @@
#include "journal-internal.h"
#include "log.h"
#include "string-util.h"
#include "tests.h"
#include "util.h"
int main(int argc, char *argv[]) {
_cleanup_(sd_journal_closep) sd_journal*j = NULL;
_cleanup_free_ char *t;
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(sd_journal_open(&j, 0) >= 0);

View File

@ -12,6 +12,7 @@
#include "macro.h"
#include "parse-util.h"
#include "rm-rf.h"
#include "tests.h"
#include "util.h"
#define N_ENTRIES 200
@ -68,9 +69,9 @@ int main(int argc, char *argv[]) {
/* journal_file_open requires a valid machine id */
if (access("/etc/machine-id", F_OK) != 0)
return EXIT_TEST_SKIP;
return log_tests_skipped("/etc/machine-id not found");
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(mkdtemp(t));
assert_se(chdir(t) >= 0);

View File

@ -10,6 +10,7 @@
#include "log.h"
#include "rm-rf.h"
#include "terminal-util.h"
#include "tests.h"
#include "util.h"
#define N_ENTRIES 6000
@ -62,9 +63,9 @@ int main(int argc, char *argv[]) {
/* journal_file_open requires a valid machine id */
if (access("/etc/machine-id", F_OK) != 0)
return EXIT_TEST_SKIP;
return log_tests_skipped("/etc/machine-id not found");
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(mkdtemp(t));
assert_se(chdir(t) >= 0);

View File

@ -8,6 +8,7 @@
#include "journal-vacuum.h"
#include "log.h"
#include "rm-rf.h"
#include "tests.h"
static bool arg_keep = false;
@ -21,7 +22,7 @@ static void test_non_empty(void) {
sd_id128_t fake_boot_id;
char t[] = "/tmp/journal-XXXXXX";
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(mkdtemp(t));
assert_se(chdir(t) >= 0);
@ -112,7 +113,7 @@ static void test_empty(void) {
JournalFile *f1, *f2, *f3, *f4;
char t[] = "/tmp/journal-XXXXXX";
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(mkdtemp(t));
assert_se(chdir(t) >= 0);
@ -164,7 +165,7 @@ static bool check_compressed(uint64_t compress_threshold, uint64_t data_size) {
assert_se(data_size <= sizeof(data));
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(mkdtemp(t));
assert_se(chdir(t) >= 0);
@ -238,9 +239,11 @@ static void test_min_compress_size(void) {
int main(int argc, char *argv[]) {
arg_keep = argc > 1;
test_setup_logging(LOG_INFO);
/* journal_file_open requires a valid machine id */
if (access("/etc/machine-id", F_OK) != 0)
return EXIT_TEST_SKIP;
return log_tests_skipped("/etc/machine-id not found");
test_non_empty();
test_empty();

View File

@ -13,6 +13,7 @@
#include "in-addr-util.h"
#include "netlink-util.h"
#include "tests.h"
#include "util.h"
static void acd_handler(sd_ipv4acd *acd, int event, void *userdata) {
@ -83,9 +84,7 @@ static int test_acd(const char *ifname, const char *address) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
if (argc == 3)
return test_acd(argv[1], argv[2]);

View File

@ -16,6 +16,7 @@
#include "dhcp-internal.h"
#include "dhcp-protocol.h"
#include "fd-util.h"
#include "tests.h"
#include "util.h"
static uint8_t mac_addr[] = {'A', 'B', 'C', '1', '2', '3'};
@ -524,9 +525,7 @@ static void test_addr_acq(sd_event *e) {
int main(int argc, char *argv[]) {
_cleanup_(sd_event_unrefp) sd_event *e;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
assert_se(sd_event_new(&e) >= 0);

View File

@ -9,6 +9,7 @@
#include "sd-event.h"
#include "dhcp-server-internal.h"
#include "tests.h"
static void test_pool(struct in_addr *address, unsigned size, int ret) {
_cleanup_(sd_dhcp_server_unrefp) sd_dhcp_server *server = NULL;
@ -54,9 +55,8 @@ static int test_basic(sd_event *event) {
test_pool(&address_lo, 1, 0);
r = sd_dhcp_server_start(server);
if (r == -EPERM)
return EXIT_TEST_SKIP;
return log_info_errno(r, "sd_dhcp_server_start failed: %m");
assert_se(r >= 0);
assert_se(sd_dhcp_server_start(server) == -EBUSY);
@ -229,15 +229,13 @@ int main(int argc, char *argv[]) {
_cleanup_(sd_event_unrefp) sd_event *e;
int r;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
assert_se(sd_event_new(&e) >= 0);
r = test_basic(e);
if (r != 0)
return r;
return log_tests_skipped("cannot start dhcp server");
test_message_handler();
test_client_id_hash();

View File

@ -19,6 +19,7 @@
#include "fd-util.h"
#include "macro.h"
#include "socket-util.h"
#include "tests.h"
#include "virt.h"
static struct ether_addr mac_addr = {
@ -910,9 +911,7 @@ int main(int argc, char *argv[]) {
assert_se(sd_event_new(&e) >= 0);
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_client_basic(e);
test_option(e);

View File

@ -15,6 +15,7 @@
#include "netlink-util.h"
#include "parse-util.h"
#include "string-util.h"
#include "tests.h"
#include "util.h"
static void ll_handler(sd_ipv4ll *ll, int event, void *userdata) {
@ -95,9 +96,7 @@ static int test_ll(const char *ifname, const char *seed) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
if (argc == 2)
return test_ll(argv[1], NULL);

View File

@ -15,6 +15,7 @@
#include "arp-util.h"
#include "fd-util.h"
#include "socket-util.h"
#include "tests.h"
#include "util.h"
static bool verbose = false;
@ -193,9 +194,7 @@ static void test_basic_request(sd_event *e) {
int main(int argc, char *argv[]) {
_cleanup_(sd_event_unrefp) sd_event *e = NULL;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
assert_se(sd_event_new(&e) >= 0);

View File

@ -13,6 +13,7 @@
#include "icmp6-util.h"
#include "socket-util.h"
#include "strv.h"
#include "tests.h"
static struct ether_addr mac_addr = {
.ether_addr_octet = { 0x78, 0x2b, 0xcb, 0xb3, 0x6d, 0x53 }
@ -357,9 +358,7 @@ static void test_ra(void) {
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_radv_prefix();
test_radv();

View File

@ -14,6 +14,7 @@
#include "socket-util.h"
#include "strv.h"
#include "ndisc-internal.h"
#include "tests.h"
static struct ether_addr mac_addr = {
.ether_addr_octet = {'A', 'B', 'C', '1', '2', '3'}
@ -407,9 +408,7 @@ static void test_timeout(void) {
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_rs();
test_timeout();

View File

@ -16,6 +16,7 @@
#include "format-util.h"
#include "log.h"
#include "macro.h"
#include "tests.h"
#include "util.h"
static int match_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
@ -509,11 +510,11 @@ int main(int argc, char *argv[]) {
void *p;
int q, r;
test_setup_logging(LOG_INFO);
r = server_init(&bus);
if (r < 0) {
log_info("Failed to connect to bus, skipping tests.");
return EXIT_TEST_SKIP;
}
if (r < 0)
return log_tests_skipped("Failed to connect to bus");
log_info("Initialized...");

View File

@ -8,6 +8,7 @@
#include "bus-message.h"
#include "bus-util.h"
#include "refcnt.h"
#include "tests.h"
static void test_bus_new(void) {
_cleanup_(sd_bus_unrefp) sd_bus *bus = NULL;
@ -59,17 +60,12 @@ static void test_bus_new_signal(void) {
}
int main(int argc, char **argv) {
int r;
log_parse_environment();
log_open();
test_setup_logging(LOG_INFO);
test_bus_new();
r = test_bus_open();
if (r < 0) {
log_info("Failed to connect to bus, skipping tests.");
return EXIT_TEST_SKIP;
}
if (test_bus_open() < 0)
return log_tests_skipped("Failed to connect to bus");
test_bus_new_method_call();
test_bus_new_signal();

View File

@ -5,19 +5,16 @@
#include "bus-dump.h"
#include "bus-util.h"
#include "cgroup-util.h"
#include "tests.h"
int main(int argc, char *argv[]) {
_cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL;
int r;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
if (cg_unified_flush() == -ENOMEDIUM) {
log_info("Skipping test: /sys/fs/cgroup/ not available");
return EXIT_TEST_SKIP;
}
if (cg_unified_flush() == -ENOMEDIUM)
return log_tests_skipped("/sys/fs/cgroup/ not available");
r = sd_bus_creds_new_from_pid(&creds, 0, _SD_BUS_CREDS_ALL);
log_full_errno(r < 0 ? LOG_ERR : LOG_DEBUG, r, "sd_bus_creds_new_from_pid: %m");

View File

@ -13,6 +13,7 @@
#include "bus-message.h"
#include "bus-util.h"
#include "macro.h"
#include "tests.h"
#include "util.h"
static void test_bus_gvariant_is_fixed_size(void) {
@ -113,16 +114,16 @@ static void test_bus_gvariant_get_alignment(void) {
assert_se(bus_gvariant_get_alignment("((t)(t))") == 8);
}
static void test_marshal(void) {
static int test_marshal(void) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL, *n = NULL;
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
_cleanup_free_ void *blob;
_cleanup_free_ void *blob = NULL;
size_t sz;
int r;
r = sd_bus_open_user(&bus);
if (r < 0)
exit(EXIT_TEST_SKIP);
return log_tests_skipped_errno(r, "Failed to connect to bus");
bus->message_version = 2; /* dirty hack to enable gvariant */
@ -194,14 +195,16 @@ static void test_marshal(void) {
assert_se(sd_bus_message_seal(m, 4712, 0) >= 0);
assert_se(bus_message_dump(m, NULL, BUS_MESSAGE_DUMP_WITH_HEADER) >= 0);
return EXIT_SUCCESS;
}
int main(int argc, char *argv[]) {
test_setup_logging(LOG_INFO);
test_bus_gvariant_is_fixed_size();
test_bus_gvariant_get_size();
test_bus_gvariant_get_alignment();
test_marshal();
return 0;
return test_marshal();
}

View File

@ -21,6 +21,7 @@
#include "fd-util.h"
#include "hexdecoct.h"
#include "log.h"
#include "tests.h"
#include "util.h"
static void test_bus_path_encode_unique(void) {
@ -120,9 +121,11 @@ int main(int argc, char *argv[]) {
double dbl;
uint64_t u64;
test_setup_logging(LOG_INFO);
r = sd_bus_default_user(&bus);
if (r < 0)
return EXIT_TEST_SKIP;
return log_tests_skipped("Failed to connect to bus");
r = sd_bus_message_new_method_call(bus, &m, "foobar.waldo", "/", "foobar.waldo", "Piep");
assert_se(r >= 0);

View File

@ -6,6 +6,7 @@
#include "bus-util.h"
#include "log.h"
#include "macro.h"
#include "tests.h"
static bool mask[32];
@ -77,9 +78,11 @@ int main(int argc, char *argv[]) {
sd_bus_slot slots[19];
int r;
test_setup_logging(LOG_INFO);
r = sd_bus_open_user(&bus);
if (r < 0)
return EXIT_TEST_SKIP;
return log_tests_skipped("Failed to connect to bus");
assert_se(match_add(slots, &root, "arg2='wal\\'do',sender='foo',type='signal',interface='bar.x',", 1) >= 0);
assert_se(match_add(slots, &root, "arg2='wal\\'do2',sender='foo',type='signal',interface='bar.x',", 2) >= 0);

View File

@ -6,6 +6,7 @@
#include "sd-bus.h"
#include "macro.h"
#include "tests.h"
static bool track_cb_called_x = false;
static bool track_cb_called_y = false;
@ -47,14 +48,14 @@ int main(int argc, char *argv[]) {
const char *unique;
int r;
test_setup_logging(LOG_INFO);
r = sd_event_default(&event);
assert_se(r >= 0);
r = sd_bus_open_user(&a);
if (IN_SET(r, -ECONNREFUSED, -ENOENT)) {
log_info("Failed to connect to bus, skipping tests.");
return EXIT_TEST_SKIP;
}
if (IN_SET(r, -ECONNREFUSED, -ENOENT))
return log_tests_skipped("Failed to connect to bus");
assert_se(r >= 0);
r = sd_bus_attach_event(a, event, SD_EVENT_PRIORITY_NORMAL);

View File

@ -16,6 +16,7 @@
#include "signal-util.h"
#include "stdio-util.h"
#include "string-util.h"
#include "tests.h"
#include "util.h"
static int prepare_handler(sd_event_source *s, void *userdata) {
@ -481,9 +482,7 @@ static void test_inotify(unsigned n_create_events) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
test_basic();
test_sd_event_now();

View File

@ -4,6 +4,7 @@
#include "alloc-util.h"
#include "in-addr-util.h"
#include "local-addresses.h"
#include "tests.h"
static void print_local_addresses(struct local_address *a, unsigned n) {
unsigned i;
@ -20,9 +21,7 @@ int main(int argc, char *argv[]) {
struct local_address *a;
int n;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
a = NULL;
n = local_addresses(NULL, 0, AF_UNSPEC, &a);

View File

@ -10,6 +10,7 @@
#include "network-internal.h"
#include "networkd-manager.h"
#include "string-util.h"
#include "tests.h"
static void test_deserialize_in_addr(void) {
_cleanup_free_ struct in_addr *addresses = NULL;
@ -223,6 +224,8 @@ int main(void) {
_cleanup_(sd_device_unrefp) sd_device *loopback = NULL;
int ifindex, r;
test_setup_logging(LOG_INFO);
test_deserialize_in_addr();
test_deserialize_dhcp_routes();
test_address_equality();
@ -232,7 +235,8 @@ int main(void) {
r = test_load_config(manager);
if (r == -EPERM)
return EXIT_TEST_SKIP;
return log_tests_skipped("Cannot load configuration");
assert_se(r == 0);
assert_se(sd_device_new_from_syspath(&loopback, "/sys/class/net/lo") >= 0);
assert_se(loopback);

View File

@ -9,6 +9,7 @@
#include "network-internal.h"
#include "networkd-manager.h"
#include "string-util.h"
#include "tests.h"
static void test_rule_serialization(const char *title, const char *ruleset, const char *expected) {
char pattern[] = "/tmp/systemd-test-routing-policy-rule.XXXXXX",
@ -57,9 +58,7 @@ static void test_rule_serialization(const char *title, const char *ruleset, cons
int main(int argc, char **argv) {
_cleanup_free_ char *p = NULL;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_rule_serialization("basic parsing",
"RULE=from=1.2.3.4/32 to=2.3.4.5/32 tos=5 fwmark=1/2 table=10", NULL);

View File

@ -5,15 +5,14 @@
#include "log.h"
#include "nspawn-patch-uid.h"
#include "user-util.h"
#include "tests.h"
#include "util.h"
int main(int argc, char *argv[]) {
uid_t shift, range;
int r;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
if (argc != 4) {
log_error("Expected PATH SHIFT RANGE parameters.");

View File

@ -7,7 +7,9 @@
#include <util.h>
#include "alloc-util.h"
#include "env-util.h"
#include "fileio.h"
#include "log.h"
#include "path-util.h"
#include "strv.h"
#include "tests.h"
@ -76,3 +78,33 @@ const char* get_catalog_dir(void) {
}
return env;
}
bool slow_tests_enabled(void) {
int r;
r = getenv_bool("SYSTEMD_SLOW_TESTS");
if (r >= 0)
return r;
if (r != -ENXIO)
log_warning_errno(r, "Cannot parse $SYSTEMD_SLOW_TESTS, ignoring.");
return SYSTEMD_SLOW_TESTS_DEFAULT;
}
void test_setup_logging(int level) {
log_set_max_level(level);
log_parse_environment();
log_open();
}
int log_tests_skipped(const char *message) {
log_notice("%s: %s, skipping tests.",
program_invocation_short_name, message);
return EXIT_TEST_SKIP;
}
int log_tests_skipped_errno(int r, const char *message) {
log_notice_errno(r, "%s: %s, skipping tests: %m",
program_invocation_short_name, message);
return EXIT_TEST_SKIP;
}

View File

@ -4,3 +4,7 @@
char* setup_fake_runtime_dir(void);
const char* get_testdata_dir(void);
const char* get_catalog_dir(void);
bool slow_tests_enabled(void);
void test_setup_logging(int level);
int log_tests_skipped(const char *message);
int log_tests_skipped_errno(int r, const char *message);

View File

@ -65,10 +65,12 @@ endif
foreach header : _systemd_headers
foreach opt : opts
name = ''.join([header, ':'] + opt)
test('cc-' + name,
check_compilation_sh,
args : cc.cmd_array() + ['-c', '-x'] + opt +
['-Werror', '-include',
join_paths(meson.current_source_dir(), header)])
if want_tests != 'false'
test('cc-' + name,
check_compilation_sh,
args : cc.cmd_array() + ['-c', '-x'] + opt +
['-Werror', '-include',
join_paths(meson.current_source_dir(), header)])
endif
endforeach
endforeach

View File

@ -6,7 +6,8 @@ test_hashmap_ordered_c = custom_target(
input : [awkscript, 'test-hashmap-plain.c'],
output : 'test-hashmap-ordered.c',
command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
capture : true)
capture : true,
build_by_default : want_tests != 'false')
test_include_dir = include_directories('.')
@ -26,14 +27,16 @@ test_libsystemd_sym_c = custom_target(
input : [libsystemd_sym_path] + systemd_headers,
output : 'test-libsystemd-sym.c',
command : [generate_sym_test_py, libsystemd_sym_path] + systemd_headers,
capture : true)
capture : true,
build_by_default : want_tests != 'false')
test_libudev_sym_c = custom_target(
'test-libudev-sym.c',
input : [libudev_sym_path, libudev_h_path],
output : 'test-libudev-sym.c',
command : [generate_sym_test_py, '@INPUT0@', '@INPUT1@'],
capture : true)
capture : true,
build_by_default : want_tests != 'false')
test_dlopen_c = files('test-dlopen.c')

View File

@ -2,6 +2,7 @@
#include "architecture.h"
#include "log.h"
#include "tests.h"
#include "util.h"
#include "virt.h"
@ -9,6 +10,8 @@ int main(int argc, char *argv[]) {
int a, v;
const char *p;
test_setup_logging(LOG_INFO);
assert_se(architecture_from_string("") < 0);
assert_se(architecture_from_string(NULL) < 0);
assert_se(architecture_from_string("hoge") < 0);
@ -18,7 +21,7 @@ int main(int argc, char *argv[]) {
v = detect_virtualization();
if (IN_SET(v, -EPERM, -EACCES))
return EXIT_TEST_SKIP;
return log_tests_skipped("Cannot detect virtualization");
assert_se(v >= 0);

View File

@ -16,6 +16,7 @@
#include "barrier.h"
#include "util.h"
#include "tests.h"
/* 20ms to test deadlocks; All timings use multiples of this constant as
* alarm/sleep timers. If this timeout is too small for slow machines to perform
@ -419,18 +420,10 @@ TEST_BARRIER(test_barrier_pending_exit,
TEST_BARRIER_WAIT_SUCCESS(pid2));
int main(int argc, char *argv[]) {
/*
* This test uses real-time alarms and sleeps to test for CPU races
* explicitly. This is highly fragile if your system is under load. We
* already increased the BASE_TIME value to make the tests more robust,
* but that just makes the test take significantly longer. Hence,
* disable the test by default, so it will not break CI.
*/
if (argc < 2)
return EXIT_TEST_SKIP;
test_setup_logging(LOG_INFO);
log_parse_environment();
log_open();
if (!slow_tests_enabled())
return log_tests_skipped("slow tests are disabled");
test_barrier_sync();
test_barrier_wait_next();

View File

@ -4,6 +4,7 @@
#include "boot-timestamps.h"
#include "efivars.h"
#include "log.h"
#include "tests.h"
#include "util.h"
static int test_acpi_fpdt(void) {
@ -81,8 +82,7 @@ static int test_boot_timestamps(void) {
int main(int argc, char* argv[]) {
int p, q, r;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
p = test_acpi_fpdt();
assert(p >= 0);
@ -91,5 +91,8 @@ int main(int argc, char* argv[]) {
r = test_boot_timestamps();
assert(r >= 0);
return (p > 0 || q > 0 || r >> 0) ? EXIT_SUCCESS : EXIT_TEST_SKIP;
if (p == 0 && q == 0 && r == 0)
return log_tests_skipped("access to firmware variables not possible");
return EXIT_SUCCESS;
}

View File

@ -28,15 +28,11 @@ int main(int argc, char *argv[]) {
char log_buf[65535];
int r;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
log_notice("cgroupfs not available, skipping tests");
return EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
assert_se(set_unit_path(get_testdata_dir()) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
@ -47,16 +43,12 @@ int main(int argc, char *argv[]) {
r = bpf_program_add_instructions(p, exit_insn, ELEMENTSOF(exit_insn));
assert(r == 0);
if (getuid() != 0) {
log_notice("Not running as root, skipping kernel related tests.");
return EXIT_TEST_SKIP;
}
if (getuid() != 0)
return log_tests_skipped("not running as root");
r = bpf_firewall_supported();
if (r == BPF_FIREWALL_UNSUPPORTED) {
log_notice("BPF firewalling not supported, skipping");
return EXIT_TEST_SKIP;
}
if (r == BPF_FIREWALL_UNSUPPORTED)
return log_tests_skipped("BPF firewalling not supported");
assert_se(r > 0);
if (r == BPF_FIREWALL_SUPPORTED_WITH_MULTI)
@ -110,9 +102,8 @@ int main(int argc, char *argv[]) {
unit_dump(u, stdout, NULL);
r = bpf_firewall_compile(u);
if (IN_SET(r, -ENOTTY, -ENOSYS, -EPERM ))
/* Kernel doesn't support the necessary bpf bits, or masked out via seccomp? */
return EXIT_TEST_SKIP;
if (IN_SET(r, -ENOTTY, -ENOSYS, -EPERM))
return log_tests_skipped("Kernel doesn't support the necessary bpf bits (masked out via seccomp?)");
assert_se(r >= 0);
assert(u->ip_bpf_ingress);

View File

@ -2,6 +2,7 @@
#include "bus-util.h"
#include "log.h"
#include "tests.h"
static void test_name_async(unsigned n_messages) {
_cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL;
@ -78,9 +79,7 @@ static void test_destroy_callback(void) {
}
int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_name_async(0);
test_name_async(20);

View File

@ -14,6 +14,7 @@
#include "fileio.h"
#include "macro.h"
#include "parse-util.h"
#include "tests.h"
#include "util.h"
static uid_t test_uid = -1;
@ -91,10 +92,9 @@ static int setup_tests(bool *run_ambient) {
int r;
nobody = getpwnam(NOBODY_USER_NAME);
if (!nobody) {
log_error_errno(errno, "Could not find nobody user: %m");
return -EXIT_TEST_SKIP;
}
if (!nobody)
return log_error_errno(errno, "Could not find nobody user: %m");
test_uid = nobody->pw_uid;
test_gid = nobody->pw_gid;
@ -218,23 +218,20 @@ static void test_set_ambient_caps(void) {
}
int main(int argc, char *argv[]) {
int r;
bool run_ambient;
test_setup_logging(LOG_INFO);
test_last_cap_file();
test_last_cap_probe();
log_parse_environment();
log_open();
log_info("have ambient caps: %s", yes_no(ambient_capabilities_supported()));
if (getuid() != 0)
return EXIT_TEST_SKIP;
return log_tests_skipped("not running as root");
r = setup_tests(&run_ambient);
if (r < 0)
return -r;
if (setup_tests(&run_ambient) < 0)
return log_tests_skipped("setup failed");
show_capabilities();

View File

@ -17,19 +17,18 @@ static int test_cgroup_mask(void) {
int r;
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
puts("Skipping test: cgroupfs not available");
return EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
/* Prepare the manager. */
assert_se(set_unit_path(get_testdata_dir()) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m);
if (IN_SET(r, -EPERM, -EACCES)) {
puts("manager_new: Permission denied. Skipping test.");
return EXIT_TEST_SKIP;
log_error_errno(r, "manager_new: %m");
return log_tests_skipped("cannot create manager");
}
assert_se(r >= 0);
/* Turn off all kinds of default accouning, so that we can
@ -117,13 +116,12 @@ static void test_cg_mask_to_string(void) {
}
int main(int argc, char* argv[]) {
int rc = 0;
int rc = EXIT_SUCCESS;
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
TEST_REQ_RUNNING_SYSTEMD(rc = test_cgroup_mask());
test_cg_mask_to_string();
TEST_REQ_RUNNING_SYSTEMD(rc = test_cgroup_mask());
return rc;
}

View File

@ -14,6 +14,7 @@
#include "string-util.h"
#include "strv.h"
#include "test-helper.h"
#include "tests.h"
#include "user-util.h"
#include "util.h"
@ -447,9 +448,7 @@ static void test_cg_get_keyed_attribute(void) {
}
int main(void) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_path_decode_unit();
test_path_get_unit();

View File

@ -26,6 +26,7 @@
#include "strv.h"
#include "tomoyo-util.h"
#include "user-util.h"
#include "tests.h"
#include "util.h"
#include "virt.h"
@ -113,7 +114,7 @@ static void test_condition_test_path(void) {
condition_free(condition);
}
static int test_condition_test_control_group_controller(void) {
static void test_condition_test_control_group_controller(void) {
Condition *condition;
CGroupMask system_mask;
CGroupController controller;
@ -123,7 +124,7 @@ static int test_condition_test_control_group_controller(void) {
r = cg_unified_flush();
if (r < 0) {
log_notice_errno(r, "Skipping ConditionControlGroupController tests: %m");
return EXIT_TEST_SKIP;
return;
}
/* Invalid controllers are ignored */
@ -180,8 +181,6 @@ static int test_condition_test_control_group_controller(void) {
assert_se(condition);
assert_se(!condition_test(condition));
condition_free(condition);
return EXIT_SUCCESS;
}
static void test_condition_test_ac_power(void) {
@ -675,9 +674,7 @@ static void test_condition_test_group(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_condition_test_path();
test_condition_test_ac_power();

View File

@ -16,6 +16,7 @@
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
#include "user-util.h"
#include "util.h"
@ -93,9 +94,7 @@ static void test_conf_files_list(bool use_root) {
}
int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_conf_files_list(false);
test_conf_files_list(true);

View File

@ -14,6 +14,7 @@
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
#include "user-util.h"
#include "util.h"
@ -254,7 +255,7 @@ static void test_copy_atomic(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
test_copy_file();
test_copy_file_fd();

View File

@ -4,6 +4,7 @@
#include "alloc-util.h"
#include "string-util.h"
#include "tests.h"
#include "util.h"
static void test_should_pass(const char *p) {
@ -66,9 +67,7 @@ static void test_one_noutc(const char *p) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_one("17:41");
test_one("18:42:44");

View File

@ -7,13 +7,14 @@
#include "log.h"
#include "loop-util.h"
#include "string-util.h"
#include "tests.h"
int main(int argc, char *argv[]) {
_cleanup_(loop_device_unrefp) LoopDevice *d = NULL;
_cleanup_(dissected_image_unrefp) DissectedImage *m = NULL;
int r, i;
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
if (argc < 2) {
log_error("Requires one command line argument.");

View File

@ -4,6 +4,7 @@
#include "dns-domain.h"
#include "macro.h"
#include "string-util.h"
#include "tests.h"
static void test_dns_label_unescape_one(const char *what, const char *expect, size_t buffer_sz, int ret) {
char buffer[buffer_sz];
@ -687,9 +688,7 @@ static void test_dns_name_is_valid_or_address(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_dns_label_unescape();
test_dns_label_unescape_suffix();

View File

@ -18,24 +18,18 @@ int main(int argc, char *argv[]) {
Job *j;
int r;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
log_notice_errno(r, "Skipping test: cgroupfs not available");
return EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
/* prepare the test */
assert_se(set_unit_path(get_testdata_dir()) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m);
if (MANAGER_SKIP_TEST(r)) {
log_notice_errno(r, "Skipping test: manager_new: %m");
return EXIT_TEST_SKIP;
}
if (MANAGER_SKIP_TEST(r))
return log_tests_skipped_errno(r, "manager_new");
assert_se(r >= 0);
assert_se(manager_startup(m, NULL, NULL) >= 0);

View File

@ -3,6 +3,7 @@
#include "alloc-util.h"
#include "escape.h"
#include "macro.h"
#include "tests.h"
static void test_cescape(void) {
_cleanup_free_ char *escaped;
@ -119,9 +120,7 @@ static void test_shell_maybe_quote(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_cescape();
test_cunescape();

View File

@ -19,6 +19,7 @@
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
static int here = 0, here2 = 0, here3 = 0;
void *ignore_stdout_args[] = {&here, &here2, &here3};
@ -334,9 +335,7 @@ static void test_environment_gathering(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_execute_directory(true);
test_execute_directory(false);

View File

@ -664,10 +664,8 @@ static int run_tests(UnitFileScope scope, const test_function_t *tests) {
assert_se(tests);
r = manager_new(scope, MANAGER_TEST_RUN_BASIC, &m);
if (MANAGER_SKIP_TEST(r)) {
log_notice_errno(r, "Skipping test: manager_new: %m");
return EXIT_TEST_SKIP;
}
if (MANAGER_SKIP_TEST(r))
return log_tests_skipped_errno(r, "manager_new");
assert_se(r >= 0);
assert_se(manager_startup(m, NULL, NULL) >= 0);
@ -724,25 +722,19 @@ int main(int argc, char *argv[]) {
};
int r;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
(void) unsetenv("USER");
(void) unsetenv("LOGNAME");
(void) unsetenv("SHELL");
/* It is needed otherwise cgroup creation fails */
if (getuid() != 0) {
puts("Skipping test: not root");
return EXIT_TEST_SKIP;
}
if (getuid() != 0)
return log_tests_skipped("not root");
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
puts("Skipping test: cgroupfs not available");
return EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
assert_se(runtime_dir = setup_fake_runtime_dir());
test_execute_path = path_join(NULL, get_testdata_dir(), "test-execute");

View File

@ -12,6 +12,7 @@
#include "random-util.h"
#include "string-util.h"
#include "util.h"
#include "tests.h"
static void test_close_many(void) {
int fds[3];
@ -316,7 +317,7 @@ static void test_read_nr_open(void) {
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
test_close_many();
test_close_nointr();

View File

@ -16,6 +16,7 @@
#include "process-util.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
#include "util.h"
static void test_parse_env_file(void) {
@ -710,9 +711,7 @@ static void test_read_line3(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_parse_env_file();
test_parse_multiline_env_file();

View File

@ -2,12 +2,13 @@
#include "firewall-util.h"
#include "log.h"
#include "tests.h"
#define MAKE_IN_ADDR_UNION(a,b,c,d) (union in_addr_union) { .in.s_addr = htobe32((uint32_t) (a) << 24 | (uint32_t) (b) << 16 | (uint32_t) (c) << 8 | (uint32_t) (d))}
int main(int argc, char *argv[]) {
int r;
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
r = fw_add_masquerade(true, AF_INET, 0, NULL, 0, "foobar", NULL, 0);
if (r < 0)

View File

@ -7,23 +7,22 @@
#include "log.h"
#include "string-util.h"
#include "khash.h"
#include "tests.h"
int main(int argc, char *argv[]) {
_cleanup_(khash_unrefp) khash *h = NULL, *copy = NULL;
_cleanup_free_ char *s = NULL;
int r;
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(khash_new(&h, NULL) == -EINVAL);
assert_se(khash_new(&h, "") == -EINVAL);
r = khash_supported();
assert_se(r >= 0);
if (r == 0) {
puts("khash not supported on this kernel, skipping");
return EXIT_TEST_SKIP;
}
if (r == 0)
return log_tests_skipped("khash not supported on this kernel");
assert_se(khash_new(&h, "foobar") == -EOPNOTSUPP); /* undefined hash function */

View File

@ -1,15 +1,13 @@
/* SPDX-License-Identifier: LGPL-2.1+ */
#include "alloc-util.h"
#include "env-util.h"
#include "hashmap.h"
#include "log.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
#include "util.h"
static bool arg_slow = false;
void test_hashmap_funcs(void);
static void test_hashmap_replace(void) {
@ -739,15 +737,16 @@ static void test_hashmap_many(void) {
Hashmap *h;
unsigned i, j;
void *v, *k;
bool slow = slow_tests_enabled();
const struct {
const struct hash_ops *ops;
unsigned n_entries;
} tests[] = {
{ .ops = NULL, .n_entries = arg_slow ? 1 << 20 : 240 },
{ .ops = &crippled_hashmap_ops, .n_entries = arg_slow ? 1 << 14 : 140 },
{ .ops = NULL, .n_entries = slow ? 1 << 20 : 240 },
{ .ops = &crippled_hashmap_ops, .n_entries = slow ? 1 << 14 : 140 },
};
log_info("%s (%s)", __func__, arg_slow ? "slow" : "fast");
log_info("%s (%s)", __func__, slow ? "slow" : "fast");
for (j = 0; j < ELEMENTSOF(tests); j++) {
assert_se(h = hashmap_new(tests[j].ops));
@ -886,14 +885,9 @@ static void test_hashmap_reserve(void) {
}
void test_hashmap_funcs(void) {
int r;
log_parse_environment();
log_open();
r = getenv_bool("SYSTEMD_SLOW_TESTS");
arg_slow = r >= 0 ? r : SYSTEMD_SLOW_TESTS_DEFAULT;
test_hashmap_copy();
test_hashmap_get_strv();
test_hashmap_move_one();

View File

@ -7,6 +7,7 @@
#include "rm-rf.h"
#include "special.h"
#include "string-util.h"
#include "tests.h"
static void test_basic_mask_and_enable(const char *root) {
const char *p;
@ -14,7 +15,7 @@ static void test_basic_mask_and_enable(const char *root) {
UnitFileChange *changes = NULL;
size_t n_changes = 0;
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "a.service", NULL) == -ENOENT);
assert_se(unit_file_get_state(UNIT_FILE_SYSTEM, root, "b.service", NULL) == -ENOENT);

View File

@ -4,6 +4,7 @@
#include <string.h>
#include "install.h"
#include "tests.h"
static void dump_changes(UnitFileChange *c, unsigned n) {
unsigned i;
@ -29,8 +30,7 @@ int main(int argc, char* argv[]) {
size_t n_changes = 0;
UnitFileState state = 0;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
h = hashmap_new(&string_hash_ops);
r = unit_file_get_list(UNIT_FILE_SYSTEM, NULL, h, NULL, NULL);

View File

@ -2,6 +2,7 @@
#include "clean-ipc.h"
#include "user-util.h"
#include "tests.h"
#include "util.h"
int main(int argc, char *argv[]) {
@ -9,11 +10,14 @@ int main(int argc, char *argv[]) {
int r;
const char* name = argv[1] ?: NOBODY_USER_NAME;
test_setup_logging(LOG_INFO);
r = get_user_creds(&name, &uid, NULL, NULL, NULL, 0);
if (r == -ESRCH)
return log_tests_skipped("Failed to resolve user");
if (r < 0) {
log_full_errno(r == -ESRCH ? LOG_NOTICE : LOG_ERR,
r, "Failed to resolve \"%s\": %m", name);
return r == -ESRCH ? EXIT_TEST_SKIP : EXIT_FAILURE;
log_error_errno(r, "Failed to resolve \"%s\": %m", name);
return EXIT_FAILURE;
}
r = clean_ipc_by_uid(uid);

View File

@ -69,8 +69,7 @@ static void test_bad_input(void) {
}
int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
test_basic_parsing();
test_bad_input();

View File

@ -5,13 +5,12 @@
#include "log.h"
#include "loopback-setup.h"
#include "tests.h"
int main(int argc, char* argv[]) {
int r;
log_open();
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
r = loopback_setup();
if (r < 0)

View File

@ -13,6 +13,7 @@
#include "path-util.h"
#include "rm-rf.h"
#include "string-util.h"
#include "tests.h"
static void test_mount_propagation_flags(const char *name, int ret, unsigned long expected) {
long unsigned flags;
@ -295,7 +296,7 @@ static void test_mount_option_mangle(void) {
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
test_mount_propagation_flags("shared", 0, MS_SHARED);
test_mount_propagation_flags("slave", 0, MS_SLAVE);

View File

@ -7,6 +7,7 @@
#include "namespace.h"
#include "process-util.h"
#include "string-util.h"
#include "tests.h"
#include "util.h"
static void test_tmpdir(const char *id, const char *A, const char *B) {
@ -46,16 +47,14 @@ static void test_tmpdir(const char *id, const char *A, const char *B) {
assert_se(rmdir(b) >= 0);
}
static void test_netns(void) {
static int test_netns(void) {
_cleanup_close_pair_ int s[2] = { -1, -1 };
pid_t pid1, pid2, pid3;
int r, n = 0;
siginfo_t si;
if (geteuid() > 0) {
log_info("Skipping test: not root");
exit(EXIT_TEST_SKIP);
}
if (geteuid() > 0)
return log_tests_skipped("not root");
assert_se(socketpair(AF_UNIX, SOCK_DGRAM, 0, s) >= 0);
@ -102,6 +101,7 @@ static void test_netns(void) {
n += si.si_status;
assert_se(n == 1);
return EXIT_SUCCESS;
}
int main(int argc, char *argv[]) {
@ -109,8 +109,7 @@ int main(int argc, char *argv[]) {
char boot_id[SD_ID128_STRING_MAX];
_cleanup_free_ char *x = NULL, *y = NULL, *z = NULL, *zz = NULL;
log_parse_environment();
log_open();
test_setup_logging(LOG_INFO);
assert_se(sd_id128_get_boot(&bid) >= 0);
sd_id128_to_string(bid, boot_id);
@ -128,7 +127,5 @@ int main(int argc, char *argv[]) {
test_tmpdir("sys-devices-pci0000:00-0000:00:1a.0-usb3-3\\x2d1-3\\x2d1:1.0-bluetooth-hci0.device", z, zz);
test_netns();
return 0;
return test_netns();
}

View File

@ -10,6 +10,7 @@
#include "macro.h"
#include "module-util.h"
#include "tests.h"
#include "util.h"
static int load_module(const char *mod_name) {
@ -47,10 +48,14 @@ static int test_tunnel_configure(sd_netlink *rtnl) {
/* skip test if module cannot be loaded */
r = load_module("ipip");
if (r < 0)
return EXIT_TEST_SKIP;
return log_tests_skipped_errno(r, "failed to load module 'ipip'");
r = load_module("sit");
if (r < 0)
return log_tests_skipped_errno(r, "failed to load module 'sit'");
if (getuid() != 0)
return EXIT_TEST_SKIP;
return log_tests_skipped("not root");
/* IPIP tunnel */
assert_se(sd_rtnl_message_new_link(rtnl, &m, RTM_NEWLINK, 0) >= 0);
@ -76,10 +81,6 @@ static int test_tunnel_configure(sd_netlink *rtnl) {
assert_se((m = sd_netlink_message_unref(m)) == NULL);
r = load_module("sit");
if (r < 0)
return EXIT_TEST_SKIP;
/* sit */
assert_se(sd_rtnl_message_new_link(rtnl, &n, RTM_NEWLINK, 0) >= 0);
assert_se(n);
@ -113,6 +114,8 @@ int main(int argc, char *argv[]) {
sd_netlink *rtnl;
int r;
test_setup_logging(LOG_INFO);
assert_se(sd_netlink_open(&rtnl) >= 0);
assert_se(rtnl);

View File

@ -6,6 +6,7 @@
#include "log.h"
#include "namespace.h"
#include "tests.h"
int main(int argc, char *argv[]) {
const char * const writable[] = {
@ -43,7 +44,7 @@ int main(int argc, char *argv[]) {
char tmp_dir[] = "/tmp/systemd-private-XXXXXX",
var_tmp_dir[] = "/var/tmp/systemd-private-XXXXXX";
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
assert_se(mkdtemp(tmp_dir));
assert_se(mkdtemp(var_tmp_dir));

View File

@ -4,6 +4,7 @@
#include "log.h"
#include "os-util.h"
#include "tests.h"
static void test_path_is_os_tree(void) {
assert_se(path_is_os_tree("/") > 0);
@ -12,9 +13,7 @@ static void test_path_is_os_tree(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_path_is_os_tree();

View File

@ -8,6 +8,7 @@
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
static void test_paths(UnitFileScope scope) {
char template[] = "/tmp/test-path-lookup.XXXXXXX";
@ -78,9 +79,7 @@ static void print_generator_binary_paths(UnitFileScope scope) {
}
int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_paths(UNIT_FILE_SYSTEM);
test_paths(UNIT_FILE_USER);

View File

@ -12,6 +12,7 @@
#include "stat-util.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
#include "util.h"
#define test_path_compare(a, b, result) { \
@ -506,9 +507,7 @@ static void test_empty_or_root(void) {
}
int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_path();
test_path_equal_root();

View File

@ -33,16 +33,12 @@ static int setup_test(Manager **m) {
assert_se(m);
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
log_notice_errno(r, "Skipping test: cgroupfs not available");
return -EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &tmp);
if (MANAGER_SKIP_TEST(r)) {
log_notice_errno(r, "Skipping test: manager_new: %m");
return -EXIT_TEST_SKIP;
}
if (MANAGER_SKIP_TEST(r))
return log_tests_skipped_errno(r, "manager_new");
assert_se(r >= 0);
assert_se(manager_startup(tmp, NULL, NULL) >= 0);
@ -254,8 +250,7 @@ int main(int argc, char *argv[]) {
umask(022);
log_parse_environment();
log_open();
test_setup_logging(LOG_INFO);
test_path = path_join(NULL, get_testdata_dir(), "test-path");
assert_se(set_unit_path(test_path) >= 0);
@ -266,8 +261,8 @@ int main(int argc, char *argv[]) {
/* We create a clean environment for each test */
r = setup_test(&m);
if (r < 0)
return -r;
if (r != 0)
return r;
(*test)(m);

View File

@ -24,6 +24,7 @@
#include "string-util.h"
#include "terminal-util.h"
#include "test-helper.h"
#include "tests.h"
#include "util.h"
#include "virt.h"
@ -587,9 +588,7 @@ static void test_ioprio_class_from_to_string(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
saved_argc = argc;
saved_argv = argv;

View File

@ -3,6 +3,7 @@
#include "hexdecoct.h"
#include "random-util.h"
#include "log.h"
#include "tests.h"
static void test_acquire_random_bytes(bool high_quality_required) {
uint8_t buf[16] = {};
@ -51,9 +52,7 @@ static void test_rdrand64(void) {
}
int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_acquire_random_bytes(false);
test_acquire_random_bytes(true);

View File

@ -19,20 +19,18 @@ int main(int argc, char *argv[]) {
Service *ser;
int r;
test_setup_logging(LOG_INFO);
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
log_notice_errno(r, "Skipping test: cgroupfs not available");
return EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
/* prepare the test */
assert_se(set_unit_path(get_testdata_dir()) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());
r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_BASIC, &m);
if (MANAGER_SKIP_TEST(r)) {
log_notice_errno(r, "Skipping test: manager_new: %m");
return EXIT_TEST_SKIP;
}
if (MANAGER_SKIP_TEST(r))
return log_tests_skipped_errno(r, "manager_new");
assert_se(r >= 0);
assert_se(manager_startup(m, NULL, NULL) >= 0);

View File

@ -20,6 +20,7 @@
#include "seccomp-util.h"
#include "set.h"
#include "string-util.h"
#include "tests.h"
#include "util.h"
#include "virt.h"
@ -668,7 +669,7 @@ static void test_filter_sets_ordered(void) {
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
test_seccomp_arch_to_string();
test_architecture_table();

View File

@ -7,6 +7,7 @@
#include "log.h"
#include "selinux-util.h"
#include "string-util.h"
#include "tests.h"
#include "time-util.h"
#include "util.h"
@ -92,8 +93,7 @@ int main(int argc, char **argv) {
if (argc >= 2)
path = argv[1];
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
test_testing();
test_loading();

View File

@ -2,12 +2,14 @@
#include <sys/mman.h>
#if HAVE_VALGRIND_VALGRIND_H
# include <valgrind/valgrind.h>
#endif
#include "fd-util.h"
#include "sigbus.h"
#include "tests.h"
#include "util.h"
#if HAVE_VALGRIND_VALGRIND_H
#include <valgrind/valgrind.h>
#endif
int main(int argc, char *argv[]) {
_cleanup_close_ int fd = -1;
@ -15,14 +17,16 @@ int main(int argc, char *argv[]) {
void *addr = NULL;
uint8_t *p;
#if HAVE_VALGRIND_VALGRIND_H
if (RUNNING_ON_VALGRIND)
return EXIT_TEST_SKIP;
#endif
test_setup_logging(LOG_INFO);
#ifdef __SANITIZE_ADDRESS__
return EXIT_TEST_SKIP;
return log_tests_skipped("address-sanitizer is enabled");
#endif
#if HAVE_VALGRIND_VALGRIND_H
if (RUNNING_ON_VALGRIND)
return log_tests_skipped("This test cannot run on valgrind");
#endif
sigbus_install();
assert_se(sigbus_pop(&addr) == 0);

View File

@ -8,6 +8,7 @@
#include "log.h"
#include "sleep-config.h"
#include "strv.h"
#include "tests.h"
#include "util.h"
static void test_parse_sleep_config(void) {
@ -26,10 +27,8 @@ static int test_fiemap(const char *path) {
if (fd < 0)
return log_error_errno(errno, "failed to open %s: %m", path);
r = read_fiemap(fd, &fiemap);
if (r == -EOPNOTSUPP) {
log_info("Skipping test, not supported");
exit(EXIT_TEST_SKIP);
}
if (r == -EOPNOTSUPP)
exit(log_tests_skipped("Not supported"));
if (r < 0)
return log_error_errno(r, "Unable to read extent map for '%s': %m", path);
log_info("extent map information for %s:", path);
@ -81,8 +80,7 @@ static void test_sleep(void) {
int main(int argc, char* argv[]) {
int i, r = 0, k;
log_parse_environment();
log_open();
test_setup_logging(LOG_INFO);
if (getuid() != 0)
log_warning("This program is unlikely to work for unprivileged users");

View File

@ -17,6 +17,7 @@
#include "socket-util.h"
#include "string-util.h"
#include "util.h"
#include "tests.h"
static void test_ifname_valid(void) {
assert(ifname_valid("foo"));
@ -698,7 +699,7 @@ static void test_send_emptydata(void) {
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
test_ifname_valid();

View File

@ -5,6 +5,7 @@
#include "specifier.h"
#include "string-util.h"
#include "strv.h"
#include "tests.h"
static void test_specifier_escape_one(const char *a, const char *b) {
_cleanup_free_ char *x = NULL;
@ -39,7 +40,7 @@ static void test_specifier_escape_strv(void) {
}
int main(int argc, char *argv[]) {
log_set_max_level(LOG_DEBUG);
test_setup_logging(LOG_DEBUG);
test_specifier_escape();
test_specifier_escape_strv();

View File

@ -13,6 +13,7 @@
#include "log.h"
#include "process-util.h"
#include "string-util.h"
#include "tests.h"
#include "util.h"
int main(int argc, char** argv) {
@ -21,8 +22,7 @@ int main(int argc, char** argv) {
const char *p = argv[1] ?: "/tmp";
char *pattern;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
pattern = strjoina(p, "/systemd-test-XXXXXX");

View File

@ -53,9 +53,7 @@ static void test_swap_list(const char *fname) {
}
int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_mount_points_list(NULL);
test_mount_points_list("/test-umount/empty.mountinfo");

View File

@ -39,11 +39,8 @@ static int test_unit_file_get_set(void) {
assert_se(h);
r = unit_file_get_list(UNIT_FILE_SYSTEM, NULL, h, NULL, NULL);
if (IN_SET(r, -EPERM, -EACCES)) {
log_notice_errno(r, "Skipping test: unit_file_get_list: %m");
return EXIT_TEST_SKIP;
}
if (IN_SET(r, -EPERM, -EACCES))
return log_tests_skipped_errno(r, "unit_file_get_list");
log_full_errno(r == 0 ? LOG_INFO : LOG_ERR, r,
"unit_file_get_list: %m");
@ -896,14 +893,11 @@ int main(int argc, char *argv[]) {
_cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
int r;
log_parse_environment();
log_open();
test_setup_logging(LOG_INFO);
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
log_notice_errno(r, "Skipping test: cgroupfs not available");
return EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
assert_se(runtime_dir = setup_fake_runtime_dir());

View File

@ -205,10 +205,8 @@ static int test_unit_printf(void) {
assert_se(get_shell(&shell) >= 0);
r = manager_new(UNIT_FILE_USER, MANAGER_TEST_RUN_MINIMAL, &m);
if (MANAGER_SKIP_TEST(r)) {
log_notice_errno(r, "Skipping test: manager_new: %m");
return EXIT_TEST_SKIP;
}
if (MANAGER_SKIP_TEST(r))
return log_tests_skipped_errno(r, "manager_new");
assert_se(r == 0);
#define expect(unit, pattern, expected) \
@ -811,14 +809,11 @@ int main(int argc, char* argv[]) {
_cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL;
int r, rc = 0;
log_parse_environment();
log_open();
test_setup_logging(LOG_INFO);
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
log_notice_errno(r, "Skipping test: cgroupfs not available");
return EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
assert_se(runtime_dir = setup_fake_runtime_dir());

View File

@ -13,20 +13,13 @@ int main(int argc, char *argv[]) {
Unit *a, *b, *c, *u;
int r;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
if (getuid() != 0) {
log_notice("Not running as root, skipping kernel related tests.");
return EXIT_TEST_SKIP;
}
test_setup_logging(LOG_DEBUG);
if (getuid() != 0)
return log_tests_skipped("not root");
r = enter_cgroup_subroot();
if (r == -ENOMEDIUM) {
log_notice("cgroupfs not available, skipping tests");
return EXIT_TEST_SKIP;
}
if (r == -ENOMEDIUM)
return log_tests_skipped("cgroupfs not available");
assert_se(set_unit_path(get_testdata_dir()) >= 0);
assert_se(runtime_dir = setup_fake_runtime_dir());

View File

@ -3,8 +3,8 @@
#include <string.h>
#include <unistd.h>
#include "env-util.h"
#include "log.h"
#include "tests.h"
#include "watchdog.h"
int main(int argc, char *argv[]) {
@ -13,11 +13,9 @@ int main(int argc, char *argv[]) {
int r;
bool slow;
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
r = getenv_bool("SYSTEMD_SLOW_TESTS");
slow = r >= 0 ? r : SYSTEMD_SLOW_TESTS_DEFAULT;
slow = slow_tests_enabled();
t = slow ? 10 * USEC_PER_SEC : 1 * USEC_PER_SEC;
count = slow ? 5 : 3;

View File

@ -12,6 +12,7 @@
#include "fs-util.h"
#include "macro.h"
#include "string-util.h"
#include "tests.h"
#include "xattr-util.h"
static void test_fgetxattrat_fake(void) {
@ -78,9 +79,7 @@ static void test_getcrtime(void) {
}
int main(void) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
log_open();
test_setup_logging(LOG_DEBUG);
test_fgetxattrat_fake();
test_getcrtime();

View File

@ -5,6 +5,7 @@
#include "log.h"
#include "macro.h"
#include "timesyncd-conf.h"
#include "tests.h"
static void test_manager_parse_string(void) {
/* Make sure that NTP_SERVERS is configured to something
@ -25,8 +26,7 @@ static void test_manager_parse_string(void) {
}
int main(int argc, char **argv) {
log_set_max_level(LOG_DEBUG);
log_parse_environment();
test_setup_logging(LOG_DEBUG);
test_manager_parse_string();

View File

@ -211,16 +211,20 @@ endif
############################################################
rule_syntax_check_py = find_program('rule-syntax-check.py')
test('rule-syntax-check',
rule_syntax_check_py,
args : all_rules)
if want_tests != 'false'
test('rule-syntax-check',
rule_syntax_check_py,
args : all_rules)
endif
############################################################
if conf.get('HAVE_SYSV_COMPAT') == 1
sysv_generator_test_py = find_program('sysv-generator-test.py')
test('sysv-generator-test',
sysv_generator_test_py)
if want_tests != 'false'
test('sysv-generator-test',
sysv_generator_test_py)
endif
endif
############################################################
@ -231,21 +235,25 @@ custom_target(
'sys',
command : [sys_script_py, meson.current_build_dir()],
output : 'sys',
build_by_default : true)
build_by_default : want_tests != 'false')
if perl.found()
udev_test_pl = find_program('udev-test.pl')
test('udev-test',
udev_test_pl)
if want_tests != 'false'
test('udev-test',
udev_test_pl)
endif
else
message('Skipping udev-test because perl is not available')
endif
if conf.get('ENABLE_HWDB') == 1
hwdb_test_sh = find_program('hwdb-test.sh')
test('hwdb-test',
hwdb_test_sh,
timeout : 90)
if want_tests != 'false'
test('hwdb-test',
hwdb_test_sh,
timeout : 90)
endif
endif
subdir('fuzz-regressions')