| #!/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 "ret=$?; rm -rf /tmp/$$; exit $ret" 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` |