mirror of
https://github.com/python/cpython.git
synced 2025-08-02 08:02:56 +00:00
#20145: assert[Raises|Warns]Regex now raise TypeError on bad regex.
Previously a non-string, non-regex second argument could cause the test to always pass. Initial patch by Kamilla Holanda.
This commit is contained in:
parent
91e7f04fc5
commit
e1b6f97dae
5 changed files with 23 additions and 1 deletions
|
@ -192,3 +192,9 @@ that may require changes to your code.
|
||||||
if it represented midnight in UTC. This behavior was considered obscure and
|
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
|
error-prone and has been removed in Python 3.5. See :issue:`13936` for full
|
||||||
details.
|
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`).
|
||||||
|
|
|
@ -143,7 +143,7 @@ class _AssertRaisesBaseContext(_BaseTestCaseContext):
|
||||||
self.obj_name = str(callable_obj)
|
self.obj_name = str(callable_obj)
|
||||||
else:
|
else:
|
||||||
self.obj_name = None
|
self.obj_name = None
|
||||||
if isinstance(expected_regex, (bytes, str)):
|
if expected_regex is not None:
|
||||||
expected_regex = re.compile(expected_regex)
|
expected_regex = re.compile(expected_regex)
|
||||||
self.expected_regex = expected_regex
|
self.expected_regex = expected_regex
|
||||||
self.msg = None
|
self.msg = None
|
||||||
|
|
|
@ -1126,6 +1126,18 @@ test case
|
||||||
self.assertRaisesRegex, Exception, 'x',
|
self.assertRaisesRegex, Exception, 'x',
|
||||||
lambda: None)
|
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 testAssertRaisesRegexMismatch(self):
|
||||||
def Stub():
|
def Stub():
|
||||||
raise Exception('Unexpected')
|
raise Exception('Unexpected')
|
||||||
|
|
|
@ -546,6 +546,7 @@ Stefan Hoffmeister
|
||||||
Albert Hofkamp
|
Albert Hofkamp
|
||||||
Tomas Hoger
|
Tomas Hoger
|
||||||
Jonathan Hogg
|
Jonathan Hogg
|
||||||
|
Kamilla Holanda
|
||||||
Steve Holden
|
Steve Holden
|
||||||
Akintayo Holder
|
Akintayo Holder
|
||||||
Thomas Holenstein
|
Thomas Holenstein
|
||||||
|
|
|
@ -23,6 +23,9 @@ Core and Builtins
|
||||||
Library
|
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 #20633: Replace relative import by absolute import.
|
||||||
|
|
||||||
- Issue #20980: Stop wrapping exception when using ThreadPool.
|
- Issue #20980: Stop wrapping exception when using ThreadPool.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue