diff --git a/testing/run_regressions.sh b/testing/run_regressions.sh index b0da370b..1514c779 100755 --- a/testing/run_regressions.sh +++ b/testing/run_regressions.sh @@ -3,36 +3,58 @@ # Run the regression tests and display differences # DBNAME=caldav +UNTIL=${1:-"99999"} + +REGRESSION="tests/regression-suite" +RESULTS="${REGRESSION}/results" + +check_result() { + TEST="$1" + if [ ! -f "${REGRESSION}/${TEST}.result" ] ; then + touch "${REGRESSION}/${TEST}.result" + fi + diff -u "${REGRESSION}/${TEST}.result" "${RESULTS}/${TEST}" >"${REGRESSION}/diffs/${TEST}" + + if [ -s "${REGRESSION}/diffs/${TEST}" -o ! -f "${REGRESSION}/${TEST}.result" ] ; then + echo "=======================================" + echo "Displaying diff for test ${TEST}" + echo "=======================================" + cat "${REGRESSION}/diffs/${TEST}" + read -p "Accept this as new standard result [y/N]? " ACCEPT + if [ "${ACCEPT}" = "y" ] ; then + cp "${RESULTS}/${TEST}" "${REGRESSION}/${TEST}.result" + fi + else + echo "Test ${TEST} passed OK!" + fi +} # Restart PGPool to ensure we can drop and recreate the database # FIXME: We should really drop everything *from* the database and create it # from that, so we don't need to do this. sudo /etc/init.d/pgpool restart -dropdb ${DBNAME} -../dba/create-database.sh ${DBNAME} -psql -q -f "../dba/sample-data.sql" "${DBNAME}" +if ! dropdb ${DBNAME}; then + echo "Unable to drop existing database" + exit +fi -for T in tests/regression-suite/*.test ; do - TEST="`basename ${T} .test`" - ./dav_test regression-suite "${TEST}" | ./normalise_result > "tests/regression-suite/results/${TEST}" - if [ ! -f "tests/regression-suite/${TEST}.result" ] ; then - touch "tests/regression-suite/${TEST}.result" - fi - diff -u "tests/regression-suite/${TEST}.result" "tests/regression-suite/results/${TEST}" >"tests/regression-suite/diffs/${TEST}" -done +TEST="Create-Database" +../dba/create-database.sh ${DBNAME} >"${RESULTS}/${TEST}" 2>&1 +check_result "${TEST}" -for T in tests/regression-suite/*.test ; do +TEST="Load-Sample-Data" +psql -q -f "../dba/sample-data.sql" "${DBNAME}" >"${RESULTS}/${TEST}" 2>&1 +check_result "${TEST}" + +for T in ${REGRESSION}/*.test ; do TEST="`basename ${T} .test`" - if [ -s "tests/regression-suite/diffs/${TEST}" -o ! -f "tests/regression-suite/${TEST}.result" ] ; then - echo "=======================================" - echo "Displaying diff for test ${TEST}" - echo "=======================================" - cat "tests/regression-suite/diffs/${TEST}" - read -p "Accept this as new standard result [y/N]? " ACCEPT - if [ "${ACCEPT}" = "y" ] ; then - cp "tests/regression-suite/results/${TEST}" "tests/regression-suite/${TEST}.result" - fi - else - echo "Test ${TEST} passed OK!" + TESTNUM="`echo ${TEST} | cut -f1 -d'-'`" + TESTNUM="${TEST/-*}" + if [ "${TESTNUM}" -gt "${UNTIL}" ] ; then + break; fi + ./dav_test regression-suite "${TEST}" | ./normalise_result > "${RESULTS}/${TEST}" + + check_result "${TEST}" + done diff --git a/testing/tests/regression-suite/Create-Database.result b/testing/tests/regression-suite/Create-Database.result new file mode 100644 index 00000000..a7a2ed76 --- /dev/null +++ b/testing/tests/regression-suite/Create-Database.result @@ -0,0 +1,26 @@ +CREATE DATABASE + new_db_revision +----------------- + t +(1 row) + + new_db_revision +----------------- + t +(1 row) + + setval +-------- + 10 +(1 row) + + setval +-------- + 1000 +(1 row) + + setval +-------- + 10 +(1 row) + diff --git a/testing/tests/regression-suite/Load-Sample-Data.result b/testing/tests/regression-suite/Load-Sample-Data.result new file mode 100644 index 00000000..d1e096ba --- /dev/null +++ b/testing/tests/regression-suite/Load-Sample-Data.result @@ -0,0 +1,10 @@ + setval +-------- + 1000 +(1 row) + + setval +-------- + 10 +(1 row) +