Use upper-constraints in tox test environments
This will force pip install to use the upper-constraints.txt specified version of pip modules. When you don't do this, you are out on the bleeding edge and become unstable everytime some python library in the wide world changes in a way that you don't expect. The releasenotes job has no constraints file, so override the install command there. Change-Id: I531606ce2ed981bddc618dac046ab081de2805eb Partial-bug: #1598906
This commit is contained in:
parent
369056a1f6
commit
6eb0a7aab3
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Client constraint file contains this client version pin that is in conflict
|
||||
# with installing the client from source. We should replace the version pin in
|
||||
# the constraints file before applying it for from-source installation.
|
||||
|
||||
ZUUL_CLONER=/usr/zuul-env/bin/zuul-cloner
|
||||
BRANCH_NAME=master
|
||||
CLIENT_NAME=python-muranoclient
|
||||
requirements_installed=$(echo "import openstack_requirements" | python 2>/dev/null ; echo $?)
|
||||
|
||||
set -e
|
||||
|
||||
CONSTRAINTS_FILE=$1
|
||||
shift
|
||||
|
||||
install_cmd="pip install"
|
||||
if [ $CONSTRAINTS_FILE != "unconstrained" ]; then
|
||||
|
||||
mydir=$(mktemp -dt "$CLIENT_NAME-tox_install-XXXXXXX")
|
||||
localfile=$mydir/upper-constraints.txt
|
||||
if [[ $CONSTRAINTS_FILE != http* ]]; then
|
||||
CONSTRAINTS_FILE=file://$CONSTRAINTS_FILE
|
||||
fi
|
||||
curl $CONSTRAINTS_FILE -k -o $localfile
|
||||
install_cmd="$install_cmd -c$localfile"
|
||||
|
||||
if [ $requirements_installed -eq 0 ]; then
|
||||
echo "ALREADY INSTALLED" > /tmp/tox_install.txt
|
||||
echo "Requirements already installed; using existing package"
|
||||
elif [ -x "$ZUUL_CLONER" ]; then
|
||||
export ZUUL_BRANCH=${ZUUL_BRANCH-$BRANCH}
|
||||
echo "ZUUL CLONER" > /tmp/tox_install.txt
|
||||
pushd $mydir
|
||||
$ZUUL_CLONER --cache-dir \
|
||||
/opt/git \
|
||||
--branch $BRANCH_NAME \
|
||||
git://git.openstack.org \
|
||||
openstack/requirements
|
||||
cd openstack/requirements
|
||||
$install_cmd -e .
|
||||
popd
|
||||
else
|
||||
echo "PIP HARDCODE" > /tmp/tox_install.txt
|
||||
if [ -z "$REQUIREMENTS_PIP_LOCATION" ]; then
|
||||
REQUIREMENTS_PIP_LOCATION="git+https://git.openstack.org/openstack/requirements@$BRANCH_NAME#egg=requirements"
|
||||
fi
|
||||
$install_cmd -U -e ${REQUIREMENTS_PIP_LOCATION}
|
||||
fi
|
||||
|
||||
edit-constraints $localfile -- $CLIENT_NAME "-e file://$PWD#egg=$CLIENT_NAME"
|
||||
fi
|
||||
|
||||
$install_cmd -U $*
|
||||
exit $?
|
19
tox.ini
19
tox.ini
|
@ -6,7 +6,8 @@ skipsdist = True
|
|||
[testenv]
|
||||
usedevelop = True
|
||||
whitelist_externals = bash
|
||||
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}
|
||||
|
||||
deps =
|
||||
|
@ -18,6 +19,10 @@ commands = bash tools/pretty_tox.sh '{posargs}'
|
|||
commands = flake8 {posargs}
|
||||
|
||||
[testenv:venv]
|
||||
# NOTE(from nova tox.ini by jaegerandi): This target does not use constraints
|
||||
# because upstream infra does not yet support it. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command = pip install -U --force-reinstall {opts} {packages}
|
||||
commands = {posargs}
|
||||
|
||||
[testenv:functional]
|
||||
|
@ -26,9 +31,17 @@ setenv =
|
|||
passenv = OS_*
|
||||
|
||||
[testenv:uitests]
|
||||
# NOTE(from nova tox.ini by jaegerandi): This target does not use constraints
|
||||
# because upstream infra does not yet support it. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command = pip install -U --force-reinstall {opts} {packages}
|
||||
commands = python setup.py testr --slowest --testr-args="--concurrency 1 {posargs}"
|
||||
|
||||
[testenv:cover]
|
||||
# NOTE(from nova tox.ini by jaegerandi): This target does not use constraints
|
||||
# because upstream infra does not yet support it. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command = pip install -U --force-reinstall {opts} {packages}
|
||||
commands = python setup.py testr --coverage --testr-args='--concurrency 1 {posargs}'
|
||||
|
||||
[testenv:pyflakes]
|
||||
|
@ -36,6 +49,10 @@ deps = flake8
|
|||
commands = flake8
|
||||
|
||||
[testenv:releasenotes]
|
||||
# NOTE(from nova tox.ini by jaegerandi): This target does not use constraints
|
||||
# because upstream infra does not yet support it. Once that's fixed, we can
|
||||
# drop the install_command.
|
||||
install_command = pip install -U --force-reinstall {opts} {packages}
|
||||
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
||||
|
||||
[flake8]
|
||||
|
|
Loading…
Reference in New Issue