File: test_utils.py

package info (click to toggle)
circuits 3.2.3-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,980 kB
  • sloc: python: 17,583; javascript: 3,226; makefile: 100
file content (101 lines) | stat: -rw-r--r-- 1,625 bytes parent folder | download | duplicates (2)
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)