diff options
Diffstat (limited to 'src/tools/pgtest')
-rwxr-xr-x | src/tools/pgtest | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/tools/pgtest b/src/tools/pgtest new file mode 100755 index 0000000..70f6a62 --- /dev/null +++ b/src/tools/pgtest @@ -0,0 +1,57 @@ +#!/bin/sh + +# src/tools/pgtest [-n] [...] + +# This runs a build/initdb/regression test suite +# +# This will start a temporary postmaster, so you have to +# have enough kernel resources to run two postmasters or +# stop your main postmaster before running this script. +# +# Use -n to prevent 'make clean' + +MAKE="make" + +[ ! -d src ] && echo "This must be run from the top of the PostgreSQL source tree" 1>&2 && exit 1 + +trap "rm -rf /tmp/$$" 0 1 2 3 15 +mkdir /tmp/$$ +TMP="/tmp/$$" + +if [ "X$1" != "X-n" ] +then CLEAN="Y" +else CLEAN="" + shift +fi + +rm -f tmp_install/log/install.log + +# Run "make check" and store return code in $TMP/ret. +# Display output but also capture it in $TMP/0. +( + if [ "$CLEAN" ] + then $MAKE "$@" clean 2>&1 + echo "$?" > $TMP/ret + fi + if [ $(cat $TMP/ret) -eq 0 ] + then $MAKE "$@" 2>&1 && $MAKE "$@" check 2>&1 + echo "$?" > $TMP/ret + fi +) | tee $TMP/0 + +# Grab possible warnings from install.log +[ -e tmp_install/log/install.log ] && cat tmp_install/log/install.log >> $TMP/0 + +# If success, display warnings +if [ $(cat $TMP/ret) -eq 0 ] +then cat $TMP/0 | + # The following grep's have to be adjusted for your setup because + # certain warnings are acceptable. + grep -i warning | + grep -v setproctitle | + grep -v find_rule | + grep -v yy_flex_realloc +fi + +# return original make error code +exit `cat $TMP/ret` |