changeset: 89979:3f8b801e7e76 branch: 2.7 parent: 89976:d09032a9adee user: R David Murray date: Tue Mar 25 15:29:42 2014 -0400 files: Lib/unittest/case.py Lib/unittest/test/test_case.py Misc/ACKS Misc/NEWS description: backport: #20145: assertRaisesRegexp now raises a TypeError on bad regex. Previously a non-string, non-regex second argument and no callable argument could cause the test to appear to always pass. diff -r d09032a9adee -r 3f8b801e7e76 Lib/unittest/case.py --- a/Lib/unittest/case.py Tue Mar 25 12:53:47 2014 +0100 +++ b/Lib/unittest/case.py Tue Mar 25 15:29:42 2014 -0400 @@ -122,8 +122,6 @@ return True expected_regexp = self.expected_regexp - if isinstance(expected_regexp, basestring): - expected_regexp = re.compile(expected_regexp) if not expected_regexp.search(str(exc_value)): raise self.failureException('"%s" does not match "%s"' % (expected_regexp.pattern, str(exc_value))) @@ -986,6 +984,8 @@ args: Extra args. kwargs: Extra kwargs. """ + if expected_regexp is not None: + expected_regexp = re.compile(expected_regexp) context = _AssertRaisesContext(expected_exception, self, expected_regexp) if callable_obj is None: return context diff -r d09032a9adee -r 3f8b801e7e76 Lib/unittest/test/test_case.py --- a/Lib/unittest/test/test_case.py Tue Mar 25 12:53:47 2014 +0100 +++ b/Lib/unittest/test/test_case.py Tue Mar 25 15:29:42 2014 -0400 @@ -979,6 +979,12 @@ self.assertRaisesRegexp, Exception, u'x', lambda: None) + def testAssertRaisesRegexpInvalidRegexp(self): + # Issue 20145. + class MyExc(Exception): + pass + self.assertRaises(TypeError, self.assertRaisesRegexp, MyExc, lambda: True) + def testAssertRaisesRegexpMismatch(self): def Stub(): raise Exception('Unexpected') diff -r d09032a9adee -r 3f8b801e7e76 Misc/ACKS --- a/Misc/ACKS Tue Mar 25 12:53:47 2014 +0100 +++ b/Misc/ACKS Tue Mar 25 15:29:42 2014 -0400 @@ -546,6 +546,7 @@ Albert Hofkamp Tomas Hoger Jonathan Hogg +Kamilla Holanda Steve Holden Akintayo Holder Thomas Holenstein diff -r d09032a9adee -r 3f8b801e7e76 Misc/NEWS --- a/Misc/NEWS Tue Mar 25 12:53:47 2014 +0100 +++ b/Misc/NEWS Tue Mar 25 15:29:42 2014 -0400 @@ -40,6 +40,9 @@ Library ------- +- Issue #20145: `assertRaisesRegex` now raises a TypeError if the second + argument is not a string or compiled regex. + - Issue #21058: Fix a leak of file descriptor in tempfile.NamedTemporaryFile(), close the file descriptor if os.fdopen() fails