tox: Split tests into separate tox environments 73/46873/6
authorEmma Foley <emma.l.foley@intel.com>
Tue, 7 Nov 2017 20:29:03 +0000 (20:29 +0000)
committerEmma Foley <emma.l.foley@intel.com>
Fri, 17 Nov 2017 17:19:12 +0000 (17:19 +0000)
* Add argument parsing to run_tests.sh so tests can be selected
* Define tox environments for:
  * Coverage
  * Unit tests
  * Functional tests
    * for py27 and py3
* Add environments to default env
  * Behaviour is the same when the tests are run
* Updates the py27 environment config, and adds a py3 config.
  * Commands from testenv are moved to py27
  * py3 env uses the same commands, but runs with python3

Change-Id: I22f17c0103101f01ec268b1de9d146780ae67a6d
JIRA: YARDSTICK-837
Signed-off-by: Emma Foley <emma.l.foley@intel.com>
run_tests.sh
tox.ini

index 0979358..dda7602 100755 (executable)
@@ -9,9 +9,10 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-# Run yardstick's flake8, unit, coverage, functional test
+# Run yardstick's unit, coverage, functional test
 
 getopts ":f" FILE_OPTION
+opts=$@ # get other args
 
 # don't write .pyc files this can cause odd unittest results
 export PYTHONDONTWRITEBYTECODE=1
@@ -45,11 +46,8 @@ run_tests() {
 }
 
 run_coverage() {
-    # don't re-run coverage on both py27 py3, it takes too long
-    if [[ -z $SKIP_COVERAGE ]] ; then
-        source $COVER_DIR_NAME/cover.sh
-        run_coverage_test
-    fi
+    source $COVER_DIR_NAME/cover.sh
+    run_coverage_test
 }
 
 run_functional_test() {
@@ -68,7 +66,20 @@ run_functional_test() {
     fi
 }
 
+if [[ $opts =~ "--unit" ]]; then
+    run_tests
+fi
+
+if [[ $opts =~ "--coverage" ]]; then
+    run_coverage
+fi
+
+if [[ $opts =~ "--functional" ]]; then
+    run_functional_test
+fi
 
-run_tests
-run_coverage
-run_functional_test
+if [[ -z $opts ]]; then
+    echo "No tests to run!!"
+    echo "Usage: run_tests.sh [--unit] [--coverage] [--functional]"
+    exit 1
+fi
diff --git a/tox.ini b/tox.ini
index 882543d..ed2fd4a 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,7 @@
 [tox]
 minversion = 2.0
 skipsdist = True
-envlist = py27,py3,pep8
+envlist = py{27,3},pep8,functional{,-py3},coverage
 
 [testenv]
 usedevelop=True
@@ -9,13 +9,15 @@ passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY
 deps =
     -r{toxinidir}/requirements.txt
     -r{toxinidir}/test-requirements.txt
-commands = /bin/bash ./run_tests.sh
 whitelist_externals = /bin/bash
 
 [testenv:py27]
-# don't re-run coverage on both py27 py3, it takes too long
-setenv =
-    SKIP_COVERAGE=1
+commands =
+  /bin/bash ./run_tests.sh --unit
+
+[testenv:py3]
+basepython = python3
+commands = {[testenv:py27]commands}
 
 [testenv:pep8]
 # for gate testing, scans only the files changed in the last commit
@@ -27,6 +29,19 @@ commands =
 commands =
   /bin/bash tools/coding-checks.sh --pylint '{posargs}'
 
+[testenv:coverage]
+basepython = python3
+commands =
+  /bin/bash ./run_tests.sh --coverage
+
+[testenv:functional]
+commands =
+  /bin/bash ./run_tests.sh --functional
+
+[testenv:functional-py3]
+basepython = python3
+commands = {[testenv:functional]commands}
+
 [testenv:os-requirements]
 commands =
     python {toxinidir}/tools/os-requirements-check.py {envdir}