File: test_utils.py

package info (click to toggle)
circuits 3.1.0%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 9,756 kB
  • sloc: python: 15,945; makefile: 130
file content (104 lines) | stat: -rw-r--r-- 1,613 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
102
103
104
#!/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 app:
        app.flush()

    root = findroot(b)

    assert root == app


def test_findchannel():
    app = App()
    (A() + B()).register(app)

    while app:
        app.flush()

    a = findchannel(app, "a")

    assert a.channel == "a"


def test_findtype():
    app = App()
    (A() + B()).register(app)

    while app:
        app.flush()

    a = findtype(app, A)

    assert isinstance(a, A)