def setup_fs_project(name): |
-> temp = py.test.ensuretemp(name) |
assert temp.listdir() == [] |
temp.ensure("pak/func.py").write(py.code.Source("""\ |
def func(arg1): |
"docstring" |
|
def func_2(arg1, arg2): |
return arg1(arg2) |
""")) |
temp.ensure('pak/sometestclass.py').write(py.code.Source("""\ |
class SomeTestClass(object): |
" docstring sometestclass " |
someattr = 'somevalue' |
def __init__(self, somevar): |
self.somevar = somevar |
|
def get_somevar(self): |
" get_somevar docstring " |
return self.somevar |
|
def get_some_source(self): |
ret = py.code.Source('''\\ |
def foo(): |
return 'bar' |
''') |
return ret |
|
""")) |
temp.ensure('pak/sometestsubclass.py').write(py.code.Source("""\ |
from sometestclass import SomeTestClass |
class SomeTestSubClass(SomeTestClass): |
" docstring sometestsubclass " |
def get_somevar(self): |
return self.somevar + 1 |
""")) |
temp.ensure('pak/somenamespace.py').write(py.code.Source("""\ |
def foo(): |
return 'bar' |
def baz(qux): |
return qux |
def _hidden(): |
return 'quux' |
""")) |
temp.ensure("pak/__init__.py").write(py.code.Source("""\ |
'''pkg docstring''' |
from py.initpkg import initpkg |
initpkg(__name__, |
long_description=globals()['__doc__'], |
exportdefs={'main.sub.func': ("./func.py", "func"), |
'main.func': ("./func.py", "func_2"), |
'main.SomeTestClass': ('./sometestclass.py', |
'SomeTestClass'), |
'main.SomeTestSubClass': ('./sometestsubclass.py', |
'SomeTestSubClass'), |
'somenamespace': ('./somenamespace.py', '*')}) |
""")) |
temp.ensure('apigen.py').write(py.code.Source("""\ |
import py |
py.std.sys.path.insert(0, |
py.magic.autopath().dirpath().dirpath().dirpath().strpath) |
from py.__.apigen.apigen import build, \ |
get_documentable_items_pkgdir as get_documentable_items |
""")) |
temp.ensure('pak/test/test_pak.py').write(py.code.Source("""\ |
import py |
py.std.sys.path.insert(0, |
py.magic.autopath().dirpath().dirpath().dirpath().strpath) |
import pak |
|
# this mainly exists to provide some data to the tracer |
def test_pak(): |
s = pak.main.SomeTestClass(10) |
assert s.get_somevar() == 10 |
s = pak.main.SomeTestClass('10') |
assert s.get_somevar() == '10' |
s = pak.main.SomeTestSubClass(10) |
assert s.get_somevar() == 11 |
s = pak.main.SomeTestSubClass('10') |
py.test.raises(TypeError, 's.get_somevar()') |
assert pak.main.sub.func(10) is None |
assert pak.main.sub.func(20) is None |
s = pak.main.func(pak.main.SomeTestClass, 10) |
assert isinstance(s, pak.main.SomeTestClass) |
|
# some nice things to confuse the tracer/storage |
source = py.code.Source('''\ |
pak.main.sub.func(10) |
''') |
c = compile(str(source), '<test>', 'exec') |
exec c in globals() |
|
assert pak.somenamespace._hidden() == 'quux' |
|
# this just to see a multi-level stack in the docs |
def foo(): |
return pak.main.sub.func(10) |
assert foo() is None |
""")) |
return temp, 'pak' |