| #!/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.$$ |