diff options
Diffstat (limited to 'run-tests.sh')
-rwxr-xr-x | run-tests.sh | 104 |
1 files changed, 48 insertions, 56 deletions
diff --git a/run-tests.sh b/run-tests.sh index d3c128a952c..454d558b396 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -152,32 +152,6 @@ function match() return $match } -function run_tests() -{ - RES=0 - for t in $(find ${regression_testsdir}/tests | LC_COLLATE=C sort) ; do - if match $t "$tests" ; then - if [ -d $t ] ; then - echo "Running tests in directory $t" - prove -rf --timer $t - elif [ -f $t ] ; then - echo "Running tests in file $t" - prove -f --timer $t - fi - TMP_RES=$? - if [ ${TMP_RES} -ne 0 ] ; then - RES=${TMP_RES} - FAILED="$FAILED $t" - fi - fi - done - if [ ${RES} -ne 0 ] ; then - FAILED=$( echo ${FAILED} | tr ' ' '\n' | sort -u ) - echo "Failed tests ${FAILED}" - fi - return ${RES} -} - # If you're submitting a fix related to one of these tests and want its result # to be considered, you'll need to remove it from the list as part of your # patch. @@ -210,40 +184,58 @@ function is_bad_test () return 1 # bash: non-zero means false/failure } -function run_all () + +function run_tests() { - find ${regression_testsdir}/tests -name '*.t' \ - | LC_COLLATE=C sort \ - | while read t; do + RES=0 + FAILED='' + GENERATED_CORE='' + + for t in $(find ${regression_testsdir}/tests -name '*.t' \ + | LC_COLLATE=C sort) ; do old_cores=$(ls /core.* 2> /dev/null | wc -l) - retval=0 - prove -mf --timer $t - TMP_RES=$? - if [ ${TMP_RES} -ne 0 ] ; then - echo "$t: bad status $TMP_RES" - retval=$((retval+1)) - fi - new_cores=$(ls /core.* 2> /dev/null | wc -l) - if [ x"$new_cores" != x"$old_cores" ]; then - core_diff=$((new_cores-old_cores)) - echo "$t: $core_diff new core files" - retval=$((retval+2)) - fi - if [ $retval -ne 0 ]; then + if match $t "$@" ; then if is_bad_test $t; then - echo "Ignoring failure from known-bad test $t" - retval=0 - else - echo - echo "Running failed test $t in debug mode" - echo "Just for debug data, does not change test result" - echo - bash -x $t - echo - return $retval - fi + echo "Skipping bad test file $t" + continue + fi + echo "Running tests in file $t" + prove -mf --timer $t + TMP_RES=$? + if [ ${TMP_RES} -ne 0 ] && [ "x${retry}" = "xyes" ] ; then + echo "$t: bad status $TMP_RES" + echo "" + echo " *********************************" + echo " * REGRESSION FAILED *" + echo " * Retrying failed tests in case *" + echo " * we got some spurous failures *" + echo " *********************************" + echo "" + prove -mf --timer $t + TMP_RES=$? + fi + if [ ${TMP_RES} -ne 0 ] ; then + RES=${TMP_RES} + FAILED="${FAILED}${t} " + fi + new_cores=$(ls /core.* 2> /dev/null | wc -l) + if [ x"$new_cores" != x"$old_cores" ]; then + core_diff=$((new_cores-old_cores)) + echo "$t: $core_diff new core files" + RES=1 + GENERATED_CORE="${GENERATED_CORE}${t} " + fi fi done + if [ ${RES} -ne 0 ] ; then + FAILED=$( echo ${FAILED} | tr ' ' '\n' | sort -u ) + FAILED_COUNT=$( echo -n "${FAILED}" | grep -c '^' ) + echo -e "$FAILED_COUNT test(s) failed \n${FAILED}" + GENERATED_CORE=$( echo ${GENERATED_CORE} | tr ' ' '\n' | sort -u ) + GENERATED_CORE_COUNT=$( echo -n "${GENERATED_CORE}" | grep -c '^' ) + echo -e "$GENERATED_CORE_COUNT test(s) generated core \n${GENERATED_CORE}" + fi + return ${RES} } function main() @@ -251,7 +243,7 @@ function main() if [ "x$tests" = "x" ]; then echo "Running all the regression test cases (new way)" #prove -rf --timer ${regression_testsdir}/tests; - run_all + run_tests else run_tests "$tests" fi |