Add an 'all' regression set which creates the initial DB for the others.

As a result we don't need to keep the initial databases in Git, or
in the release, and we have a way of running all regression tests
as well as just running small subsets when we need to.
This commit is contained in:
Andrew McMillan 2010-09-25 22:29:54 +12:00
parent 7b18b3edc2
commit 296379c734
3 changed files with 56 additions and 11328 deletions

View File

@ -18,11 +18,10 @@ export PGTZ=Pacific/Auckland
SUITE=${1:-"regression-suite"}
ACCEPT_ALL=${2:-""}
[ -z "${UNTIL}" ] && UNTIL=99999
[ -z "${SUITE}" ] && SUITE="regression-suite"
REGRESSION="tests/${SUITE}"
RESULTS="${REGRESSION}/results"
check_result() {
TEST="$1"
@ -97,6 +96,12 @@ restore_database() {
}
dump_database() {
TEST="Dump-Database"
pg_dump -Fp ${DBNAME} > "${REGRESSION}/initial.dbdump" 2>&1
}
initialise_regression() {
drop_database ${DBNAME}
@ -113,40 +118,60 @@ initialise_regression() {
check_result "${TEST}"
}
mkdir -p "${RESULTS}"
mkdir -p "${REGRESSION}/diffs"
if [ -f "${REGRESSION}/initial.dbdump" ]; then
restore_database
else
initialise_regression
fi
run_regression_suite() {
RESULTS="${REGRESSION}/results"
mkdir -p "${RESULTS}"
mkdir -p "${REGRESSION}/diffs"
if [ -f "${REGRESSION}/initial.dbdump" ]; then
restore_database
else
initialise_regression
fi
for T in ${REGRESSION}/*.test ; do
TEST="`basename ${T} .test`"
TESTNUM="`echo ${TEST} | cut -f1 -d'-'`"
TESTNUM="${TEST/-*}"
if [ "${TESTNUM}" -gt "${UNTIL}" ] ; then
break;
fi
RESULT=999
while [ "${RESULT}" -gt 0 ]; do
./dav_test --dsn "${DSN}" ${WEBHOST} ${ALTHOST} --suite "${SUITE}" --case "${TEST}" | ./normalise_result > "${RESULTS}/${TEST}"
# Fix Vim syntax highlighting by putting an esac here. Silly, huh?
RESULT=999
while [ "${RESULT}" -gt 1 ]; do
check_result "${TEST}"
RESULT=$?
done
done
TCOUNT="$(( ${TCOUNT} + 1 ))"
done
}
TSTART="`date +%s`"
TCOUNT=0
for T in ${REGRESSION}/*.test ; do
TEST="`basename ${T} .test`"
TESTNUM="`echo ${TEST} | cut -f1 -d'-'`"
TESTNUM="${TEST/-*}"
if [ "${TESTNUM}" -gt "${UNTIL}" ] ; then
break;
fi
RESULT=999
while [ "${RESULT}" -gt 0 ]; do
./dav_test --dsn "${DSN}" ${WEBHOST} ${ALTHOST} --suite "${SUITE}" --case "${TEST}" | ./normalise_result > "${RESULTS}/${TEST}"
RESULT=999
while [ "${RESULT}" -gt 1 ]; do
check_result "${TEST}"
RESULT=$?
done
if [ "${SUITE}" = "all" ]; then
for SUITE in regression-suite binding carddav ; do
REGRESSION="tests/${SUITE}"
if [ "${SUITE}" != "regression-suite" ]; then
dump_database
fi
run_regression_suite "${SUITE}"
done
TCOUNT="$(( ${TCOUNT} + 1 ))"
done
else
REGRESSION="tests/${SUITE}"
run_regression_suite "${SUITE}"
fi
TFINISH="`date +%s`"
echo "Regression test run took $(( ${TFINISH} - ${TSTART} )) seconds for ${TCOUNT} tests."

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff