##// END OF EJS Templates
fix directory listing with broken symlinks...
fix directory listing with broken symlinks directory listing would 404 if any listed file doesn't exist (e.g. symlink to missing target). Previously-failing test included.

File last commit:

r12965:433d684a
r17710:68e1f474
Show More
test_dir2.py
80 lines | 1.9 KiB | text/x-python | PythonLexer
Tim Couper
Added test_dir2 for the dir2 (bonus) tests...
r6309 import nose.tools as nt
from IPython.utils.dir2 import dir2
class Base(object):
x = 1
z = 23
def test_base():
res = dir2(Base())
assert ('x' in res)
assert ('z' in res)
assert ('y' not in res)
assert ('__class__' in res)
Tim Couper
Changes to dir2 to remove duplicates fix: put limit_to__all__ default to 0 fix: the doctest to reflect the new limit_to__all__...
r6310 nt.assert_equal(res.count('x'), 1)
nt.assert_equal(res.count('__class__'), 1)
Tim Couper
Added test_dir2 for the dir2 (bonus) tests...
r6309
def test_SubClass():
class SubClass(Base):
y = 2
res = dir2(SubClass())
assert ('y' in res)
Tim Couper
Changes to dir2 to remove duplicates fix: put limit_to__all__ default to 0 fix: the doctest to reflect the new limit_to__all__...
r6310 nt.assert_equal(res.count('y'), 1)
nt.assert_equal(res.count('x'), 1)
Tim Couper
Added test_dir2 for the dir2 (bonus) tests...
r6309
def test_SubClass_with_trait_names_method():
class SubClass(Base):
y = 2
def trait_names(self):
return ['t', 'umbrella']
res = dir2(SubClass())
assert('trait_names' in res)
assert('umbrella' in res)
Tim Couper
Changes to dir2 to remove duplicates fix: put limit_to__all__ default to 0 fix: the doctest to reflect the new limit_to__all__...
r6310 nt.assert_equal(res[-6:], ['t', 'trait_names','umbrella', 'x','y','z'])
Tim Couper
Added test_dir2 for the dir2 (bonus) tests...
r6309 nt.assert_equal(res.count('t'), 1)
def test_SubClass_with_trait_names_attr():
# usecase: trait_names is used in a class describing psychological classification
class SubClass(Base):
y = 2
trait_names = 44
res = dir2(SubClass())
assert('trait_names' in res)
Jeffrey Tratner
Use safe_hasattr in dir2...
r12965
def test_misbehaving_object_without_trait_names():
# dir2 shouldn't raise even when objects are dumb and raise
# something other than AttribteErrors on bad getattr.
class BadTraitNames(object):
@property
def trait_names(self):
raise KeyboardInterrupt("This should be caught")
def some_method(self):
pass
class MisbehavingGetattr(object):
def __getattr__(self):
raise KeyError("I should be caught")
def some_method(self):
pass
class SillierWithDir(MisbehavingGetattr):
def __dir__(self):
return ['some_method']
for bad_klass in (BadTraitNames, MisbehavingGetattr, SillierWithDir):
res = dir2(bad_klass())
assert('some_method' in res)