diff options
author | R David Murray <rdmurray@bitdance.com> | 2014-03-25 19:31:50 (GMT) |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2014-03-25 19:31:50 (GMT) |
commit | ef1c26798ca95d10d29979c6fef77ac3b6f27c26 (patch) | |
tree | 074534905e338281d8f9937635becd0cd27bc86e /Lib | |
parent | 87d13ea56d58851c35952aa8dac24168fceac15a (diff) | |
download | cpython-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.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/unittest/case.py | 2 | ||||
-rw-r--r-- | Lib/unittest/test/test_case.py | 12 |
2 files changed, 13 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') |