4cad4c
From ad8f0b480799aa7e312dacbcb0c01a3a9e6aa6db Mon Sep 17 00:00:00 2001
4cad4c
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
4cad4c
Date: Tue, 26 Mar 2019 11:38:55 +0100
4cad4c
Subject: [PATCH] test-execute: provide custom failure message
4cad4c
4cad4c
test_exec_ambientcapabilities: exec-ambientcapabilities-nobody.service: exit status 0, expected 1
4cad4c
4cad4c
Sometimes we get just the last line, for example from the failure summary,
4cad4c
so make it as useful as possible.
4cad4c
4cad4c
(cherry picked from commit 6aed6a11577b108b9a39f26aeae5e45d98f20c90)
4cad4c
4cad4c
Related: #1737283
4cad4c
---
4cad4c
 src/test/test-execute.c | 236 +++++++++++++++++++++-------------------
4cad4c
 1 file changed, 123 insertions(+), 113 deletions(-)
4cad4c
4cad4c
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
4cad4c
index d077674efc..e42d0d30a8 100644
4cad4c
--- a/src/test/test-execute.c
4cad4c
+++ b/src/test/test-execute.c
4cad4c
@@ -30,7 +30,7 @@
4cad4c
 
4cad4c
 typedef void (*test_function_t)(Manager *m);
4cad4c
 
4cad4c
-static void check(Manager *m, Unit *unit, int status_expected, int code_expected) {
4cad4c
+static void check(const char *func, Manager *m, Unit *unit, int status_expected, int code_expected) {
4cad4c
         Service *service = NULL;
4cad4c
         usec_t ts;
4cad4c
         usec_t timeout = 2 * USEC_PER_MINUTE;
4cad4c
@@ -56,8 +56,18 @@ static void check(Manager *m, Unit *unit, int status_expected, int code_expected
4cad4c
                 }
4cad4c
         }
4cad4c
         exec_status_dump(&service->main_exec_status, stdout, "\t");
4cad4c
-        assert_se(service->main_exec_status.status == status_expected);
4cad4c
-        assert_se(service->main_exec_status.code == code_expected);
4cad4c
+        if (service->main_exec_status.status != status_expected) {
4cad4c
+                log_error("%s: %s: exit status %d, expected %d",
4cad4c
+                          func, unit->id,
4cad4c
+                          service->main_exec_status.status, status_expected);
4cad4c
+                abort();
4cad4c
+        }
4cad4c
+        if (service->main_exec_status.code != code_expected) {
4cad4c
+                log_error("%s: %s: exit code %d, expected %d",
4cad4c
+                          func, unit->id,
4cad4c
+                          service->main_exec_status.code, code_expected);
4cad4c
+                abort();
4cad4c
+        }
4cad4c
 }
4cad4c
 
4cad4c
 static bool check_nobody_user_and_group(void) {
4cad4c
@@ -123,21 +133,21 @@ static bool is_inaccessible_available(void) {
4cad4c
         return true;
4cad4c
 }
4cad4c
 
4cad4c
-static void test(Manager *m, const char *unit_name, int status_expected, int code_expected) {
4cad4c
+static void test(const char *func, Manager *m, const char *unit_name, int status_expected, int code_expected) {
4cad4c
         Unit *unit;
4cad4c
 
4cad4c
         assert_se(unit_name);
4cad4c
 
4cad4c
         assert_se(manager_load_startable_unit_or_warn(m, unit_name, NULL, &unit) >= 0);
4cad4c
         assert_se(unit_start(unit) >= 0);
4cad4c
-        check(m, unit, status_expected, code_expected);
4cad4c
+        check(func, m, unit, status_expected, code_expected);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_bindpaths(Manager *m) {
4cad4c
         assert_se(mkdir_p("/tmp/test-exec-bindpaths", 0755) >= 0);
4cad4c
         assert_se(mkdir_p("/tmp/test-exec-bindreadonlypaths", 0755) >= 0);
4cad4c
 
4cad4c
-        test(m, "exec-bindpaths.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-bindpaths.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         (void) rm_rf("/tmp/test-exec-bindpaths", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
         (void) rm_rf("/tmp/test-exec-bindreadonlypaths", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
@@ -154,8 +164,8 @@ static void test_exec_cpuaffinity(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-cpuaffinity1.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-cpuaffinity2.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-cpuaffinity1.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-cpuaffinity2.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (!CPU_ISSET_S(1, c.allocated, c.set) ||
4cad4c
             !CPU_ISSET_S(2, c.allocated, c.set)) {
4cad4c
@@ -163,52 +173,52 @@ static void test_exec_cpuaffinity(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-cpuaffinity3.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-cpuaffinity3.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_workingdirectory(Manager *m) {
4cad4c
         assert_se(mkdir_p("/tmp/test-exec_workingdirectory", 0755) >= 0);
4cad4c
 
4cad4c
-        test(m, "exec-workingdirectory.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-workingdirectory-trailing-dot.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-workingdirectory.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-workingdirectory-trailing-dot.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         (void) rm_rf("/tmp/test-exec_workingdirectory", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_personality(Manager *m) {
4cad4c
 #if defined(__x86_64__)
4cad4c
-        test(m, "exec-personality-x86-64.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-personality-x86-64.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
 #elif defined(__s390__)
4cad4c
-        test(m, "exec-personality-s390.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-personality-s390.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
 #elif defined(__powerpc64__)
4cad4c
 #  if __BYTE_ORDER == __BIG_ENDIAN
4cad4c
-        test(m, "exec-personality-ppc64.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-personality-ppc64.service", 0, CLD_EXITED);
4cad4c
 #  else
4cad4c
-        test(m, "exec-personality-ppc64le.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-personality-ppc64le.service", 0, CLD_EXITED);
4cad4c
 #  endif
4cad4c
 
4cad4c
 #elif defined(__aarch64__)
4cad4c
-        test(m, "exec-personality-aarch64.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-personality-aarch64.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
 #elif defined(__i386__)
4cad4c
-        test(m, "exec-personality-x86.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-personality-x86.service", 0, CLD_EXITED);
4cad4c
 #else
4cad4c
         log_notice("Unknown personality, skipping %s", __func__);
4cad4c
 #endif
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_ignoresigpipe(Manager *m) {
4cad4c
-        test(m, "exec-ignoresigpipe-yes.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-ignoresigpipe-no.service", SIGPIPE, CLD_KILLED);
4cad4c
+        test(__func__, m, "exec-ignoresigpipe-yes.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ignoresigpipe-no.service", SIGPIPE, CLD_KILLED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_privatetmp(Manager *m) {
4cad4c
         assert_se(touch("/tmp/test-exec_privatetmp") >= 0);
4cad4c
 
4cad4c
-        test(m, "exec-privatetmp-yes.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-privatetmp-no.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatetmp-yes.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatetmp-no.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         unlink("/tmp/test-exec_privatetmp");
4cad4c
 }
4cad4c
@@ -225,9 +235,9 @@ static void test_exec_privatedevices(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-privatedevices-yes.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-privatedevices-no.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-privatedevices-disabled-by-prefix.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatedevices-yes.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatedevices-no.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatedevices-disabled-by-prefix.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         /* We use capsh to test if the capabilities are
4cad4c
          * properly set, so be sure that it exists */
4cad4c
@@ -237,10 +247,10 @@ static void test_exec_privatedevices(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-privatedevices-yes-capability-mknod.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-privatedevices-no-capability-mknod.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-privatedevices-yes-capability-sys-rawio.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-privatedevices-no-capability-sys-rawio.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatedevices-yes-capability-mknod.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatedevices-no-capability-mknod.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatedevices-yes-capability-sys-rawio.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatedevices-no-capability-sys-rawio.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_protectkernelmodules(Manager *m) {
4cad4c
@@ -261,23 +271,23 @@ static void test_exec_protectkernelmodules(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-protectkernelmodules-no-capabilities.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-protectkernelmodules-yes-capabilities.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-protectkernelmodules-yes-mount-propagation.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-protectkernelmodules-no-capabilities.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-protectkernelmodules-yes-capabilities.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-protectkernelmodules-yes-mount-propagation.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_readonlypaths(Manager *m) {
4cad4c
 
4cad4c
-        test(m, "exec-readonlypaths-simple.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-readonlypaths-simple.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (path_is_read_only_fs("/var") > 0) {
4cad4c
                 log_notice("Directory /var is readonly, skipping remaining tests in %s", __func__);
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-readonlypaths.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-readonlypaths-mount-propagation.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-readonlypaths-with-bindpaths.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-readonlypaths.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-readonlypaths-mount-propagation.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-readonlypaths-with-bindpaths.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_readwritepaths(Manager *m) {
4cad4c
@@ -287,7 +297,7 @@ static void test_exec_readwritepaths(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-readwritepaths-mount-propagation.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-readwritepaths-mount-propagation.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_inaccessiblepaths(Manager *m) {
4cad4c
@@ -297,22 +307,22 @@ static void test_exec_inaccessiblepaths(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-inaccessiblepaths-proc.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-inaccessiblepaths-proc.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (path_is_read_only_fs("/") > 0) {
4cad4c
                 log_notice("Root directory is readonly, skipping remaining tests in %s", __func__);
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-inaccessiblepaths-mount-propagation.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-inaccessiblepaths-mount-propagation.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_temporaryfilesystem(Manager *m) {
4cad4c
 
4cad4c
-        test(m, "exec-temporaryfilesystem-options.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-temporaryfilesystem-ro.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-temporaryfilesystem-rw.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-temporaryfilesystem-usr.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-temporaryfilesystem-options.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-temporaryfilesystem-ro.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-temporaryfilesystem-rw.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-temporaryfilesystem-usr.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_systemcallfilter(Manager *m) {
4cad4c
@@ -324,10 +334,10 @@ static void test_exec_systemcallfilter(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-systemcallfilter-not-failing.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-systemcallfilter-not-failing2.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-systemcallfilter-failing.service", SIGSYS, CLD_KILLED);
4cad4c
-        test(m, "exec-systemcallfilter-failing2.service", SIGSYS, CLD_KILLED);
4cad4c
+        test(__func__, m, "exec-systemcallfilter-not-failing.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-systemcallfilter-not-failing2.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-systemcallfilter-failing.service", SIGSYS, CLD_KILLED);
4cad4c
+        test(__func__, m, "exec-systemcallfilter-failing2.service", SIGSYS, CLD_KILLED);
4cad4c
 
4cad4c
         r = find_binary("python3", NULL);
4cad4c
         if (r < 0) {
4cad4c
@@ -335,8 +345,8 @@ static void test_exec_systemcallfilter(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-systemcallfilter-with-errno-name.service", errno_from_name("EILSEQ"), CLD_EXITED);
4cad4c
-        test(m, "exec-systemcallfilter-with-errno-number.service", 255, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-systemcallfilter-with-errno-name.service", errno_from_name("EILSEQ"), CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-systemcallfilter-with-errno-number.service", 255, CLD_EXITED);
4cad4c
 #endif
4cad4c
 }
4cad4c
 
4cad4c
@@ -355,8 +365,8 @@ static void test_exec_systemcallerrornumber(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-systemcallerrornumber-name.service", errno_from_name("EACCES"), CLD_EXITED);
4cad4c
-        test(m, "exec-systemcallerrornumber-number.service", 255, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-systemcallerrornumber-name.service", errno_from_name("EACCES"), CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-systemcallerrornumber-number.service", 255, CLD_EXITED);
4cad4c
 #endif
4cad4c
 }
4cad4c
 
4cad4c
@@ -367,13 +377,13 @@ static void test_exec_restrictnamespaces(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-restrictnamespaces-no.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-restrictnamespaces-yes.service", 1, CLD_EXITED);
4cad4c
-        test(m, "exec-restrictnamespaces-mnt.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-restrictnamespaces-mnt-blacklist.service", 1, CLD_EXITED);
4cad4c
-        test(m, "exec-restrictnamespaces-merge-and.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-restrictnamespaces-merge-or.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-restrictnamespaces-merge-all.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-restrictnamespaces-no.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-restrictnamespaces-yes.service", 1, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-restrictnamespaces-mnt.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-restrictnamespaces-mnt-blacklist.service", 1, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-restrictnamespaces-merge-and.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-restrictnamespaces-merge-or.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-restrictnamespaces-merge-all.service", 0, CLD_EXITED);
4cad4c
 #endif
4cad4c
 }
4cad4c
 
4cad4c
@@ -384,7 +394,7 @@ static void test_exec_systemcallfilter_system(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-systemcallfilter-system-user.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-systemcallfilter-system-user.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (!check_nobody_user_and_group()) {
4cad4c
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
4cad4c
@@ -396,12 +406,12 @@ static void test_exec_systemcallfilter_system(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-systemcallfilter-system-user-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-systemcallfilter-system-user-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
4cad4c
 #endif
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_user(Manager *m) {
4cad4c
-        test(m, "exec-user.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-user.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (!check_nobody_user_and_group()) {
4cad4c
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
4cad4c
@@ -413,11 +423,11 @@ static void test_exec_user(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-user-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-user-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_group(Manager *m) {
4cad4c
-        test(m, "exec-group.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-group.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (!check_nobody_user_and_group()) {
4cad4c
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
4cad4c
@@ -429,31 +439,31 @@ static void test_exec_group(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-group-" NOBODY_GROUP_NAME ".service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-group-" NOBODY_GROUP_NAME ".service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_supplementarygroups(Manager *m) {
4cad4c
-        test(m, "exec-supplementarygroups.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-supplementarygroups-single-group.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-supplementarygroups-single-group-user.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-supplementarygroups-multiple-groups-default-group-user.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-supplementarygroups-multiple-groups-withgid.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-supplementarygroups-multiple-groups-withuid.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-supplementarygroups.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-supplementarygroups-single-group.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-supplementarygroups-single-group-user.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-supplementarygroups-multiple-groups-default-group-user.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-supplementarygroups-multiple-groups-withgid.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-supplementarygroups-multiple-groups-withuid.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_dynamicuser(Manager *m) {
4cad4c
-        test(m, "exec-dynamicuser-fixeduser.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-dynamicuser-fixeduser-one-supplementarygroup.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-dynamicuser-supplementarygroups.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-dynamicuser-statedir.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-dynamicuser-fixeduser.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-dynamicuser-fixeduser-one-supplementarygroup.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-dynamicuser-supplementarygroups.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-dynamicuser-statedir.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         (void) rm_rf("/var/lib/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
         (void) rm_rf("/var/lib/test-dynamicuser-migrate2", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
         (void) rm_rf("/var/lib/private/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
         (void) rm_rf("/var/lib/private/test-dynamicuser-migrate2", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
 
4cad4c
-        test(m, "exec-dynamicuser-statedir-migrate-step1.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-dynamicuser-statedir-migrate-step2.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-dynamicuser-statedir-migrate-step1.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-dynamicuser-statedir-migrate-step2.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         (void) rm_rf("/var/lib/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
         (void) rm_rf("/var/lib/test-dynamicuser-migrate2", REMOVE_ROOT|REMOVE_PHYSICAL);
4cad4c
@@ -462,9 +472,9 @@ static void test_exec_dynamicuser(Manager *m) {
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_environment(Manager *m) {
4cad4c
-        test(m, "exec-environment.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-environment-multiple.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-environment-empty.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-environment.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-environment-multiple.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-environment-empty.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_environmentfile(Manager *m) {
4cad4c
@@ -484,7 +494,7 @@ static void test_exec_environmentfile(Manager *m) {
4cad4c
         r = write_string_file("/tmp/test-exec_environmentfile.conf", e, WRITE_STRING_FILE_CREATE);
4cad4c
         assert_se(r == 0);
4cad4c
 
4cad4c
-        test(m, "exec-environmentfile.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-environmentfile.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         (void) unlink("/tmp/test-exec_environmentfile.conf");
4cad4c
 }
4cad4c
@@ -506,26 +516,26 @@ static void test_exec_passenvironment(Manager *m) {
4cad4c
         assert_se(setenv("VAR3", "$word 5 6", 1) == 0);
4cad4c
         assert_se(setenv("VAR4", "new\nline", 1) == 0);
4cad4c
         assert_se(setenv("VAR5", "passwordwithbackslashes", 1) == 0);
4cad4c
-        test(m, "exec-passenvironment.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-passenvironment-repeated.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-passenvironment-empty.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-passenvironment.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-passenvironment-repeated.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-passenvironment-empty.service", 0, CLD_EXITED);
4cad4c
         assert_se(unsetenv("VAR1") == 0);
4cad4c
         assert_se(unsetenv("VAR2") == 0);
4cad4c
         assert_se(unsetenv("VAR3") == 0);
4cad4c
         assert_se(unsetenv("VAR4") == 0);
4cad4c
         assert_se(unsetenv("VAR5") == 0);
4cad4c
-        test(m, "exec-passenvironment-absent.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-passenvironment-absent.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_umask(Manager *m) {
4cad4c
-        test(m, "exec-umask-default.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-umask-0177.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-umask-default.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-umask-0177.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_runtimedirectory(Manager *m) {
4cad4c
-        test(m, "exec-runtimedirectory.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-runtimedirectory-mode.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-runtimedirectory-owner.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-runtimedirectory.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-runtimedirectory-mode.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-runtimedirectory-owner.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (!check_nobody_user_and_group()) {
4cad4c
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
4cad4c
@@ -537,7 +547,7 @@ static void test_exec_runtimedirectory(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-runtimedirectory-owner-" NOBODY_GROUP_NAME ".service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-runtimedirectory-owner-" NOBODY_GROUP_NAME ".service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_capabilityboundingset(Manager *m) {
4cad4c
@@ -556,14 +566,14 @@ static void test_exec_capabilityboundingset(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-capabilityboundingset-simple.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-capabilityboundingset-reset.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-capabilityboundingset-merge.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-capabilityboundingset-invert.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-capabilityboundingset-simple.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-capabilityboundingset-reset.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-capabilityboundingset-merge.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-capabilityboundingset-invert.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_basic(Manager *m) {
4cad4c
-        test(m, "exec-basic.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-basic.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_ambientcapabilities(Manager *m) {
4cad4c
@@ -585,8 +595,8 @@ static void test_exec_ambientcapabilities(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-ambientcapabilities.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-ambientcapabilities-merge.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ambientcapabilities.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ambientcapabilities-merge.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (!check_nobody_user_and_group()) {
4cad4c
                 log_notice("nobody user/group is not synthesized or may conflict to other entries, skipping remaining tests in %s", __func__);
4cad4c
@@ -598,8 +608,8 @@ static void test_exec_ambientcapabilities(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-ambientcapabilities-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-ambientcapabilities-merge-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ambientcapabilities-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ambientcapabilities-merge-" NOBODY_USER_NAME ".service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_privatenetwork(Manager *m) {
4cad4c
@@ -611,52 +621,52 @@ static void test_exec_privatenetwork(Manager *m) {
4cad4c
                 return;
4cad4c
         }
4cad4c
 
4cad4c
-        test(m, "exec-privatenetwork-yes.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-privatenetwork-yes.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_oomscoreadjust(Manager *m) {
4cad4c
-        test(m, "exec-oomscoreadjust-positive.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-oomscoreadjust-positive.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (detect_container() > 0) {
4cad4c
                 log_notice("Testing in container, skipping remaining tests in %s", __func__);
4cad4c
                 return;
4cad4c
         }
4cad4c
-        test(m, "exec-oomscoreadjust-negative.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-oomscoreadjust-negative.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_ioschedulingclass(Manager *m) {
4cad4c
-        test(m, "exec-ioschedulingclass-none.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-ioschedulingclass-idle.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-ioschedulingclass-best-effort.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ioschedulingclass-none.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ioschedulingclass-idle.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ioschedulingclass-best-effort.service", 0, CLD_EXITED);
4cad4c
 
4cad4c
         if (detect_container() > 0) {
4cad4c
                 log_notice("Testing in container, skipping remaining tests in %s", __func__);
4cad4c
                 return;
4cad4c
         }
4cad4c
-        test(m, "exec-ioschedulingclass-realtime.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-ioschedulingclass-realtime.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_unsetenvironment(Manager *m) {
4cad4c
-        test(m, "exec-unsetenvironment.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-unsetenvironment.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_specifier(Manager *m) {
4cad4c
-        test(m, "exec-specifier.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-specifier@foo-bar.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-specifier-interpolation.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-specifier.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-specifier@foo-bar.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-specifier-interpolation.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_standardinput(Manager *m) {
4cad4c
-        test(m, "exec-standardinput-data.service", 0, CLD_EXITED);
4cad4c
-        test(m, "exec-standardinput-file.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-standardinput-data.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-standardinput-file.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_standardoutput(Manager *m) {
4cad4c
-        test(m, "exec-standardoutput-file.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-standardoutput-file.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 static void test_exec_standardoutput_append(Manager *m) {
4cad4c
-        test(m, "exec-standardoutput-append.service", 0, CLD_EXITED);
4cad4c
+        test(__func__, m, "exec-standardoutput-append.service", 0, CLD_EXITED);
4cad4c
 }
4cad4c
 
4cad4c
 typedef struct test_entry {