35 lines
839 B
Python
35 lines
839 B
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():
|
||
|
assert 'unknown' in safe_repr._repr(BrokenRepr("string"))
|
||
|
|
||
|
def test_big_repr():
|
||
|
assert len(safe_repr._repr(range(1000))) <= \
|
||
|
len('[' + safe_repr.SafeRepr().maxlist * "1000" + ']')
|
||
|
|
||
|
|
||
|
|