1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
#!/usr/bin/env python
import sys
from types import ModuleType
from circuits import Component
from circuits.core.utils import findchannel, findroot, findtype
FOO = """\
def foo():
return "Hello World!"
"""
FOOBAR = """\
def foo();
return "Hello World!'
"""
class Base(Component):
"""Base"""
class App(Base):
def hello(self):
return 'Hello World!'
class A(Component):
channel = 'a'
class B(Component):
channel = 'b'
def test_safeimport(tmpdir):
from circuits.core.utils import safeimport
sys.path.insert(0, str(tmpdir))
foo_path = tmpdir.ensure('foo.py')
foo_path.write(FOO)
foo = safeimport('foo')
assert foo is not None
assert type(foo) is ModuleType
s = foo.foo()
assert s == 'Hello World!'
pyc = foo_path.new(ext='pyc')
if pyc.check(file=1):
pyc.remove(ignore_errors=True)
pyd = foo_path.dirpath('__pycache__')
if pyd.check(dir=1):
pyd.remove(ignore_errors=True)
foo_path.write(FOOBAR)
foo = safeimport('foo')
assert foo is None
assert foo not in sys.modules
def test_findroot():
app = App()
a = A()
b = B()
b.register(a)
a.register(app)
while len(app):
app.flush()
root = findroot(b)
assert root == app
def test_findchannel():
app = App()
(A() + B()).register(app)
while len(app):
app.flush()
a = findchannel(app, 'a')
assert a.channel == 'a'
def test_findtype():
app = App()
(A() + B()).register(app)
while len(app):
app.flush()
a = findtype(app, A)
assert isinstance(a, A)
|