Improvements to run_regressions.sh options

* Add q to quit
* Loop if an invalid command is entered, instead of continuing

As part of this I converted the large if/elif/elif/.../fi to a case
statement, a bit easier to read.
This commit is contained in:
Andrew Ruthven 2022-12-17 14:54:48 +13:00 committed by Andrew Ruthven
parent 7a8c7b5b25
commit 45c74a628b

View File

@ -69,53 +69,73 @@ check_result() {
cat "${REGRESSION}/diffs/${TEST}"
echo "======================================="
fi
if [ "${ACCEPT_ALL}" = "" ] ; then
read -p "[${TEST}] Accept new result [e/s/r/v/f/m/x/y/w/N/?]? " ACCEPT
else
ACCEPT=${ACCEPT_ALL}
fi
if [ "${ACCEPT}" = "y" ] ; then
cp "${RESULTS}/${TEST}" "${REGRESSION}/${TEST}.result"
elif [ "${ACCEPT}" = "x" ]; then
echo "./dav_test --dsn '${DSN}' ${WEBHOST} ${ALTHOST} --suite '${SUITE}' --case '${TEST}' --debug"
if [ -z "$IS_CI" ]; then exit 2; fi
elif [ "${ACCEPT}" = "v" ]; then
echo "Showing test $REGRESSION/${TEST}.test"
cat "$REGRESSION/${TEST}.test"
return 2
elif [ "${ACCEPT}" = "s" ]; then
echo "Displaying side-by-side diff of ${TEST} results"
sdiff --text "${REGRESSION}/${TEST}.result" "${RESULTS}/${TEST}" | less -R
return 3
elif [ "${ACCEPT}" = "w" ]; then
echo "Displaying colourized diff of ${TEST} results"
wdiff -n -w $'\033[30;41m' -x $'\033[0m' -y $'\033[30;42m' -z $'\033[0m' "${REGRESSION}/${TEST}.result" "${RESULTS}/${TEST}" | less -R
return 3
elif [ "${ACCEPT}" = "m" ]; then
echo "Displaying side-by-side 'meld' of ${TEST} results"
$MELD "${REGRESSION}/${TEST}.result" "${RESULTS}/${TEST}"
return 3
elif [ "${ACCEPT}" = "f" ]; then
echo "Showing full details of ${TEST}"
cat "${REGRESSION}/${TEST}.test"
echo "Showing full result of ${TEST}"
cat "${RESULTS}/${TEST}"
return 3
elif [ "${ACCEPT}" = "e" ]; then
echo "Editing test $REGRESSION/${TEST}.test"
vi "$REGRESSION/${TEST}.test"
return 3
elif [ "${ACCEPT}" = "r" ]; then
echo "Rerunning test ${TEST}"
return 1
elif [ "${ACCEPT}" = "?" ]; then
cat <<EOF
valid_answer=0
while [ $valid_answer -eq 0 ]; do
if [ "${ACCEPT_ALL}" = "" ] ; then
read -p "[${TEST}] Accept new result [e/s/r/v/f/m/x/y/w/N/q/?]? " ACCEPT
else
ACCEPT=${ACCEPT_ALL}
fi
case $ACCEPT in
y)
cp "${RESULTS}/${TEST}" "${REGRESSION}/${TEST}.result"
valid_answer=1
;;
x)
echo "./dav_test --dsn '${DSN}' ${WEBHOST} ${ALTHOST} --suite '${SUITE}' --case '${TEST}' --debug"
if [ -z "$IS_CI" ]; then exit 2; fi
valid_answer=1
;;
v)
echo "Showing test $REGRESSION/${TEST}.test"
cat "$REGRESSION/${TEST}.test"
return 2
;;
s)
echo "Displaying side-by-side diff of ${TEST} results"
sdiff --text "${REGRESSION}/${TEST}.result" "${RESULTS}/${TEST}" | less -R
return 3
;;
w)
echo "Displaying colourized diff of ${TEST} results"
wdiff -n -w $'\033[30;41m' -x $'\033[0m' -y $'\033[30;42m' -z $'\033[0m' "${REGRESSION}/${TEST}.result" "${RESULTS}/${TEST}" | less -R
return 3
;;
m)
echo "Displaying side-by-side 'meld' of ${TEST} results"
$MELD "${REGRESSION}/${TEST}.result" "${RESULTS}/${TEST}"
return 3
;;
f)
echo "Showing full details of ${TEST}"
cat "${REGRESSION}/${TEST}.test"
echo "Showing full result of ${TEST}"
cat "${RESULTS}/${TEST}"
return 3
;;
e)
echo "Editing test $REGRESSION/${TEST}.test"
vi "$REGRESSION/${TEST}.test"
return 3
;;
r)
echo "Rerunning test ${TEST}"
return 1
;;
q)
exit
;;
'?')
cat <<EOF
Options:
e = edit test (vi)
f = show full details of test and result
m = side-by-side 'meld'
N = run next test (default)
q = quit
r = re-run test
s = side-by-side diff of actual and expected result
v = show test
@ -124,8 +144,13 @@ Options:
y = make new result the expected result
EOF
return 3
fi
return 3
;;
*)
echo "Invalid command, please try again."
;;
esac
done
else
report_test_success
echo "Test ${TEST} passed OK!"