diff --git a/bindep.txt b/bindep.txt index efc54415..e3ea9c18 100644 --- a/bindep.txt +++ b/bindep.txt @@ -1,5 +1,6 @@ # This is a cross-platform list tracking distribution packages needed by tests; # see http://docs.openstack.org/infra/bindep/ for additional information. +curl pypy [test] pypy-dev [test] diff --git a/tools/tox_install.sh b/tools/tox_install.sh new file mode 100755 index 00000000..15aa9dec --- /dev/null +++ b/tools/tox_install.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +# Client constraint file contains this client version pin that is in conflict +# with installing the client from source. We should remove the version pin in +# the constraints file before applying it for from-source installation. + +set -e + +if [[ -z "$CONSTRAINTS_FILE" ]]; then + echo 'WARNING: expected $CONSTRAINTS_FILE to be set' >&2 + PIP_FLAGS=(-U) +else + # NOTE(tonyb): Place this in the tox enviroment's log dir so it will get + # published to logs.openstack.org for easy debugging. + localfile="$VIRTUAL_ENV/log/upper-constraints.txt" + + if [[ "$CONSTRAINTS_FILE" != http* ]]; then + CONSTRAINTS_FILE="file://$CONSTRAINTS_FILE" + fi + curl "$CONSTRAINTS_FILE" --insecure --progress-bar --output "$localfile" + + pip install -c"$localfile" openstack-requirements + + # This is the main purpose of the script: Allow local installation of + # the current repo. It is listed in constraints file and thus any + # install will be constrained and we need to unconstrain it. + edit-constraints "$localfile" -- "$CLIENT_NAME" + PIP_FLAGS=(-c"$localfile" -U) +fi + +pip install "${PIP_FLAGS[@]}" "$@" diff --git a/tox.ini b/tox.ini index e2f1265f..df01bf8a 100644 --- a/tox.ini +++ b/tox.ini @@ -1,14 +1,17 @@ [tox] envlist = py27,py34,py35,pypy,pep8 -minversion = 1.6 +minversion = 2.0 skipsdist = True [testenv] usedevelop = True -install_command = pip install -U {opts} {packages} +install_command = {toxinidir}/tools/tox_install.sh {opts} {packages} setenv = LANG=en_US.utf8 VIRTUAL_ENV={envdir} + BRANCH_NAME=master + CLIENT_NAME=python-swiftclient + CONSTRAINTS_FILE={env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt @@ -28,11 +31,13 @@ commands = commands = {posargs} [testenv:cover] -commands = python setup.py testr --coverage +commands = python setup.py testr --coverage coverage report [testenv:func] -setenv = OS_TEST_PATH=tests.functional +setenv = + {[testenv]setenv} + OS_TEST_PATH=tests.functional whitelist_externals = coverage rm