init
This commit is contained in:
commit
38355d2442
9083 changed files with 1225834 additions and 0 deletions
|
|
@ -0,0 +1,67 @@
|
|||
from IPython.utils.dir2 import dir2
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
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
|
||||
assert res.count("x") == 1
|
||||
assert res.count("__class__") == 1
|
||||
|
||||
|
||||
def test_SubClass():
|
||||
|
||||
class SubClass(Base):
|
||||
y = 2
|
||||
|
||||
res = dir2(SubClass())
|
||||
assert "y" in res
|
||||
assert res.count("y") == 1
|
||||
assert res.count("x") == 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
|
||||
|
||||
|
||||
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 MisbehavingGetattr:
|
||||
def __getattr__(self, attr):
|
||||
raise KeyError("I should be caught")
|
||||
|
||||
def some_method(self):
|
||||
return True
|
||||
|
||||
class SillierWithDir(MisbehavingGetattr):
|
||||
def __dir__(self):
|
||||
return ['some_method']
|
||||
|
||||
for bad_klass in (MisbehavingGetattr, SillierWithDir):
|
||||
obj = bad_klass()
|
||||
|
||||
assert obj.some_method()
|
||||
|
||||
with pytest.raises(KeyError):
|
||||
obj.other_method()
|
||||
|
||||
res = dir2(obj)
|
||||
assert "some_method" in res
|
||||
Loading…
Add table
Add a link
Reference in a new issue