From efbb3887e0a976e9cea2ba59e359583a12f64e31 Mon Sep 17 00:00:00 2001
From: Mike Bayer <mike_mp@zzzcomputing.com>
Date: Tue, 6 Jan 2015 15:49:19 -0500
Subject: [PATCH] Add pretty_tox wrapper script

This ports Nova/Neutron's'(and others) "pretty tox" script into tools/
and establishes it within tox.ini.   This causes a vanilla test run
to output the full package names of all tests, the index of the
subprocess it's being run within, as well as the total run time
and status of each test.  It also captures stdout/stderr and reports on that
as well; revealing that oslo.db's tests have a lot of deprecation
warnings in fact.

The display of this runner shows a lot more information than the
default testr/subunit thing which is somewhat useless, and for
those who are actually watching the test output, this is what
we'd most like to see.

Pretty Tox.  Pretty please, can we have?

Change-Id: I50d1c6e998425964dd9a5497c2bc1e9145be3120
---
 test-requirements-py2.txt |  1 +
 test-requirements-py3.txt |  1 +
 tools/pretty_tox.sh       | 11 +++++++++++
 tox.ini                   |  3 ++-
 4 files changed, 15 insertions(+), 1 deletion(-)
 create mode 100755 tools/pretty_tox.sh

diff --git a/test-requirements-py2.txt b/test-requirements-py2.txt
index ac5c18a5..2cb1c751 100644
--- a/test-requirements-py2.txt
+++ b/test-requirements-py2.txt
@@ -17,3 +17,4 @@ oslotest>=1.2.0  # Apache-2.0
 testrepository>=0.0.18
 testscenarios>=0.4
 testtools>=0.9.36,!=1.2.0
+tempest-lib
diff --git a/test-requirements-py3.txt b/test-requirements-py3.txt
index 58b9a3d1..d2487857 100644
--- a/test-requirements-py3.txt
+++ b/test-requirements-py3.txt
@@ -16,6 +16,7 @@ oslotest>=1.2.0  # Apache-2.0
 testrepository>=0.0.18
 testscenarios>=0.4
 testtools>=0.9.36,!=1.2.0
+tempest-lib
 
 # TODO(harlowja): add in pymysql when able to...
 # https://review.openstack.org/#/c/123737
diff --git a/tools/pretty_tox.sh b/tools/pretty_tox.sh
new file mode 100755
index 00000000..b9fd556c
--- /dev/null
+++ b/tools/pretty_tox.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+# return nonzero exit status of rightmost command, so that we
+# get nonzero exit on test failure without halting subunit-trace
+set -o pipefail
+
+
+TESTRARGS=$1
+
+python setup.py testr --slowest --testr-args="--subunit $TESTRARGS" | subunit-trace -f
+
diff --git a/tox.ini b/tox.ini
index 79111163..3d206408 100644
--- a/tox.ini
+++ b/tox.ini
@@ -9,12 +9,13 @@ envlist = py26,py27,py33,py34,pep8
 # NOTE(dhellmann): We cannot set usedevelop=True
 # for oslo libraries because of the namespace package.
 #usedevelop = True
+whitelist_externals = bash
 install_command = pip install -U {opts} {packages}
 setenv =
    VIRTUAL_ENV={envdir}
 deps = -r{toxinidir}/requirements.txt
        -r{toxinidir}/test-requirements-py2.txt
-commands = python setup.py testr --slowest --testr-args='{posargs}'
+commands = bash tools/pretty_tox.sh '{posargs}'
 
 [testenv:sqla_09]
 commands = pip install SQLAlchemy>=0.9.0,!=0.9.5,<1.0.0