diff --git a/test-requirements.txt b/test-requirements.txt index d3ea4961..9b3ac4f2 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -2,8 +2,6 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. --e git://github.com/openstack/horizon.git#egg=horizon - hacking<0.11,>=0.10.0 coverage>=3.6 # Apache-2.0 ddt>=1.0.1 # MIT diff --git a/tools/install_venv.py b/tools/install_venv.py index 8550e2c6..bcb1f93d 100644 --- a/tools/install_venv.py +++ b/tools/install_venv.py @@ -32,6 +32,7 @@ VENV = os.path.join(ROOT, '.venv') WITH_VENV = os.path.join(ROOT, 'tools', 'with_venv.sh') PIP_REQUIRES = os.path.join(ROOT, 'requirements.txt') TEST_REQUIRES = os.path.join(ROOT, 'test-requirements.txt') +PIP_INSTALL_WRAPPER = os.path.join(ROOT, 'tools', 'pip_install.sh') def die(message, *args): @@ -113,11 +114,16 @@ def pip_install(*args): run_command(args, redirect_output=False) +def pip_install_with_horizon(*args): + args = [WITH_VENV, PIP_INSTALL_WRAPPER, 'unconstrained'] + list(args) + run_command(args, redirect_output=False) + + def install_dependencies(venv=VENV): print "Installing dependencies..." print "(This may take several minutes, don't panic)" - pip_install('-r', TEST_REQUIRES) - pip_install('-r', PIP_REQUIRES) + pip_install_with_horizon('-r', TEST_REQUIRES) + pip_install_with_horizon('-r', PIP_REQUIRES) # Tell the virtual env how to "import dashboard" py = 'python%d.%d' % (sys.version_info[0], sys.version_info[1]) diff --git a/tools/pip_install.sh b/tools/pip_install.sh new file mode 100755 index 00000000..b1003edf --- /dev/null +++ b/tools/pip_install.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +# The original script is borrowed from neutron-* repos. + +# Many of horizon's repos suffer from the problem of depending on horizon, +# but it not existing on pypi. + +# 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 horizon 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 +BRANCH_NAME=master +horizon_installed=$(echo "import horizon" | python 2>/dev/null ; echo $?) + +set -e + +install_cmd="pip install" +if [ "$1" = "constrained" ]; then + install_cmd="$install_cmd $2" + shift +fi +shift + +if [ $horizon_installed -eq 0 ]; then + echo "ALREADY INSTALLED" > /tmp/tox_install.txt + echo "Horizon already installed; using existing package" +elif [ -x "$ZUUL_CLONER" ]; then + export ZUUL_BRANCH=${ZUUL_BRANCH-$BRANCH} + echo "ZUUL CLONER" > /tmp/tox_install.txt + cwd=$(/bin/pwd) + cd /tmp + $ZUUL_CLONER --cache-dir \ + /opt/git \ + --branch $BRANCH_NAME \ + git://git.openstack.org \ + openstack/horizon + cd openstack/horizon + $install_cmd -e . + cd "$cwd" +else + echo "PIP HARDCODE" > /tmp/tox_install.txt + if [ -z "$HORIZON_PIP_LOCATION" ]; then + HORIZON_PIP_LOCATION="git+https://git.openstack.org/openstack/horizon@$BRANCH_NAME#egg=horizon" + fi + $install_cmd -U -e ${HORIZON_PIP_LOCATION} +fi + +$install_cmd -U $* +exit $? diff --git a/tox.ini b/tox.ini index 138f2665..a4c4137c 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,7 @@ skipsdist = True [testenv] usedevelop = True -install_command = pip install -U {opts} {packages} +install_command = {toxinidir}/tools/pip_install.sh unconstrained {opts} {packages} setenv = VIRTUAL_ENV={envdir} deps = -r{toxinidir}/requirements.txt