testtools-dev team mailing list archive
-
testtools-dev team
-
Mailing list archive
-
Message #00878
[Merge] lp:~jml/testtools/clarify-fixtures-dep into lp:testtools
Jonathan Lange has proposed merging lp:~jml/testtools/clarify-fixtures-dep into lp:testtools.
Requested reviews:
testtools committers (testtools-committers)
Related bugs:
Bug #817431 in testtools: "testtools trunk now depends on python-fixtures for running tests"
https://bugs.launchpad.net/testtools/+bug/817431
For more details, see:
https://code.launchpad.net/~jml/testtools/clarify-fixtures-dep/+merge/69843
StackHidingFixture is nice, but we cannot depend on it for running the test suite, since 'fixtures' is an optional dependency, and the test suite should be runnable without it.
This branch deletes StackHidingFixture and replaces it with a more old-fashioned wrapper function + a wrapper suite. Since we can't use 'with' either, it's not as bad as it might be.
--
https://code.launchpad.net/~jml/testtools/clarify-fixtures-dep/+merge/69843
Your team testtools developers is subscribed to branch lp:testtools.
=== modified file 'testtools/tests/__init__.py'
--- testtools/tests/__init__.py 2011-07-20 12:24:35 +0000
+++ testtools/tests/__init__.py 2011-07-29 17:52:24 +0000
@@ -2,8 +2,20 @@
# See README for copyright and licensing details.
-from testtools.tests.helpers import StackHidingFixture
-from testtools.testsuite import FixtureSuite
+from unittest import TestSuite
+
+from testtools.tests.helpers import hide_testtools_stack
+
+
+class FullStackTestSuite(TestSuite):
+ """A version of TestSuite that guarantees full stack is shown."""
+
+ def run(self, result):
+ was_hidden = hide_testtools_stack(False)
+ try:
+ return super(TestSuite, self).run(result)
+ finally:
+ hide_testtools_stack(was_hidden)
def test_suite():
@@ -42,4 +54,4 @@
test_testsuite,
]
suites = map(lambda x: x.test_suite(), modules)
- return FixtureSuite(StackHidingFixture(False), suites)
+ return FullStackTestSuite(suites)
=== modified file 'testtools/tests/helpers.py'
--- testtools/tests/helpers.py 2011-07-20 21:00:44 +0000
+++ testtools/tests/helpers.py 2011-07-29 17:52:24 +0000
@@ -8,8 +8,6 @@
import sys
-from fixtures import FunctionFixture
-
from testtools import TestResult
from testtools.helpers import (
safe_hasattr,
@@ -98,5 +96,9 @@
return result
-StackHidingFixture = lambda x: FunctionFixture(
- lambda: hide_testtools_stack(x), hide_testtools_stack)
+def run_with_stack_hidden(should_hide, f, *args, **kwargs):
+ old_should_hide = hide_testtools_stack(should_hide)
+ try:
+ return f(*args, **kwargs)
+ finally:
+ hide_testtools_stack(old_should_hide)
=== modified file 'testtools/tests/test_helpers.py'
--- testtools/tests/test_helpers.py 2011-07-26 22:08:18 +0000
+++ testtools/tests/test_helpers.py 2011-07-29 17:52:24 +0000
@@ -16,7 +16,6 @@
hide_testtools_stack,
is_stack_hidden,
safe_hasattr,
- StackHidingFixture,
)
@@ -232,16 +231,6 @@
hide_testtools_stack(False)
self.assertThat(self.modules, StackHidden(False))
- def test_fixture(self):
- current_state = is_stack_hidden()
- fixture = StackHidingFixture(not current_state)
- fixture.setUp()
- try:
- self.assertThat(self.modules, StackHidden(not current_state))
- finally:
- fixture.cleanUp()
- self.assertThat(self.modules, StackHidden(current_state))
-
def test_suite():
from unittest import TestLoader
=== modified file 'testtools/tests/test_testresult.py'
--- testtools/tests/test_testresult.py 2011-07-26 22:06:46 +0000
+++ testtools/tests/test_testresult.py 2011-07-29 17:52:24 +0000
@@ -46,7 +46,7 @@
from testtools.tests.helpers import (
an_exc_info,
LoggingResult,
- StackHidingFixture,
+ run_with_stack_hidden,
)
from testtools.testresult.doubles import (
Python26TestResult,
@@ -395,12 +395,7 @@
def test_traceback_formatting_with_stack_hidden(self):
result = self.makeResult()
test = make_erroring_test()
- fixture = StackHidingFixture(True)
- fixture.setUp()
- try:
- test.run(result)
- finally:
- fixture.cleanUp()
+ run_with_stack_hidden(True, test.run, result)
self.assertThat(
result.errors[0][1],
DocTestMatches(
@@ -599,17 +594,14 @@
DocTestMatches("...\nFAILED (failures=1)\n", doctest.ELLIPSIS))
def test_stopTestRun_shows_details(self):
- fixture = StackHidingFixture(True)
- fixture.setUp()
- try:
+ def run_tests():
self.result.startTestRun()
make_erroring_test().run(self.result)
make_unexpectedly_successful_test().run(self.result)
make_failing_test().run(self.result)
self.reset_output()
self.result.stopTestRun()
- finally:
- fixture.cleanUp()
+ run_with_stack_hidden(True, run_tests)
self.assertThat(self.getvalue(),
DocTestMatches("""...======================================================================
ERROR: testtools.tests.test_testresult.Test.error
=== modified file 'testtools/tests/test_testsuite.py'
--- testtools/tests/test_testsuite.py 2011-07-20 12:01:05 +0000
+++ testtools/tests/test_testsuite.py 2011-07-29 17:52:24 +0000
@@ -6,16 +6,17 @@
import unittest
-from fixtures import FunctionFixture
-
from testtools import (
ConcurrentTestSuite,
iterate_tests,
TestCase,
)
+from testtools.helpers import try_import
from testtools.testsuite import FixtureSuite
from testtools.tests.helpers import LoggingResult
+FunctionFixture = try_import('fixtures.FunctionFixture')
+
class TestConcurrentTestSuiteRun(TestCase):
@@ -49,6 +50,11 @@
class TestFixtureSuite(TestCase):
+ def setUp(self):
+ super(TestFixtureSuite, self).setUp()
+ if FunctionFixture is None:
+ self.skip("Need fixtures")
+
def test_fixture_suite(self):
log = []
class Sample(TestCase):
Follow ups