diff options
Diffstat (limited to 'tools/teamcity-runtests.sh')
-rwxr-xr-x | tools/teamcity-runtests.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tools/teamcity-runtests.sh b/tools/teamcity-runtests.sh new file mode 100755 index 0000000..bcb28f7 --- /dev/null +++ b/tools/teamcity-runtests.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# +# This script assumes that the project 'ptyprocess' is +# available in the parent of the project's folder. +set -e +set -o pipefail + +if [ -z $1 ]; then + echo "$0 (2.6|2.7|3.3|3.4)" + exit 1 +fi + +export PYTHONIOENCODING=UTF8 +export LANG=en_US.UTF-8 + +pyversion=$1 +shift +here=$(cd `dirname $0`; pwd) +osrel=$(uname -s) +venv=teamcity-pexpect +venv_wrapper=$(which virtualenvwrapper.sh) + +if [ -z $venv_wrapper ]; then + echo "virtualenvwrapper.sh not found in PATH." >&2 + exit 1 +fi + +. ${venv_wrapper} +rmvirtualenv ${venv} || true +mkvirtualenv -p `which python${pyversion}` ${venv} || true +workon ${venv} + +# install ptyprocess +cd $here/../../ptyprocess +pip uninstall --yes ptyprocess || true +python setup.py install + +# install all test requirements +pip install --upgrade pytest-cov coverage coveralls pytest-capturelog + +# run tests +cd $here/.. +ret=0 +py.test \ + --cov pexpect \ + --cov-config .coveragerc \ + --junit-xml=results.${osrel}.py${pyversion}.xml \ + --verbose \ + --verbose \ + "$@" || ret=$? + +if [ $ret -ne 0 ]; then + # we always exit 0, preferring instead the jUnit XML + # results to be the dominate cause of a failed build. + echo "py.test returned exit code ${ret}." >&2 + echo "the build should detect and report these failing tests." >&2 +fi + +# combine all coverage to single file, report for this build, +# then move into ./build-output/ as a unique artifact to allow +# the final "Full build" step to combine and report to coveralls.io +`dirname $0`/teamcity-coverage-report.sh +mkdir -p build-output +mv .coverage build-output/.coverage.${osrel}.py{$pyversion}.$RANDOM.$$ |