Fix tests to redirect stdout

Add default TestCase that uses fixtures to save stdout and stderr (based
off nova/test.py).  save stdout and stderr by default but overrideable in
order to run pdb.

Also use fixtures.Timeout

Change-Id: Iece6a96e5e54e252df943934ea465db78e1c5421
This commit is contained in:
Joe Gordon 2013-05-31 16:06:37 -07:00
parent 80664dd471
commit a034aa1f95
3 changed files with 37 additions and 3 deletions

View File

@ -1,4 +1,8 @@
[DEFAULT] [DEFAULT]
test_command=OS_STDOUT_CAPTURE=1 OS_STDERR_CAPTURE=1 OS_TEST_TIMEOUT=60 ${PYTHON:-python} -m subunit.run discover -t ./ . $LISTOPT $IDOPTION test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \
${PYTHON:-python} -m subunit.run discover -t ./ . $LISTOPT $IDOPTION
test_id_option=--load-list $IDFILE test_id_option=--load-list $IDFILE
test_list_option=--list test_list_option=--list

View File

@ -12,3 +12,33 @@
# implied. # implied.
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
import os
import fixtures
import testtools
class TestCase(testtools.TestCase):
"""Test case base class for all unit tests."""
def setUp(self):
"""Run before each test method to initialize test environment."""
super(TestCase, self).setUp()
test_timeout = os.environ.get('OS_TEST_TIMEOUT', 0)
try:
test_timeout = int(test_timeout)
except ValueError:
# If timeout value is invalid do not set a timeout.
test_timeout = 0
if test_timeout > 0:
self.useFixture(fixtures.Timeout(test_timeout, gentle=True))
if (os.environ.get('OS_STDOUT_CAPTURE') == 'True' or
os.environ.get('OS_STDOUT_CAPTURE') == '1'):
stdout = self.useFixture(fixtures.StringStream('stdout')).stream
self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout))
if (os.environ.get('OS_STDERR_CAPTURE') == 'True' or
os.environ.get('OS_STDERR_CAPTURE') == '1'):
stderr = self.useFixture(fixtures.StringStream('stderr')).stream
self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr))

View File

@ -18,20 +18,20 @@ import re
from flake8 import engine from flake8 import engine
import pep8 import pep8
import testtools
from testtools import content from testtools import content
from testtools import matchers from testtools import matchers
import testscenarios import testscenarios
import hacking import hacking
import hacking.tests
SELFTEST_REGEX = re.compile(r'\b(Okay|[HEW]\d{3}):\s(.*)') SELFTEST_REGEX = re.compile(r'\b(Okay|[HEW]\d{3}):\s(.*)')
# Each scenario is (name, dict(lines=.., options=..., code=...)) # Each scenario is (name, dict(lines=.., options=..., code=...))
file_cases = [] file_cases = []
class HackingTestCase(testtools.TestCase): class HackingTestCase(hacking.tests.TestCase):
scenarios = file_cases scenarios = file_cases