summaryrefslogtreecommitdiffstats
path: root/src/tools/pgtest
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/pgtest')
-rwxr-xr-xsrc/tools/pgtest57
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`