[svn r57554] fix case where argument to AssertionError has broken __repr__
--HG-- branch : trunk
This commit is contained in:
		
							parent
							
								
									162160acaf
								
							
						
					
					
						commit
						a0cbc060b6
					
				|  | @ -8,7 +8,14 @@ class AssertionError(BuiltinAssertionError): | ||||||
|     def __init__(self, *args): |     def __init__(self, *args): | ||||||
|         BuiltinAssertionError.__init__(self, *args) |         BuiltinAssertionError.__init__(self, *args) | ||||||
|         if args:  |         if args:  | ||||||
|  |             try: | ||||||
|                 self.msg = str(args[0]) |                 self.msg = str(args[0]) | ||||||
|  |             except (KeyboardInterrupt, SystemExit): | ||||||
|  |                 raise | ||||||
|  |             except: | ||||||
|  |                 self.msg = "<[broken __repr__] %s at %0xd>" %( | ||||||
|  |                     args[0].__class__, id(args[0])) | ||||||
|  |              | ||||||
|         else:  |         else:  | ||||||
|             f = sys._getframe(1) |             f = sys._getframe(1) | ||||||
|             try: |             try: | ||||||
|  |  | ||||||
|  | @ -96,3 +96,11 @@ def test_assert_implicit_multiline(): | ||||||
|     except AssertionError, e: |     except AssertionError, e: | ||||||
|         assert e.msg.find('assert [1, 2, 3] !=') != -1 |         assert e.msg.find('assert [1, 2, 3] !=') != -1 | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | def test_assert_with_brokenrepr_arg(): | ||||||
|  |     class BrokenRepr: | ||||||
|  |         def __repr__(self): 0 / 0 | ||||||
|  |     e = AssertionError(BrokenRepr()) | ||||||
|  |     if e.msg.find("broken __repr__") == -1: | ||||||
|  |         py.test.fail("broken __repr__ not handle correctly") | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue