Move hardcoded atoms of cvs, git and rsync to portage.const module and fix category...
[portage.git] / runtests.sh
index 56aa2cc1e312cbd960b86de95028d87e2512f5b0..010a7bf6fab573aafcbae626a022cd0becd054e3 100755 (executable)
@@ -2,7 +2,7 @@
 # Copyright 2010-2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
-PYTHON_VERSIONS="2.6 2.7 2.7-pypy-1.8 3.1 3.2 3.3"
+PYTHON_VERSIONS="2.6 2.7 2.7-pypy-1.8 2.7-pypy-1.9 2.7-pypy-2.0 3.1 3.2 3.3 3.4"
 
 # has to be run from portage root dir
 cd "${0%/*}" || exit 1
@@ -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,28 @@ 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 ))
+       (( columns >= 7 )) || columns=7
+       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}