test/path-makedirectory.path \
test/path-modified.path \
test/path-unit.path \
- test/exec-environment-empty.service \
- test/exec-environment-multiple.service \
- test/exec-environment.service \
- test/exec-group.service \
- test/exec-ignoresigpipe-no.service \
- test/exec-ignoresigpipe-yes.service \
- test/exec-personality-x86-64.service \
- test/exec-personality-x86.service \
- test/exec-personality-s390.service \
- test/exec-privatedevices-no.service \
- test/exec-privatedevices-yes.service \
- test/exec-privatetmp-no.service \
- test/exec-privatetmp-yes.service \
- test/exec-systemcallerrornumber.service \
- test/exec-systemcallfilter-failing2.service \
- test/exec-systemcallfilter-failing.service \
- test/exec-systemcallfilter-not-failing2.service \
- test/exec-systemcallfilter-not-failing.service \
- test/exec-user.service \
- test/exec-workingdirectory.service \
- test/exec-umask-0177.service \
- test/exec-umask-default.service \
- test/exec-privatenetwork-yes.service \
- test/exec-environmentfile.service \
- test/exec-oomscoreadjust-positive.service \
- test/exec-oomscoreadjust-negative.service \
- test/exec-ioschedulingclass-best-effort.service \
- test/exec-ioschedulingclass-idle.service \
- test/exec-ioschedulingclass-none.service \
- test/exec-ioschedulingclass-realtime.service \
- test/exec-capabilityboundingset-invert.service \
- test/exec-capabilityboundingset-merge.service \
- test/exec-capabilityboundingset-reset.service \
- test/exec-capabilityboundingset-simple.service \
+ test/test-execute/exec-environment-empty.service \
+ test/test-execute/exec-environment-multiple.service \
+ test/test-execute/exec-environment.service \
+ test/test-execute/exec-group.service \
+ test/test-execute/exec-ignoresigpipe-no.service \
+ test/test-execute/exec-ignoresigpipe-yes.service \
+ test/test-execute/exec-personality-x86-64.service \
+ test/test-execute/exec-personality-x86.service \
+ test/test-execute/exec-personality-s390.service \
+ test/test-execute/exec-privatedevices-no.service \
+ test/test-execute/exec-privatedevices-yes.service \
+ test/test-execute/exec-privatetmp-no.service \
+ test/test-execute/exec-privatetmp-yes.service \
+ test/test-execute/exec-systemcallerrornumber.service \
+ test/test-execute/exec-systemcallfilter-failing2.service \
+ test/test-execute/exec-systemcallfilter-failing.service \
+ test/test-execute/exec-systemcallfilter-not-failing2.service \
+ test/test-execute/exec-systemcallfilter-not-failing.service \
+ test/test-execute/exec-user.service \
+ test/test-execute/exec-workingdirectory.service \
+ test/test-execute/exec-umask-0177.service \
+ test/test-execute/exec-umask-default.service \
+ test/test-execute/exec-privatenetwork-yes.service \
+ test/test-execute/exec-environmentfile.service \
+ test/test-execute/exec-oomscoreadjust-positive.service \
+ test/test-execute/exec-oomscoreadjust-negative.service \
+ test/test-execute/exec-ioschedulingclass-best-effort.service \
+ test/test-execute/exec-ioschedulingclass-idle.service \
+ test/test-execute/exec-ioschedulingclass-none.service \
+ test/test-execute/exec-ioschedulingclass-realtime.service \
+ test/test-execute/exec-capabilityboundingset-invert.service \
+ test/test-execute/exec-capabilityboundingset-merge.service \
+ test/test-execute/exec-capabilityboundingset-reset.service \
+ test/test-execute/exec-capabilityboundingset-simple.service \
test/bus-policy/hello.conf \
test/bus-policy/methods.conf \
test/bus-policy/ownerships.conf \
}
assert_se(setenv("XDG_RUNTIME_DIR", "/tmp/", 1) == 0);
- assert_se(set_unit_path(TEST_DIR) >= 0);
+ assert_se(set_unit_path(TEST_DIR "/test-execute/") >= 0);
r = manager_new(MANAGER_USER, true, &m);
if (IN_SET(r, -EPERM, -EACCES, -EADDRINUSE, -EHOSTDOWN, -ENOENT)) {
+++ /dev/null
-[Unit]
-Description=Test for CapabilityBoundingSet
-
-[Service]
-ExecStart=/bin/sh -c 'c=$(capsh --print | grep "Bounding set " | grep "cap_chown"); echo $c; exit $(test -z $c)'
-CapabilityBoundingSet=~CAP_CHOWN
+++ /dev/null
-[Unit]
-Description=Test for CapabilityBoundingSet
-
-[Service]
-ExecStart=/bin/sh -c 'c=$(capsh --print | grep "Bounding set " | cut -f 2 -d "="); echo $c; exit $(test $c = "cap_chown,cap_fowner,cap_kill")'
-CapabilityBoundingSet=CAP_FOWNER
-CapabilityBoundingSet=CAP_KILL CAP_CHOWN
+++ /dev/null
-[Unit]
-Description=Test for CapabilityBoundingSet
-
-[Service]
-ExecStart=/bin/sh -c 'c=$(capsh --print | grep "Bounding set " | cut -f 2 -d "="); echo $c; exit $(test -z $c)'
-CapabilityBoundingSet=CAP_FOWNER CAP_KILL
-CapabilityBoundingSet=
+++ /dev/null
-[Unit]
-Description=Test for CapabilityBoundingSet
-
-[Service]
-ExecStart=/bin/sh -c 'c=$(capsh --print | grep "Bounding set " | cut -f 2 -d "="); echo $c; exit $(test $c = "cap_fowner,cap_kill")'
-CapabilityBoundingSet=CAP_FOWNER CAP_KILL
+++ /dev/null
-[Unit]
-Description=Test for Environment
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test ! "$VAR1" = "word1 word2") && $(test ! "$VAR2" = word3) && $(test ! "$VAR3" = \'$word 5 6\')'
-Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"
-Environment=
+++ /dev/null
-[Unit]
-Description=Test for Environment
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test "$VAR1" = "word1 word2") && $(test "$VAR2" = word3) && $(test "$VAR3" = foobar)'
-Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"
-Environment="VAR3=foobar"
+++ /dev/null
-[Unit]
-Description=Test for Environment
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test "$VAR1" = "word1 word2") && $(test "$VAR2" = word3) && $(test "$VAR3" = \'$word 5 6\')'
-Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"
+++ /dev/null
-[Unit]
-Description=Test for EnvironmentFile
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test "$VAR1" = "word1 word2") && $(test "$VAR2" = word3) && $(test "$VAR3" = \'$word 5 6\')'
-Type=oneshot
-EnvironmentFile=/tmp/test-exec_environmentfile.conf
+++ /dev/null
-[Unit]
-Description=Test for Group
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test $(id -n -g) = nobody)'
-Group=nobody
+++ /dev/null
-[Unit]
-Description=Test for IgnoreSIGPIPE=no
-
-[Service]
-ExecStart=/bin/sh -c 'kill -PIPE 0'
-Type=oneshot
-IgnoreSIGPIPE=no
+++ /dev/null
-[Unit]
-Description=Test for IgnoreSIGPIPE=yes
-
-[Service]
-ExecStart=/bin/sh -c 'kill -PIPE 0'
-Type=oneshot
-IgnoreSIGPIPE=yes
+++ /dev/null
-[Unit]
-Description=Test for IOSchedulingClass=best-effort
-
-[Service]
-ExecStart=/bin/bash -c 'c=$(ionice); echo $c; [[ "$c" == best-effort* ]]'
-Type=oneshot
-IOSchedulingClass=best-effort
+++ /dev/null
-[Unit]
-Description=Test for IOSchedulingClass=idle
-
-[Service]
-ExecStart=/bin/bash -c 'c=$(ionice); echo $c; [[ "$c" == idle* ]]'
-Type=oneshot
-IOSchedulingClass=idle
+++ /dev/null
-[Unit]
-Description=Test for IOSchedulingClass=none
-
-[Service]
-ExecStart=/bin/bash -c 'c=$(ionice); echo $c; [[ "$c" == none* ]]'
-Type=oneshot
-IOSchedulingClass=none
+++ /dev/null
-[Unit]
-Description=Test for IOSchedulingClass=realtime
-
-[Service]
-ExecStart=/bin/bash -c 'c=$(ionice); echo $c; [[ "$c" == realtime* ]]'
-Type=oneshot
-IOSchedulingClass=realtime
+++ /dev/null
-[Unit]
-Description=Test for OOMScoreAdjust
-
-[Service]
-ExecStart=/bin/bash -c 'c=$(cat /proc/self/oom_score_adj); echo $c; exit $(test $c -eq -100)'
-OOMScoreAdjust=-100
-Type=oneshot
+++ /dev/null
-[Unit]
-Description=Test for OOMScoreAdjust
-
-[Service]
-ExecStart=/bin/bash -c 'c=$(cat /proc/self/oom_score_adj); echo $c; exit $(test $c -eq 100)'
-OOMScoreAdjust=100
-Type=oneshot
+++ /dev/null
-[Unit]
-Description=Test for Personality=s390
-
-[Service]
-ExecStart=/bin/sh -c 'echo $(uname -m); exit $(test $(uname -m) = "s390")'
-Type=oneshot
-Personality=s390
+++ /dev/null
-[Unit]
-Description=Test for Personality=x86-64
-
-[Service]
-ExecStart=/bin/sh -c 'echo $(uname -m); exit $(test $(uname -m) = "x86_64")'
-Type=oneshot
-Personality=x86-64
+++ /dev/null
-[Unit]
-Description=Test for Personality=x86
-
-[Service]
-ExecStart=/bin/sh -c 'echo $(uname -m); exit $(test $(uname -m) = "i686")'
-Type=oneshot
-Personality=x86
+++ /dev/null
-[Unit]
-Description=Test for PrivateDev=no
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test -c /dev/mem)'
-Type=oneshot
-PrivateDevices=no
+++ /dev/null
-[Unit]
-Description=Test for PrivateDev=yes
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test ! -c /dev/mem)'
-Type=oneshot
-PrivateDevices=yes
+++ /dev/null
-[Unit]
-Description=Test for PrivateNetwork
-
-[Service]
-ExecStart=/bin/sh -c 'i=$(ip link | grep ": " | grep -v lo); echo $i; exit $(test -z $i)'
-PrivateNetwork=yes
+++ /dev/null
-[Unit]
-Description=Test for PrivateTmp=no
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test -f /tmp/test-exec_privatetmp)'
-Type=oneshot
-PrivateTmp=no
+++ /dev/null
-[Unit]
-Description=Test for PrivateTmp=yes
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test ! -f /tmp/test-exec_privatetmp)'
-Type=oneshot
-PrivateTmp=yes
+++ /dev/null
-[Unit]
-Description=Test for RuntimeDirectoryMode
-
-[Service]
-ExecStart=/bin/sh -c 's=$(stat -c %a /tmp/test-exec_runtimedirectory-mode); echo $s; exit $(test $s = "750")'
-Type=oneshot
-RuntimeDirectory=test-exec_runtimedirectory-mode
-RuntimeDirectoryMode=0750
+++ /dev/null
-[Unit]
-Description=Test for RuntimeDirectory owner (must not be the default group of the user if Group is set)
-
-[Service]
-ExecStart=/bin/sh -c 'f=/tmp/test-exec_runtimedirectory-owner;g=$(stat -c %G $f); echo "$g"; exit $(test $g = "nobody")'
-Type=oneshot
-Group=nobody
-User=root
-RuntimeDirectory=test-exec_runtimedirectory-owner
+++ /dev/null
-[Unit]
-Description=Test for RuntimeDirectory
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test -d /tmp/test-exec_runtimedirectory)'
-Type=oneshot
-RuntimeDirectory=test-exec_runtimedirectory
+++ /dev/null
-[Unit]
-Description=Test for SystemCallErrorNumber
-
-[Service]
-ExecStart=/usr/bin/uname -a
-SystemCallFilter=~uname
-SystemCallErrorNumber=EACCES
+++ /dev/null
-[Unit]
-Description=Test for SystemCallFilter
-
-[Service]
-ExecStart=/bin/echo "This should not be seen"
-SystemCallFilter=ioperm
-SystemCallFilter=~ioperm
-SystemCallFilter=ioperm
+++ /dev/null
-[Unit]
-Description=Test for SystemCallFilter
-
-[Service]
-ExecStart=/bin/echo "This should not be seen"
-SystemCallFilter=~write open execve exit_group close mmap munmap fstat DONOTEXIST
+++ /dev/null
-[Unit]
-Description=Test for SystemCallFilter
-
-[Service]
-ExecStart=/bin/echo "Foo bar"
-SystemCallFilter=~read write open execve ioperm
-SystemCallFilter=ioctl
-SystemCallFilter=read write open execve
-SystemCallFilter=~ioperm
+++ /dev/null
-[Unit]
-Description=Test for SystemCallFilter
-
-[Service]
-ExecStart=/bin/echo "Foo bar"
-SystemCallFilter=
+++ /dev/null
-[Unit]
-Description=Test for UMask
-
-[Service]
-ExecStart=/bin/sh -c 'touch /tmp/test-exec-umask; s=$(stat -c %a /tmp/test-exec-umask); echo $s; exit $(test $s = "600")'
-UMask=0177
-PrivateTmp=yes
+++ /dev/null
-[Unit]
-Description=Test for UMask default
-
-[Service]
-ExecStart=/bin/sh -c 'touch /tmp/test-exec-umask; s=$(stat -c %a /tmp/test-exec-umask); echo $s; exit $(test $s = "644")'
-PrivateTmp=yes
+++ /dev/null
-[Unit]
-Description=Test for User
-
-[Service]
-ExecStart=/bin/sh -c 'exit $(test "$USER" = nobody)'
-User=nobody
+++ /dev/null
-[Unit]
-Description=Test for WorkingDirectory
-
-[Service]
-ExecStart=/bin/sh -c 'echo $PWD; exit $(test $PWD = "/tmp/test-exec_workingdirectory")'
-Type=oneshot
-WorkingDirectory=/tmp/test-exec_workingdirectory
--- /dev/null
+[Unit]
+Description=Test for CapabilityBoundingSet
+
+[Service]
+ExecStart=/bin/sh -c 'c=$(capsh --print | grep "Bounding set " | grep "cap_chown"); echo $c; exit $(test -z $c)'
+CapabilityBoundingSet=~CAP_CHOWN
--- /dev/null
+[Unit]
+Description=Test for CapabilityBoundingSet
+
+[Service]
+ExecStart=/bin/sh -c 'c=$(capsh --print | grep "Bounding set " | cut -f 2 -d "="); echo $c; exit $(test $c = "cap_chown,cap_fowner,cap_kill")'
+CapabilityBoundingSet=CAP_FOWNER
+CapabilityBoundingSet=CAP_KILL CAP_CHOWN
--- /dev/null
+[Unit]
+Description=Test for CapabilityBoundingSet
+
+[Service]
+ExecStart=/bin/sh -c 'c=$(capsh --print | grep "Bounding set " | cut -f 2 -d "="); echo $c; exit $(test -z $c)'
+CapabilityBoundingSet=CAP_FOWNER CAP_KILL
+CapabilityBoundingSet=
--- /dev/null
+[Unit]
+Description=Test for CapabilityBoundingSet
+
+[Service]
+ExecStart=/bin/sh -c 'c=$(capsh --print | grep "Bounding set " | cut -f 2 -d "="); echo $c; exit $(test $c = "cap_fowner,cap_kill")'
+CapabilityBoundingSet=CAP_FOWNER CAP_KILL
--- /dev/null
+[Unit]
+Description=Test for Environment
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test ! "$VAR1" = "word1 word2") && $(test ! "$VAR2" = word3) && $(test ! "$VAR3" = \'$word 5 6\')'
+Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"
+Environment=
--- /dev/null
+[Unit]
+Description=Test for Environment
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test "$VAR1" = "word1 word2") && $(test "$VAR2" = word3) && $(test "$VAR3" = foobar)'
+Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"
+Environment="VAR3=foobar"
--- /dev/null
+[Unit]
+Description=Test for Environment
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test "$VAR1" = "word1 word2") && $(test "$VAR2" = word3) && $(test "$VAR3" = \'$word 5 6\')'
+Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"
--- /dev/null
+[Unit]
+Description=Test for EnvironmentFile
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test "$VAR1" = "word1 word2") && $(test "$VAR2" = word3) && $(test "$VAR3" = \'$word 5 6\')'
+Type=oneshot
+EnvironmentFile=/tmp/test-exec_environmentfile.conf
--- /dev/null
+[Unit]
+Description=Test for Group
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test $(id -n -g) = nobody)'
+Group=nobody
--- /dev/null
+[Unit]
+Description=Test for IgnoreSIGPIPE=no
+
+[Service]
+ExecStart=/bin/sh -c 'kill -PIPE 0'
+Type=oneshot
+IgnoreSIGPIPE=no
--- /dev/null
+[Unit]
+Description=Test for IgnoreSIGPIPE=yes
+
+[Service]
+ExecStart=/bin/sh -c 'kill -PIPE 0'
+Type=oneshot
+IgnoreSIGPIPE=yes
--- /dev/null
+[Unit]
+Description=Test for IOSchedulingClass=best-effort
+
+[Service]
+ExecStart=/bin/bash -c 'c=$(ionice); echo $c; [[ "$c" == best-effort* ]]'
+Type=oneshot
+IOSchedulingClass=best-effort
--- /dev/null
+[Unit]
+Description=Test for IOSchedulingClass=idle
+
+[Service]
+ExecStart=/bin/bash -c 'c=$(ionice); echo $c; [[ "$c" == idle* ]]'
+Type=oneshot
+IOSchedulingClass=idle
--- /dev/null
+[Unit]
+Description=Test for IOSchedulingClass=none
+
+[Service]
+ExecStart=/bin/bash -c 'c=$(ionice); echo $c; [[ "$c" == none* ]]'
+Type=oneshot
+IOSchedulingClass=none
--- /dev/null
+[Unit]
+Description=Test for IOSchedulingClass=realtime
+
+[Service]
+ExecStart=/bin/bash -c 'c=$(ionice); echo $c; [[ "$c" == realtime* ]]'
+Type=oneshot
+IOSchedulingClass=realtime
--- /dev/null
+[Unit]
+Description=Test for OOMScoreAdjust
+
+[Service]
+ExecStart=/bin/bash -c 'c=$(cat /proc/self/oom_score_adj); echo $c; exit $(test $c -eq -100)'
+OOMScoreAdjust=-100
+Type=oneshot
--- /dev/null
+[Unit]
+Description=Test for OOMScoreAdjust
+
+[Service]
+ExecStart=/bin/bash -c 'c=$(cat /proc/self/oom_score_adj); echo $c; exit $(test $c -eq 100)'
+OOMScoreAdjust=100
+Type=oneshot
--- /dev/null
+[Unit]
+Description=Test for Personality=s390
+
+[Service]
+ExecStart=/bin/sh -c 'echo $(uname -m); exit $(test $(uname -m) = "s390")'
+Type=oneshot
+Personality=s390
--- /dev/null
+[Unit]
+Description=Test for Personality=x86-64
+
+[Service]
+ExecStart=/bin/sh -c 'echo $(uname -m); exit $(test $(uname -m) = "x86_64")'
+Type=oneshot
+Personality=x86-64
--- /dev/null
+[Unit]
+Description=Test for Personality=x86
+
+[Service]
+ExecStart=/bin/sh -c 'echo $(uname -m); exit $(test $(uname -m) = "i686")'
+Type=oneshot
+Personality=x86
--- /dev/null
+[Unit]
+Description=Test for PrivateDev=no
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test -c /dev/mem)'
+Type=oneshot
+PrivateDevices=no
--- /dev/null
+[Unit]
+Description=Test for PrivateDev=yes
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test ! -c /dev/mem)'
+Type=oneshot
+PrivateDevices=yes
--- /dev/null
+[Unit]
+Description=Test for PrivateNetwork
+
+[Service]
+ExecStart=/bin/sh -c 'i=$(ip link | grep ": " | grep -v lo); echo $i; exit $(test -z $i)'
+PrivateNetwork=yes
--- /dev/null
+[Unit]
+Description=Test for PrivateTmp=no
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test -f /tmp/test-exec_privatetmp)'
+Type=oneshot
+PrivateTmp=no
--- /dev/null
+[Unit]
+Description=Test for PrivateTmp=yes
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test ! -f /tmp/test-exec_privatetmp)'
+Type=oneshot
+PrivateTmp=yes
--- /dev/null
+[Unit]
+Description=Test for RuntimeDirectoryMode
+
+[Service]
+ExecStart=/bin/sh -c 's=$(stat -c %a /tmp/test-exec_runtimedirectory-mode); echo $s; exit $(test $s = "750")'
+Type=oneshot
+RuntimeDirectory=test-exec_runtimedirectory-mode
+RuntimeDirectoryMode=0750
--- /dev/null
+[Unit]
+Description=Test for RuntimeDirectory owner (must not be the default group of the user if Group is set)
+
+[Service]
+ExecStart=/bin/sh -c 'f=/tmp/test-exec_runtimedirectory-owner;g=$(stat -c %G $f); echo "$g"; exit $(test $g = "nobody")'
+Type=oneshot
+Group=nobody
+User=root
+RuntimeDirectory=test-exec_runtimedirectory-owner
--- /dev/null
+[Unit]
+Description=Test for RuntimeDirectory
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test -d /tmp/test-exec_runtimedirectory)'
+Type=oneshot
+RuntimeDirectory=test-exec_runtimedirectory
--- /dev/null
+[Unit]
+Description=Test for SystemCallErrorNumber
+
+[Service]
+ExecStart=/usr/bin/uname -a
+SystemCallFilter=~uname
+SystemCallErrorNumber=EACCES
--- /dev/null
+[Unit]
+Description=Test for SystemCallFilter
+
+[Service]
+ExecStart=/bin/echo "This should not be seen"
+SystemCallFilter=ioperm
+SystemCallFilter=~ioperm
+SystemCallFilter=ioperm
--- /dev/null
+[Unit]
+Description=Test for SystemCallFilter
+
+[Service]
+ExecStart=/bin/echo "This should not be seen"
+SystemCallFilter=~write open execve exit_group close mmap munmap fstat DONOTEXIST
--- /dev/null
+[Unit]
+Description=Test for SystemCallFilter
+
+[Service]
+ExecStart=/bin/echo "Foo bar"
+SystemCallFilter=~read write open execve ioperm
+SystemCallFilter=ioctl
+SystemCallFilter=read write open execve
+SystemCallFilter=~ioperm
--- /dev/null
+[Unit]
+Description=Test for SystemCallFilter
+
+[Service]
+ExecStart=/bin/echo "Foo bar"
+SystemCallFilter=
--- /dev/null
+[Unit]
+Description=Test for UMask
+
+[Service]
+ExecStart=/bin/sh -c 'touch /tmp/test-exec-umask; s=$(stat -c %a /tmp/test-exec-umask); echo $s; exit $(test $s = "600")'
+UMask=0177
+PrivateTmp=yes
--- /dev/null
+[Unit]
+Description=Test for UMask default
+
+[Service]
+ExecStart=/bin/sh -c 'touch /tmp/test-exec-umask; s=$(stat -c %a /tmp/test-exec-umask); echo $s; exit $(test $s = "644")'
+PrivateTmp=yes
--- /dev/null
+[Unit]
+Description=Test for User
+
+[Service]
+ExecStart=/bin/sh -c 'exit $(test "$USER" = nobody)'
+User=nobody
--- /dev/null
+[Unit]
+Description=Test for WorkingDirectory
+
+[Service]
+ExecStart=/bin/sh -c 'echo $PWD; exit $(test $PWD = "/tmp/test-exec_workingdirectory")'
+Type=oneshot
+WorkingDirectory=/tmp/test-exec_workingdirectory