From: Markus Armbruster Date: Mon, 17 Dec 2012 20:36:53 +0000 (+0100) Subject: Factor tests/test-common.sh out of tests/smoke-test X-Git-Tag: v4.3.31~105 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=d161b6d9e42b959141926c197bf31acd33864635 Factor tests/test-common.sh out of tests/smoke-test For reuse by future tests. --- diff --git a/tests/smoke-test b/tests/smoke-test index 57d2cff8b..670eebada 100755 --- a/tests/smoke-test +++ b/tests/smoke-test @@ -7,12 +7,7 @@ fi srcdir="$1" -export EMPIREHOST=127.0.0.1 LOGNAME=tester - -if [ -x ./config.status ] && ./config.status --version | grep -q '^Wolfpack Empire' -then : -else echo "$0: Must be run in root of build tree" >&2; exit 1 -fi +. "$srcdir"/tests/test-common.sh # # Currently expected to work only with thread package LWP and a @@ -33,32 +28,14 @@ elif [ `sed -n 's/empthread *:= *\(.*\)/\1/p' &2 fi -# Create sandbox -rm -rf sandbox -mkdir -p sandbox/etc/empire sandbox/share/empire/builtin sandbox/var/empire -touch sandbox/etc/empire/schedule -cat >sandbox/etc/empire/econfig <sandbox/smoke.out -pid= -trap 'if [ "$pid" ]; then kill "$pid" 2>/dev/null || true; fi' EXIT - # Create world and start server src/util/files -e sandbox/etc/empire/econfig -f >&3 src/util/fairland -e sandbox/etc/empire/econfig -q -s sandbox/newcap_script -R 1 10 30 -src/server/emp_server -e sandbox/etc/empire/econfig -R 1 -while src/client/empire red herring 2>&1 | grep -q "Connection refused" -do : # FIXME hangs here if server crashes on startup -done -pid=`cat sandbox/var/empire/server.pid` +start_server src/client/empire POGO peter /dev/null # Feed player input @@ -94,41 +71,11 @@ EOF done # Stop server -kill "$pid" -while kill -0 "$pid" 2>/dev/null -do : # FIXME hangs here if server fails to exit -done +stop_server exec 3>&- src/util/empdump -e sandbox/etc/empire/econfig -x >sandbox/smoke.xdump # Smoke test completed; compare results - -cmp_out() -{ - local opt exp act nrm msg ret=0 - for i - do - case "$i" in - */journal.log) opt=-j ;; - */server.log) opt=-s ;; - *) opt= ;; - esac - exp="$srcdir/tests/smoke/${i##*/}" - act="sandbox/$i" - nrm="sandbox/normalized-${i##*/}" - perl "$srcdir"/tests/normalize.pl $opt "$act" >"$nrm" - if msg=`diff -q "$exp" "$nrm"` - then - echo "$exp OK" - else - ret=$? - echo "$exp FAIL" - echo $msg - fi - done - return $ret -} - cmp_out smoke.out var/empire/server.log var/empire/journal.log smoke.xdump diff --git a/tests/test-common.sh b/tests/test-common.sh new file mode 100644 index 000000000..d5cf075ee --- /dev/null +++ b/tests/test-common.sh @@ -0,0 +1,69 @@ +export EMPIREHOST=127.0.0.1 LOGNAME=tester + +if [ -x ./config.status ] && ./config.status --version | grep -q '^Wolfpack Empire' +then : +else echo "$0: Must be run in root of build tree" >&2; exit 1 +fi + +test=${0##*/} +test=${test%-test} + +create_sandbox() +{ + rm -rf sandbox + mkdir -p sandbox/etc/empire sandbox/share/empire/builtin sandbox/var/empire + touch sandbox/etc/empire/schedule + cat >sandbox/etc/empire/econfig </dev/null || true; fi' EXIT + src/server/emp_server -e sandbox/etc/empire/econfig -R 1 + while src/client/empire red herring 2>&1 | grep -q "Connection refused" + do : # FIXME hangs here if server crashes on startup + done + pid=`cat sandbox/var/empire/server.pid` +} + +stop_server() +{ + kill "$pid" + while kill -0 "$pid" 2>/dev/null + do : # FIXME hangs here if server fails to exit + done +} + +cmp_out() +{ + local opt exp act nrm msg ret=0 + for i + do + case "$i" in + */journal.log) opt=-j ;; + */server.log) opt=-s ;; + *) opt= ;; + esac + exp="$srcdir/tests/$test/${i##*/}" + act="sandbox/$i" + nrm="sandbox/normalized-${i##*/}" + perl "$srcdir"/tests/normalize.pl $opt "$act" >"$nrm" + if msg=`diff -q "$exp" "$nrm"` + then + echo "$exp OK" + else + ret=$? + echo "$exp FAIL" + echo $msg + fi + done + return $ret +}