49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
| 
 | |
| import py
 | |
| from py.__.code import safe_repr
 | |
| 
 | |
| def test_simple_repr():
 | |
|     assert safe_repr._repr(1) == '1'
 | |
|     assert safe_repr._repr(None) == 'None'
 | |
|     
 | |
| class BrokenRepr:
 | |
|     def __init__(self, ex):
 | |
|         self.ex = ex
 | |
|         foo = 0
 | |
|     def __repr__(self):
 | |
|         raise self.ex
 | |
|         
 | |
| def test_exception():
 | |
|     assert 'Exception' in safe_repr._repr(BrokenRepr(Exception("broken")))
 | |
| 
 | |
| class BrokenReprException(Exception):
 | |
|     __str__ = None 
 | |
|     __repr__ = None
 | |
|     
 | |
| def test_broken_exception():
 | |
|     assert 'Exception' in safe_repr._repr(BrokenRepr(BrokenReprException("really broken")))
 | |
| 
 | |
| def test_string_exception():
 | |
|     if py.std.sys.version_info < (2,6):
 | |
|         assert 'unknown' in safe_repr._repr(BrokenRepr("string"))
 | |
|     else:
 | |
|         assert 'TypeError' in safe_repr._repr(BrokenRepr("string"))
 | |
|         
 | |
| 
 | |
| 
 | |
| def test_big_repr():
 | |
|     assert len(safe_repr._repr(range(1000))) <= \
 | |
|            len('[' + safe_repr.SafeRepr().maxlist * "1000" + ']')
 | |
| 
 | |
| def test_repr_on_newstyle():
 | |
|     class Function(object):
 | |
|         def __repr__(self):
 | |
|             return "<%s>" %(self.name)
 | |
|     try:
 | |
|         s = safe_repr._repr(Function())
 | |
|     except Exception, e:
 | |
|         py.test.fail("saferepr failed for newstyle class")
 | |
|     
 | |
|         
 | |
|     
 |