From 5542de51bc2205ee297fb94539ff5ab4d0b73109 Mon Sep 17 00:00:00 2001
From: Sean McGinnis <sean.mcginnis@gmail.com>
Date: Wed, 13 Jun 2018 16:51:32 -0500
Subject: [PATCH] Be explicit about tox python version

We want to default all jobs to use python 3 except for
the ones that use explicit versions. Unfortunately, the
current tox behavior for setting basepython to python3
is not intuitive.

If the system default is python 3.5, then when basepython
is set to python3, both the py35 and py36 targets will
end up running with python 3.5.

To get around this we need to not set a default base
version and explicitly set each testenv to python3 that
we want to run using 3 instead of 2 but do not really
care which minor version is used.

Change-Id: I3971eeafbd1e732a584b0c52d2eb6c2175b709aa
---
 tox.ini | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/tox.ini b/tox.ini
index fce211f4391..f04e4ae3e89 100644
--- a/tox.ini
+++ b/tox.ini
@@ -4,7 +4,6 @@ skipsdist = True
 envlist = py35,py27,compliance,pep8
 
 [testenv]
-basepython = python3
 setenv = VIRTUAL_ENV={envdir}
          PYTHONWARNINGS=default::DeprecationWarning
          OS_STDOUT_CAPTURE=1
@@ -31,6 +30,7 @@ whitelist_externals =
 passenv = *_proxy *_PROXY
 
 [testenv:api-ref]
+basepython = python3
 whitelist_externals = rm
 deps =
     -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
@@ -40,6 +40,7 @@ commands =
   sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html/
 
 [testenv:releasenotes]
+basepython = python3
 deps =
   -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
   -r{toxinidir}/requirements.txt
@@ -61,10 +62,12 @@ setenv =
   {[testenv:functional]setenv}
 
 [testenv:compliance]
+basepython = python3
 setenv =
   OS_TEST_PATH = ./cinder/tests/compliance
 
 [testenv:pep8]
+basepython = python3
 commands =
   python setup.py check --restructuredtext --strict
   flake8 {posargs} .
@@ -72,12 +75,14 @@ commands =
   {toxinidir}/tools/check_exec.py {toxinidir}/cinder {toxinidir}/doc/source/ {toxinidir}/releasenotes/notes
 
 [testenv:fast8]
+basepython = python3
 # Use same environment directory as pep8 env to save space and install time
 envdir = {toxworkdir}/pep8
 commands =
   {toxinidir}/tools/fast8.sh
 
 [testenv:pylint]
+basepython = python3
 deps = -r{toxinidir}/requirements.txt
        pylint==1.9.1
 commands = bash tools/lintstack.sh
@@ -85,6 +90,7 @@ commands = bash tools/lintstack.sh
 [testenv:cover]
 # Also do not run test_coverage_ext tests while gathering coverage as those
 # tests conflict with coverage.
+basepython = python3
 setenv =
     {[testenv]setenv}
     PYTHON=coverage run --source cinder --parallel-mode
@@ -95,23 +101,28 @@ commands =
     coverage xml -o cover/coverage.xml
 
 [testenv:genconfig]
+basepython = python3
 sitepackages = False
 envdir = {toxworkdir}/pep8
 commands = oslo-config-generator --config-file=tools/config/cinder-config-generator.conf
 
 
 [testenv:genpolicy]
+basepython = python3
 commands = oslopolicy-sample-generator --config-file=tools/config/cinder-policy-generator.conf
 
 [testenv:genopts]
+basepython = python3
 sitepackages = False
 envdir = {toxworkdir}/pep8
 commands = python tools/config/generate_cinder_opts.py
 
 [testenv:venv]
+basepython = python3
 commands = {posargs}
 
 [testenv:docs]
+basepython = python3
 deps =
   -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt}
   -r{toxinidir}/requirements.txt
@@ -125,15 +136,18 @@ commands =
 whitelist_externals = rm
 
 [testenv:gendriverlist]
+basepython = python3
 sitepackages = False
 envdir = {toxworkdir}/venv
 commands = python {toxinidir}/tools/generate_driver_list.py
 
 [testenv:bandit]
+basepython = python3
 deps = -r{toxinidir}/test-requirements.txt
 commands = bandit -r cinder -n5 -x tests -ll
 
 [testenv:bandit-baseline]
+basepython = python3
 envdir = {toxworkdir}/bandit
 commands = bandit-baseline -r cinder -n5 -x tests -ii -ll
 
@@ -144,6 +158,7 @@ commands = bandit-baseline -r cinder -n5 -x tests -ii -ll
 # separately, outside of the requirements files, and develop mode disabled
 # explicitly to avoid unnecessarily installing the checked-out repo too (this
 # further relies on "tox.skipsdist = True" above).
+basepython = python3
 deps = bindep
 commands = bindep test
 usedevelop = False
@@ -164,6 +179,7 @@ local-check-factory = cinder.hacking.checks.factory
 import_exceptions = cinder.i18n
 
 [testenv:lower-constraints]
+basepython = python3
 deps =
   -c{toxinidir}/lower-constraints.txt
   -r{toxinidir}/test-requirements.txt