runtests.sh: summarize results for all versions
authorZac Medico <zmedico@gentoo.org>
Tue, 1 Jan 2013 12:24:14 +0000 (04:24 -0800)
committerZac Medico <zmedico@gentoo.org>
Tue, 1 Jan 2013 12:24:14 +0000 (04:24 -0800)
runtests.sh

index 25389b8d861f51df0df6c49b6291b5e46e40ffb3..6dc0c4005f78234e4656adc927d05273936632e1 100755 (executable)
@@ -49,6 +49,8 @@ set -- "${unused_args[@]}"
 
 eprefix=${PORTAGE_OVERRIDE_EPREFIX}
 exit_status="0"
+found_versions=()
+status_array=()
 for version in ${PYTHON_VERSIONS}; do
        if [[ $version =~ ^([[:digit:]]+\.[[:digit:]]+)-pypy-([[:digit:]]+\.[[:digit:]]+)$ ]] ; then
                executable=${eprefix}/usr/bin/pypy-c${BASH_REMATCH[2]}
@@ -57,7 +59,11 @@ for version in ${PYTHON_VERSIONS}; do
        fi
        if [[ -x "${executable}" ]]; then
                echo -e "${GOOD}Testing with Python ${version}...${NORMAL}"
-               if ! "${executable}" -Wd pym/portage/tests/runTests "$@" ; then
+               "${executable}" -Wd pym/portage/tests/runTests "$@"
+               status=$?
+               status_array[${#status_array[@]}]=${status}
+               found_versions[${#found_versions[@]}]=${version}
+               if [ ${status} -ne 0 ] ; then
                        echo -e "${BAD}Testing with Python ${version} failed${NORMAL}"
                        exit_status="1"
                fi
@@ -65,4 +71,27 @@ for version in ${PYTHON_VERSIONS}; do
        fi
 done
 
+if [ ${#status_array[@]} -gt 0 ] ; then
+       max_len=0
+       for version in ${found_versions[@]} ; do
+               [ ${#version} -gt ${max_len} ] && max_len=${#version}
+       done
+       (( columns = max_len + 2 ))
+       printf "\nSummary:\n\n"
+       printf "| %-${columns}s | %s\n|" "Version" "Status"
+       (( total_cols = columns + 11 ))
+       eval "printf -- '-%.0s' {1..${total_cols}}"
+       printf "\n"
+       row=0
+       for version in ${found_versions[@]} ; do
+               if [ ${status_array[${row}]} -eq 0 ] ; then
+                       status="success"
+               else
+                       status="fail"
+               fi
+               printf "| %-${columns}s | %s\n" "${version}" "${status}"
+               (( row++ ))
+       done
+fi
+
 exit ${exit_status}