From cf18edfa63d3de30657e3daa8f2c42c88e8d8810 Mon Sep 17 00:00:00 2001 From: Igor Duarte Cardoso Date: Tue, 15 Aug 2017 14:57:40 +0000 Subject: [PATCH] Add tox wrapper to fetch neutron This is a clone of networking-sfc's tools/tox_install.sh that allows the optimal version of neutron to be installed when running tox. Related commit: 10cecb9837d5f8563b5a2f0de6d1081cbde05bdb Change-Id: I28230acb499c8aa04033fa552da660ec80c4fd03 --- tools/tox_install.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++ tox.ini | 3 ++- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100755 tools/tox_install.sh diff --git a/tools/tox_install.sh b/tools/tox_install.sh new file mode 100755 index 0000000..2f40c28 --- /dev/null +++ b/tools/tox_install.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +# Many of neutron's repos suffer from the problem of depending on neutron, +# 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 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} + +set -x + +ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner +neutron_installed=$(echo "import neutron" | python 2>/dev/null ; echo $?) +NEUTRON_DIR=$HOME/neutron +BRANCH_NAME=master + +set -e + +install_cmd="pip install -c$1" +shift + +if [ -d "$NEUTRON_DIR" ]; then + echo "FOUND Neutron code at $NEUTRON_DIR - using" + $install_cmd -U -e $NEUTRON_DIR +elif [ $neutron_installed -eq 0 ]; then + location=$(python -c "import neutron; print(neutron.__file__)") + echo "ALREADY INSTALLED at $location" +elif [ -x "$ZUUL_CLONER" ]; then + echo "USING ZUUL CLONER to obtain Neutron code" + cwd=$(/bin/pwd) + cd /tmp + $ZUUL_CLONER --cache-dir \ + /opt/git \ + --branch $BRANCH_NAME \ + git://git.openstack.org \ + openstack/neutron + cd openstack/neutron + $install_cmd -e . + cd "$cwd" +else + echo "LOCAL - Obtaining Neutron code from git.openstack.org" + $install_cmd -U -egit+https://git.openstack.org/openstack/neutron@$BRANCH_NAME#egg=neutron +fi + +$install_cmd -U $* +exit $? diff --git a/tox.ini b/tox.ini index 0b136d3..c02c197 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,8 @@ skipsdist = True [testenv] usedevelop = True -install_command = pip install -U {opts} {packages} +#install_command = pip install -U {opts} {packages} +install_command = {toxinidir}/tools/tox_install.sh {env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} setenv = VIRTUAL_ENV={envdir} PYTHONWARNINGS=default::DeprecationWarning