sources for test_browser.py [rev. 38799]
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
""" test source browser abilities
"""
from py.__.apigen.source.browser import parse_path, Class, Function, Method
import py
def test_browser():
    tmp = py.test.ensuretemp("sourcebrowser")
    tmp.ensure("a.py").write(py.code.Source("""
    def f():
        pass
    
    def g():
        pass
        
    class X:
        pass
        
    class Z(object):
        x = 1
        def zzz(self):
            1
            2
            3
            4
    """))
    mod = parse_path(tmp.join("a.py"))
    assert isinstance(mod.g, Function)
    assert isinstance(mod.Z, Class)
    py.test.raises(AttributeError, "mod.zzz")
    assert mod.g.firstlineno == 5
    assert mod.g.name == "g"
    assert mod.g.endlineno == 6
    assert mod.X.firstlineno == 8
    assert mod.X.endlineno == 9
    assert mod.Z.bases == ["object"]
    assert isinstance(mod.Z.zzz, Method)
    assert mod.Z.zzz.firstlineno == 13
    assert mod.Z.zzz.endlineno == 17
def test_if_browser():
    tmp = py.test.ensuretemp("sourcebrowser")
    tmp.ensure("b.py").write(py.code.Source("""
        if 1:
            def f():
                pass
        if 0:
            def g():
                pass
    """))
    mod = parse_path(tmp.join("b.py"))
    assert isinstance(mod.f, Function)
    py.test.raises(AttributeError, 'mod.g')
def test_bases():
    tmp = py.test.ensuretemp("sourcebrowser")
    tmp.ensure("c.py").write(py.code.Source("""
    import py
    class Dir(py.test.collect.Directory):
        pass
    """))
    mod = parse_path(tmp.join("c.py"))
    # if it does not rise it's ok for now
    #
    
def test_importing_goes_wrong():
    tmp = py.test.ensuretemp("sourcebrowserimport")
    tmp.ensure("x.py").write(py.code.Source("""
        import aslkdjaslkdjasdl
    """))
    mod = parse_path(tmp.join("x.py"))
    tmp.ensure("y.py").write(py.code.Source("""
        raise KeyboardInterrupt 
    """))
    py.test.raises(KeyboardInterrupt, 'parse_path(tmp.join("y.py"))')
    
    # if it does not rise it's ok for now
    #