summaryrefslogtreecommitdiff
blob: 433112a09a910186ca51afe60b2cfb333837d369 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash
# 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 2.7-pypy-1.9 3.1 3.2 3.3 3.4"

# has to be run from portage root dir
cd "${0%/*}" || exit 1

case "${NOCOLOR:-false}" in
	yes|true)
		GOOD=
		BAD=
		NORMAL=
		;;
	no|false)
		GOOD=$'\e[1;32m'
		BAD=$'\e[1;31m'
		NORMAL=$'\e[0m'
		;;
esac

interrupted() {
	echo "interrupted." >&2
	exit 1
}

trap interrupted SIGINT

unused_args=()

while [ $# -gt 0 ] ; do
	case "$1" in
		--python-versions=*)
			PYTHON_VERSIONS=${1#--python-versions=}
			;;
		--python-versions)
			shift
			PYTHON_VERSIONS=$1
			;;
		*)
			unused_args[${#unused_args[@]}]=$1
			;;
	esac
	shift
done

set -- "${unused_args[@]}"

eprefix=${PORTAGE_OVERRIDE_EPREFIX}
exit_status="0"
for version in ${PYTHON_VERSIONS}; do
	if [[ $version =~ ^([[:digit:]]+\.[[:digit:]]+)-pypy-([[:digit:]]+\.[[:digit:]]+)$ ]] ; then
		executable=${eprefix}/usr/bin/pypy-c${BASH_REMATCH[2]}
	else
		executable=${eprefix}/usr/bin/python${version}
	fi
	if [[ -x "${executable}" ]]; then
		echo -e "${GOOD}Testing with Python ${version}...${NORMAL}"
		if ! "${executable}" -Wd pym/portage/tests/runTests "$@" ; then
			echo -e "${BAD}Testing with Python ${version} failed${NORMAL}"
			exit_status="1"
		fi
		echo
	fi
done

exit ${exit_status}