Rev 2370: Add support for calling addNotSupported on TestResults to bzr TestCase's in file:///home/robertc/source/baz/test-prereqs/
Robert Collins
robertc at robertcollins.net
Thu Mar 22 10:08:46 GMT 2007
At file:///home/robertc/source/baz/test-prereqs/
------------------------------------------------------------
revno: 2370
revision-id: robertc at robertcollins.net-20070322100744-96m81fcue8hgsfnd
parent: robertc at robertcollins.net-20070322090459-q0gjq21qgrj453hf
committer: Robert Collins <robertc at robertcollins.net>
branch nick: test-prereqs
timestamp: Thu 2007-03-22 21:07:44 +1100
message:
Add support for calling addNotSupported on TestResults to bzr TestCase's
when _test_needs_features contains unavailable features. (Robert Collins)
modified:
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py 2007-03-22 09:04:59 +0000
+++ b/bzrlib/tests/__init__.py 2007-03-22 10:07:44 +0000
@@ -1020,6 +1020,19 @@
"""This test has failed for some known reason."""
raise KnownFailure(reason)
+ def run(self, result=None):
+ if result is None: result = self.defaultTestResult()
+ for feature in getattr(self, '_test_needs_features', []):
+ if not feature.available():
+ result.startTest(self)
+ if getattr(result, 'addNotSupported', None):
+ result.addNotSupported(self, feature)
+ else:
+ result.addSuccess(self)
+ result.stopTest(self)
+ return
+ return unittest.TestCase.run(self, result)
+
def tearDown(self):
self._runCleanups()
unittest.TestCase.tearDown(self)
=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py 2007-03-22 09:04:59 +0000
+++ b/bzrlib/tests/test_selftest.py 2007-03-22 10:07:44 +0000
@@ -978,6 +978,12 @@
self.assertEqual(log, test._log_contents)
+class SampleTestCase(TestCase):
+
+ def _test_pass(self):
+ pass
+
+
class TestTestCase(TestCase):
"""Tests that test the core bzrlib TestCase."""
@@ -1063,6 +1069,63 @@
"""Self.knownFailure() should raise a KnownFailure exception."""
self.assertRaises(KnownFailure, self.knownFailure, "A Failure")
+ def test_run_no_parameters(self):
+ test = SampleTestCase('_test_pass')
+ test.run()
+
+ def test_run_enabled_unittest_result(self):
+ """Test we revert to regular behaviour when the test is enabled."""
+ test = SampleTestCase('_test_pass')
+ class EnabledFeature(object):
+ def available(self):
+ return True
+ test._test_needs_features = [EnabledFeature()]
+ result = unittest.TestResult()
+ test.run(result)
+ self.assertEqual(1, result.testsRun)
+ self.assertEqual([], result.errors)
+ self.assertEqual([], result.failures)
+
+ def test_run_disabled_unittest_result(self):
+ """Test our compatability for disabled tests with unittest results."""
+ test = SampleTestCase('_test_pass')
+ class DisabledFeature(object):
+ def available(self):
+ return False
+ test._test_needs_features = [DisabledFeature()]
+ result = unittest.TestResult()
+ test.run(result)
+ self.assertEqual(1, result.testsRun)
+ self.assertEqual([], result.errors)
+ self.assertEqual([], result.failures)
+
+ def test_run_disabled_supporting_result(self):
+ """Test disabled tests behaviour with support aware results."""
+ test = SampleTestCase('_test_pass')
+ class DisabledFeature(object):
+ def available(self):
+ return False
+ the_feature = DisabledFeature()
+ test._test_needs_features = [the_feature]
+ class InstrumentedTestResult(unittest.TestResult):
+ def __init__(self):
+ unittest.TestResult.__init__(self)
+ self.calls = []
+ def startTest(self, test):
+ self.calls.append(('startTest', test))
+ def stopTest(self, test):
+ self.calls.append(('stopTest', test))
+ def addNotSupported(self, test, feature):
+ self.calls.append(('addNotSupported', test, feature))
+ result = InstrumentedTestResult()
+ test.run(result)
+ self.assertEqual([
+ ('startTest', test),
+ ('addNotSupported', test, the_feature),
+ ('stopTest', test),
+ ],
+ result.calls)
+
@symbol_versioning.deprecated_function(zero_eleven)
def sample_deprecated_function():
More information about the bazaar-commits
mailing list