aboutsummaryrefslogtreecommitdiff
path: root/tests/aux/respawn
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2019-06-02 11:57:42 +0300
committerSergey Poznyakoff <gray@gnu.org>2019-06-02 11:57:42 +0300
commit685600d72b0c300f94c0c69dc0a16c4ebb230a21 (patch)
tree3a3ea6f43a8cdc543118e2cf81d29628dc82f61f /tests/aux/respawn
parentcc298a11a131b162f291d6ee27ba1d7598a1b6c4 (diff)
downloadpies-685600d72b0c300f94c0c69dc0a16c4ebb230a21.tar.gz
pies-685600d72b0c300f94c0c69dc0a16c4ebb230a21.tar.bz2
Rewrite the testsuite
The aim is to run pies in foreground if possible. Limit execution time using external wrapper. * src/pies.c: (_cb_redir): Consistently return 1 on errors. * tests/aux/sleepexit: New file. * tests/aux/startcheck: New file. * tests/aux/touchfile: Change arguments. * tests/aux/respawn: Rewrite. * tests/lines.c: New noinst program. * tests/to.c: New noinst program. * tests/.gitignore: Add new programs. * tests/Makefile.am: Update. * tests/env.at: Use to to avoid hanging forever. Add missing popdef. * tests/redirect.at: Use echo as component program. * tests/respawn.at: Run pies in foreground. Use to to limit execution time. * tests/shell.at: Likewise. * tests/shutdown.at: Likewise. * tests/startup.at: Likewise. * tests/ret-exec.at: Use sleepexit as component program. * tests/ret-notify.at: Likewise.
Diffstat (limited to 'tests/aux/respawn')
-rwxr-xr-xtests/aux/respawn75
1 files changed, 17 insertions, 58 deletions
diff --git a/tests/aux/respawn b/tests/aux/respawn
index cd9687a..afed85b 100755
--- a/tests/aux/respawn
+++ b/tests/aux/respawn
@@ -1,63 +1,22 @@
#! /bin/sh
-# usage: respawn [-append] [-stderr FILE] [-stdout FILE] [-sleep TIME]
-# [-pid FILE] [-tag STRING] [-exit CODE]
+# usage: respawn FILE COUNT
-append=0
-unset name
-time=1
-tag=$0
-code=0
+file=${1:?}
+maxcount=${2:?}
-while [ $# -ne 0 ]
-do
- arg=$1
- shift
- case $arg in
- -append)
- append=1;;
- -stderr)
- name=${1:?missing argument for -stderr}
- shift
- if [ $append -eq 1 ]; then
- exec 2>>$name
- append=0
- else
- exec 2>$name
- fi;;
- -stdout)
- name=${1:?missing argument for -stdout}
- shift
- if [ $append -eq 1 ]; then
- exec >>$name
- append=0
- else
- exec >$name
- fi;;
- -sleep)
- time=${1:?missing argument for -sleep}
- shift;;
- -pid)
- name=${1:?missing argument for -pid}
- shift
- if [ $append -eq 1 ]; then
- echo $$ >>$name
- append=0
- else
- echo $$ >$name
- fi;;
- -tag)
- tag=${1:?missing argument for -tag}
- shift;;
- -exit)
- code=${1:?missing argument for -exit}
- shift;;
- *) echo >&2 "$tag: invalid argument: $arg"
- exit 1
- esac
-done
+count=0
-echo "$tag: start"
-sleep $time
-echo "$tag: stop"
-exit $code
+if [ -f $file ]; then
+ count=`cat $file`
+ if test -n "$count" && test $count -ge $maxcount; then
+ exit 1
+ fi
+fi
+
+count=$(($count + 1))
+echo "$count" > $file
+
+exit 0
+
+

Return to:

Send suggestions and report system problems to the System administrator.