diff -r 0909f73cfa3a Lib/unittest/case.py --- a/Lib/unittest/case.py Sat Mar 08 16:36:37 2014 +1000 +++ b/Lib/unittest/case.py Mon Mar 10 22:14:45 2014 -0300 @@ -143,6 +143,14 @@ self.obj_name = str(callable_obj) else: self.obj_name = None + + if expected_regex is None: + pass + else: + if type(expected_regex) is not str: + if not isinstance(expected_regex, re._pattern_type): + raise TypeError("Expected regex must be a string or a regex object") + if isinstance(expected_regex, (bytes, str)): expected_regex = re.compile(expected_regex) self.expected_regex = expected_regex diff -r 0909f73cfa3a Lib/unittest/test/test_case.py --- a/Lib/unittest/test/test_case.py Sat Mar 08 16:36:37 2014 +1000 +++ b/Lib/unittest/test/test_case.py Mon Mar 10 22:14:45 2014 -0300 @@ -1126,6 +1126,25 @@ self.assertRaisesRegex, Exception, 'x', lambda: None) + def testAssertRaisesRegexInvalidRegex(self): + class ExceptionMock(Exception): + pass + + def Stub(): + raise ExceptionMock('We expect') + + self.assertRaises(TypeError, self.assertRaisesRegex, ExceptionMock, 123456, Stub) + + + def testAssertWarnsRegexInvalidRegex(self): + class WarningMock(Warning): + pass + + def Stub(): + raise WarningMock('We expect') + + self.assertRaises(TypeError, self.assertWarnsRegex, WarningMock, Stub) + def testAssertRaisesRegexMismatch(self): def Stub(): raise Exception('Unexpected')