[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[shepherd] branch master updated: tests: Test #:file-creation-mask optio
From: |
Ludovic Courtès |
Subject: |
[shepherd] branch master updated: tests: Test #:file-creation-mask option of 'make-forkexec-constructor'. |
Date: |
Tue, 28 Apr 2020 16:55:22 -0400 |
This is an automated email from the git hooks/post-receive script.
civodul pushed a commit to branch master
in repository shepherd.
The following commit(s) were added to refs/heads/master by this push:
new e197ec0 tests: Test #:file-creation-mask option of
'make-forkexec-constructor'.
e197ec0 is described below
commit e197ec0f668d6f4c18be8e334737c72ab61e350f
Author: Diego Nicola Barbato <address@hidden>
AuthorDate: Mon Apr 27 16:57:36 2020 +0200
tests: Test #:file-creation-mask option of 'make-forkexec-constructor'.
This is a followup to 4b5f958035426e1a4fce1ada19be68b62d7b75df.
* tests/file-creation-mask.sh: New file.
* Makefile.am (TESTS): Add it.
Signed-off-by: Ludovic Courtès <address@hidden>
---
Makefile.am | 1 +
tests/file-creation-mask.sh | 79 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 80 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index cae915e..774ebba 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -222,6 +222,7 @@ TESTS = \
tests/misbehaved-client.sh \
tests/no-home.sh \
tests/pid-file.sh \
+ tests/file-creation-mask.sh \
tests/status-sexp.sh \
tests/forking-service.sh \
tests/one-shot.sh \
diff --git a/tests/file-creation-mask.sh b/tests/file-creation-mask.sh
new file mode 100644
index 0000000..9f5f10a
--- /dev/null
+++ b/tests/file-creation-mask.sh
@@ -0,0 +1,79 @@
+# GNU Shepherd --- Test the #:file-creation-mask option of
'make-forkexec-constructor'.
+# Copyright © 2020 Diego N. Barbato <address@hidden>
+#
+# This file is part of the GNU Shepherd.
+#
+# The GNU Shepherd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# The GNU Shepherd is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with the GNU Shepherd. If not, see <http://www.gnu.org/licenses/>.
+
+shepherd --version
+herd --version
+
+socket="t-socket-$$"
+conf="t-conf-$$"
+log="t-log-$$"
+pid="t-pid-$$"
+service_log="t-service-log-$$"
+service_new_file="t-service-new-file-$$"
+
+herd="herd -s $socket"
+
+trap "cat $log || true;
+ rm -f $socket $conf $log $service_log $service_new_file;
+ test -f $pid && kill \`cat $pid\` || true; rm -f $pid" EXIT
+
+function wait_for_file
+{
+ i=0
+ while ! test -f "$1" && test $i -lt 20
+ do
+ sleep 0.3
+ i=`expr $i + 1`
+ done
+ test -f "$1"
+}
+
+cat > "$conf"<<EOF
+(define %command
+ '("$SHELL" "-c" "touch $PWD/$service_new_file; echo foo"))
+
+(register-services
+ (make <service>
+ #:provides '(test)
+ #:start (make-forkexec-constructor %command
+ #:log-file "$PWD/$service_log"
+ ;; Set the umask such that file
+ ;; permissions are #o600.
+ #:file-creation-mask #o177)
+ #:stop (make-kill-destructor)
+ #:respawn? #f))
+EOF
+
+rm -f "$pid"
+shepherd -I -s "$socket" -c "$conf" -l "$log" --pid="$pid" &
+
+# Wait till it's ready.
+wait_for_file "$pid"
+
+# Start the service.
+$herd start test
+
+# Make sure the log file is created with the right permissions independently
+# of the value of #:file-creation-mask.
+wait_for_file "$service_log"
+test `stat -c %a "$service_log"` -eq 640
+
+# Make sure the service creates files with the right permissions as determined
+# by the value of #:file-creation-mask.
+wait_for_file "$service_new_file"
+test `stat -c %a "$service_new_file"` -eq 600
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [shepherd] branch master updated: tests: Test #:file-creation-mask option of 'make-forkexec-constructor'.,
Ludovic Courtès <=