|
""" 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")) |
|
|
|
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"))') |
|
|
|
|