summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2014-03-25 19:31:50 (GMT)
committerR David Murray <rdmurray@bitdance.com>2014-03-25 19:31:50 (GMT)
commitef1c26798ca95d10d29979c6fef77ac3b6f27c26 (patch)
tree074534905e338281d8f9937635becd0cd27bc86e
parent87d13ea56d58851c35952aa8dac24168fceac15a (diff)
downloadcpython-ef1c26798ca95d10d29979c6fef77ac3b6f27c26.zip
cpython-ef1c26798ca95d10d29979c6fef77ac3b6f27c26.tar.gz
cpython-ef1c26798ca95d10d29979c6fef77ac3b6f27c26.tar.bz2
backport: #20145: assert[Raises|Warns]Regex now raise TypeError on bad regex.
Previously a non-string, non-regex second argument and missing callable argument could cause the test to appear to always pass. Initial patch by Kamilla Holanda.
-rw-r--r--Lib/unittest/case.py2
-rw-r--r--Lib/unittest/test/test_case.py12
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS3
4 files changed, 17 insertions, 1 deletions
diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py
index 87fb02b..bedbc67 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 363390a..4932578 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')
diff --git a/Misc/ACKS b/Misc/ACKS
index 68617ce..0eb8267 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -546,6 +546,7 @@ Stefan Hoffmeister
Albert Hofkamp
Tomas Hoger
Jonathan Hogg
+Kamilla Holanda
Steve Holden
Akintayo Holder
Thomas Holenstein
diff --git a/Misc/NEWS b/Misc/NEWS
index 2a7cd3b..b00a017 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -24,6 +24,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 #21058: Fix a leak of file descriptor in
:func:`tempfile.NamedTemporaryFile`, close the file descriptor if
:func:`io.open` fails