diff -r 7b076911f5f9 Lib/unittest/case.py --- a/Lib/unittest/case.py Fri Aug 31 17:15:49 2012 -0400 +++ b/Lib/unittest/case.py Sat Sep 01 03:37:14 2012 +0100 @@ -94,12 +94,26 @@ raise _UnexpectedSuccess return wrapper +def _ensure_is_exception_type(e): + if isinstance(e, types.ClassType): + return + if not isinstance(e, type) or not issubclass(e, BaseException): + raise TypeError('assertRaises arg 1 must be an exception type ' + 'or tuple of exception types') + class _AssertRaisesContext(object): """A context manager used to implement TestCase.assertRaises* methods.""" def __init__(self, expected, test_case, expected_regexp=None): self.expected = expected + + if type(expected) is tuple: + for e in expected: + _ensure_is_exception_type(e) + else: + _ensure_is_exception_type(expected) + self.failureException = test_case.failureException self.expected_regexp = expected_regexp diff -r 7b076911f5f9 Lib/unittest/test/test_case.py --- a/Lib/unittest/test/test_case.py Fri Aug 31 17:15:49 2012 -0400 +++ b/Lib/unittest/test/test_case.py Sat Sep 01 03:37:14 2012 +0100 @@ -1014,6 +1014,38 @@ self.assertIsInstance(e, ExceptionMock) self.assertEqual(e.args[0], v) + def testAssertRaisesNoExceptionType(self): + try: + self.assertRaises(1) + self.fail("Expected TypeError") + except TypeError: + pass + + try: + self.assertRaises(object) + self.fail("Expected TypeError") + except TypeError: + pass + + try: + self.assertRaises((TypeError, 1)) + self.fail("Expected TypeError") + except TypeError: + pass + + try: + self.assertRaises((object, 1)) + self.fail("Expected TypeError") + except TypeError: + pass + + class _OldStyleError(): + pass + def raises(): + raise _OldStyleError() + self.assertRaises(_OldStyleError, raises) + + def testSynonymAssertMethodNames(self): """Test undocumented method name synonyms. diff -r 7b076911f5f9 Misc/ACKS --- a/Misc/ACKS Fri Aug 31 17:15:49 2012 -0400 +++ b/Misc/ACKS Sat Sep 01 03:37:14 2012 +0100 @@ -905,6 +905,7 @@ Norman Vine Frank Visser Johannes Vogel +Daniel Wagner-Hall Niki W. Waibel Wojtek Walczak Charles Waldman