test-execute: add test case for PrivateTmp=disconnected

This commit is contained in:
Yu Watanabe
2025-05-11 03:33:02 +09:00
parent 6156bec7a4
commit 3e320dc608
7 changed files with 97 additions and 0 deletions
+14
View File
@@ -491,6 +491,20 @@ static void test_exec_privatetmp(Manager *m) {
if (MANAGER_IS_SYSTEM(m) || have_userns_privileges()) {
test(m, "exec-privatetmp-yes.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_FAILURE : EXIT_NAMESPACE, CLD_EXITED);
test(m, "exec-privatetmp-disabled-by-prefix.service", can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_FAILURE : EXIT_NAMESPACE, CLD_EXITED);
FOREACH_STRING(s,
"exec-privatetmp-disconnected.service",
"exec-privatetmp-disconnected-defaultdependencies-no.service",
"exec-privatetmp-disconnected-requires-mounts-for-var.service",
"exec-privatetmp-disconnected-wants-mounts-for-var.service",
"exec-privatetmp-disconnected-after-and-requires-for-var.service",
"exec-privatetmp-disconnected-after-and-wants-for-var.service") {
(void) unlink("/tmp/test-exec_privatetmp_disconnected");
(void) unlink("/var/tmp/test-exec_privatetmp_disconnected");
test(m, s, can_unshare ? 0 : MANAGER_IS_SYSTEM(m) ? EXIT_FAILURE : EXIT_NAMESPACE, CLD_EXITED);
ASSERT_FAIL(access("/tmp/test-exec_privatetmp_disconnected", F_OK));
ASSERT_FAIL(access("/var/tmp/test-exec_privatetmp_disconnected", F_OK));
}
}
test(m, "exec-privatetmp-no.service", 0, CLD_EXITED);
@@ -0,0 +1,15 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test for PrivateTmp=disconnected with After=/Requires=var.mount
DefaultDependencies=no
After=var.mount
Requires=var.mount
[Service]
ExecStart=sh -x -c 'test ! -f /tmp/test-exec_privatetmp'
ExecStart=touch /tmp/test-exec_privatetmp_disconnected
ExecStart=touch /var/tmp/test-exec_privatetmp_disconnected
ExecStart=sh -x -c 'test x$$TMPDIR = x'
Type=oneshot
ProtectSystem=strict
PrivateTmp=disconnected
@@ -0,0 +1,15 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test for PrivateTmp=disconnected with After=/Wants=var.mount
DefaultDependencies=no
After=var.mount
Wants=var.mount
[Service]
ExecStart=sh -x -c 'test ! -f /tmp/test-exec_privatetmp'
ExecStart=touch /tmp/test-exec_privatetmp_disconnected
ExecStart=touch /var/tmp/test-exec_privatetmp_disconnected
ExecStart=sh -x -c 'test x$$TMPDIR = x'
Type=oneshot
ProtectSystem=strict
PrivateTmp=disconnected
@@ -0,0 +1,13 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test for PrivateTmp=disconnected with DefaultDependencies=no
DefaultDependencies=no
[Service]
ExecStart=sh -x -c 'test ! -f /tmp/test-exec_privatetmp'
ExecStart=touch /tmp/test-exec_privatetmp_disconnected
ExecStart=sh -x -c '(! touch /var/tmp/test-exec_privatetmp_disconnected)'
ExecStart=sh -x -c 'test $$TMPDIR = /tmp'
Type=oneshot
ProtectSystem=strict
PrivateTmp=disconnected
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test for PrivateTmp=disconnected with RequiresMountsFor=/var/
DefaultDependencies=no
RequiresMountsFor=/var/
[Service]
ExecStart=sh -x -c 'test ! -f /tmp/test-exec_privatetmp'
ExecStart=touch /tmp/test-exec_privatetmp_disconnected
ExecStart=touch /var/tmp/test-exec_privatetmp_disconnected
ExecStart=sh -x -c 'test x$$TMPDIR = x'
Type=oneshot
ProtectSystem=strict
PrivateTmp=disconnected
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test for PrivateTmp=disconnected with WantsMountsFor=/var/
DefaultDependencies=no
WantsMountsFor=/var/
[Service]
ExecStart=sh -x -c 'test ! -f /tmp/test-exec_privatetmp'
ExecStart=touch /tmp/test-exec_privatetmp_disconnected
ExecStart=touch /var/tmp/test-exec_privatetmp_disconnected
ExecStart=sh -x -c 'test x$$TMPDIR = x'
Type=oneshot
ProtectSystem=strict
PrivateTmp=disconnected
@@ -0,0 +1,12 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[Unit]
Description=Test for PrivateTmp=disconnected
[Service]
ExecStart=sh -x -c 'test ! -f /tmp/test-exec_privatetmp'
ExecStart=touch /tmp/test-exec_privatetmp_disconnected
ExecStart=touch /var/tmp/test-exec_privatetmp_disconnected
ExecStart=sh -x -c 'test x$$TMPDIR = x'
Type=oneshot
ProtectSystem=strict
PrivateTmp=disconnected