diff options
-rw-r--r-- | Doc/whatsnew/3.5.rst | 6 | ||||
-rw-r--r-- | Lib/unittest/case.py | 2 | ||||
-rw-r--r-- | Lib/unittest/test/test_case.py | 12 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
5 files changed, 23 insertions, 1 deletions
diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst index b18bcd2d79..2447898f88 100644 --- a/Doc/whatsnew/3.5.rst +++ b/Doc/whatsnew/3.5.rst @@ -192,3 +192,9 @@ that may require changes to your code. if it represented midnight in UTC. This behavior was considered obscure and error-prone and has been removed in Python 3.5. See :issue:`13936` for full details. + +* :meth:`unittest.TestCase.assertRaisesRegex` and + :meth:`~unittest.TestCase.assertWarnsRegex` now raise a :exc:`TypeError` if + the second argument is not a string or a compiled :mod:`regex`. You may have + tests with an invalid second argument that have until 3.5 been falsely + passing which will now raise TypeErrors (:issue:`20145`). diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py index 87fb02bd2e..bedbc670d2 100644 --- a/Lib/unittest/case.py +++ b/Lib/unittest/case.py @@ -143,7 +143,7 @@ class _AssertRaisesBaseContext(_BaseTestCaseContext): self.obj_name = str(callable_obj) else: self.obj_name = None - if isinstance(expected_regex, (bytes, str)): + if expected_regex is not None: expected_regex = re.compile(expected_regex) self.expected_regex = expected_regex self.msg = None diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py index 363390af09..49325784d2 100644 --- a/Lib/unittest/test/test_case.py +++ b/Lib/unittest/test/test_case.py @@ -1126,6 +1126,18 @@ test case self.assertRaisesRegex, Exception, 'x', lambda: None) + def testAssertRaisesRegexInvalidRegex(self): + # Issue 20145. + class MyExc(Exception): + pass + self.assertRaises(TypeError, self.assertRaisesRegex, MyExc, lambda: True) + + def testAssertWarnsRegexInvalidRegex(self): + # Issue 20145. + class MyWarn(Warning): + pass + self.assertRaises(TypeError, self.assertWarnsRegex, MyWarn, lambda: True) + def testAssertRaisesRegexMismatch(self): def Stub(): raise Exception('Unexpected') @@ -546,6 +546,7 @@ Stefan Hoffmeister Albert Hofkamp Tomas Hoger Jonathan Hogg +Kamilla Holanda Steve Holden Akintayo Holder Thomas Holenstein @@ -23,6 +23,9 @@ Core and Builtins Library ------- +- Issue #20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a + TypeError if the second argument is not a string or compiled regex. + - Issue #20633: Replace relative import by absolute import. - Issue #20980: Stop wrapping exception when using ThreadPool. |