[Python-checkins] cpython (3.4): Issue #21112: Fix regression in unittest.expectedFailure on subclasses.

robert.collins python-checkins at python.org
Fri Aug 28 00:36:33 CEST 2015


https://hg.python.org/cpython/rev/a90c6d608b85
changeset: 97532:a90c6d608b85
branch: 3.4
parent: 97529:cf15066861fc
user: Robert Collins <rbtcollins at hp.com>
date: Fri Aug 28 10:34:51 2015 +1200
summary:
 Issue #21112: Fix regression in unittest.expectedFailure on subclasses.
Patch from Berker Peksag.
files:
 Lib/unittest/case.py | 7 ++-
 Lib/unittest/test/test_skipping.py | 33 ++++++++++++++++++
 Misc/NEWS | 3 +
 3 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py
--- a/Lib/unittest/case.py
+++ b/Lib/unittest/case.py
@@ -563,8 +563,11 @@
 finally:
 result.stopTest(self)
 return
- expecting_failure = getattr(testMethod,
- "__unittest_expecting_failure__", False)
+ expecting_failure_method = getattr(testMethod,
+ "__unittest_expecting_failure__", False)
+ expecting_failure_class = getattr(self,
+ "__unittest_expecting_failure__", False)
+ expecting_failure = expecting_failure_class or expecting_failure_method
 outcome = _Outcome(result)
 try:
 self._outcome = outcome
diff --git a/Lib/unittest/test/test_skipping.py b/Lib/unittest/test/test_skipping.py
--- a/Lib/unittest/test/test_skipping.py
+++ b/Lib/unittest/test/test_skipping.py
@@ -120,6 +120,39 @@
 self.assertEqual(result.expectedFailures[0][0], test)
 self.assertTrue(result.wasSuccessful())
 
+ def test_expected_failure_with_wrapped_class(self):
+ @unittest.expectedFailure
+ class Foo(unittest.TestCase):
+ def test_1(self):
+ self.assertTrue(False)
+
+ events = []
+ result = LoggingResult(events)
+ test = Foo("test_1")
+ test.run(result)
+ self.assertEqual(events,
+ ['startTest', 'addExpectedFailure', 'stopTest'])
+ self.assertEqual(result.expectedFailures[0][0], test)
+ self.assertTrue(result.wasSuccessful())
+
+ def test_expected_failure_with_wrapped_subclass(self):
+ class Foo(unittest.TestCase):
+ def test_1(self):
+ self.assertTrue(False)
+
+ @unittest.expectedFailure
+ class Bar(Foo):
+ pass
+
+ events = []
+ result = LoggingResult(events)
+ test = Bar("test_1")
+ test.run(result)
+ self.assertEqual(events,
+ ['startTest', 'addExpectedFailure', 'stopTest'])
+ self.assertEqual(result.expectedFailures[0][0], test)
+ self.assertTrue(result.wasSuccessful())
+
 def test_expected_failure_subtests(self):
 # A failure in any subtest counts as the expected failure of the
 # whole test.
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -75,6 +75,9 @@
 Library
 -------
 
+- Issue #21112: Fix regression in unittest.expectedFailure on subclasses.
+ Patch from Berker Peksag.
+
 - Issue #24764: cgi.FieldStorage.read_multi() now ignores the Content-Length
 header in part headers. Patch written by Peter Landry and reviewed by Pierre
 Quentel.
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /