diff --git a/tools/tox_install.sh b/tools/tox_install.sh new file mode 100755 index 00000000000..c89f588951c --- /dev/null +++ b/tools/tox_install.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Many of neutron's repos suffer from the problem of depending on neutron, +# but it not existing on pypi. -- Well, that's the usual issue, but in +# neutron's case, we want to import tempest directly for the api tests. + +# This wrapper for tox's package installer will use the existing package +# if it exists, else use zuul-cloner if that program exists, else grab it +# from neutron master via a hard-coded URL. That last case should only +# happen with devs running unit tests locally. + +# From the tox.ini config page: +# install_command=ARGV +# default: +# pip install {opts} {packages} + +ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner +tempest_installed=$(python -c "import tempest" 2>/dev/null ; echo $?) + +set -e + +if [ $tempest_installed -eq 0 ]; then + echo "Tempest already installed; using existing package" +elif [ -x "$ZUUL_CLONER" ]; then + export ZUUL_BRANCH=${ZUUL_BRANCH-$BRANCH} + pushd /tmp + $ZUUL_CLONER --cache-dir \ + /opt/git \ + git://git.openstack.org \ + openstack/tempest + pip install -e openstack/tempest + popd +else + pip install -U -egit+https://git.openstack.org/openstack/tempest#egg=tempest +fi + +pip install -U $* diff --git a/tox.ini b/tox.ini index d48dde5e601..fa18c9eb5bb 100644 --- a/tox.ini +++ b/tox.ini @@ -26,17 +26,15 @@ setenv = {[testenv]setenv} OS_TEST_PATH=./neutron/tests/api TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:/opt/stack/tempest/etc} OS_TEST_API_WITH_REST=1 -deps = - {[testenv]deps} - git+https://git.openstack.org/openstack/tempest#egg=tempest +install_command = + constraints: {[testenv:common-constraints]install_command} + {toxinidir}/tools/tox_install.sh {opts} {packages} [testenv:api-constraints] basepython = {[testenv:api]basepython} -install_command = {[testenv:common-constraints]install_command} passenv = {[testenv:api]passenv} setenv = {[testenv:api]setenv} -deps = - {[testenv:api]deps} +install_command = {toxinidir}/tools/tox_install.sh -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} [testenv:common] # Fake job to define environment variables shared between dsvm/non-dsvm jobs