[svn r37275] merging of file:///svn/py/branch/config/py/apigen/testing/test_apigen_functional.py
revisions 36936 to 37267: ------------------------------------------------------------------------ r37020 | hpk | 2007-01-19 17:48:15 +0100 (Fri, 19 Jan 2007) | 3 lines switching in the new way of getting to a sessionclass, removing code in cmdline.py and elsewhere accordingly ------------------------------------------------------------------------ r36937 | fijal | 2007-01-18 14:22:54 +0100 (Thu, 18 Jan 2007) | 2 lines Create a branch for further config cleanups. ------------------------------------------------------------------------ --HG-- branch : trunk
This commit is contained in:
parent
a1f2e0a1e0
commit
2bdeb13069
|
@ -0,0 +1,116 @@
|
||||||
|
""" functional test for apigen.py
|
||||||
|
|
||||||
|
script to build api + source docs from py.test
|
||||||
|
"""
|
||||||
|
|
||||||
|
import py
|
||||||
|
|
||||||
|
def setup_fs_project():
|
||||||
|
temp = py.test.ensuretemp('apigen_functional')
|
||||||
|
temp.ensure("pkg/func.py").write(py.code.Source("""\
|
||||||
|
def func(arg1):
|
||||||
|
"docstring"
|
||||||
|
|
||||||
|
def func_2(arg1, arg2):
|
||||||
|
return arg1(arg2)
|
||||||
|
"""))
|
||||||
|
temp.ensure('pkg/sometestclass.py').write(py.code.Source("""\
|
||||||
|
class SomeTestClass(object):
|
||||||
|
" docstring sometestclass "
|
||||||
|
def __init__(self, somevar):
|
||||||
|
self.somevar = somevar
|
||||||
|
|
||||||
|
def get_somevar(self):
|
||||||
|
" get_somevar docstring "
|
||||||
|
return self.somevar
|
||||||
|
"""))
|
||||||
|
temp.ensure('pkg/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('pkg/somenamespace.py').write(py.code.Source("""\
|
||||||
|
def foo():
|
||||||
|
return 'bar'
|
||||||
|
def baz(qux):
|
||||||
|
return qux
|
||||||
|
"""))
|
||||||
|
temp.ensure("pkg/__init__.py").write(py.code.Source("""\
|
||||||
|
from py.initpkg import initpkg
|
||||||
|
initpkg(__name__, exportdefs = {
|
||||||
|
'main.sub.func': ("./func.py", "func"),
|
||||||
|
'main.func': ("./func.py", "func_2"),
|
||||||
|
'main.SomeTestClass': ('./sometestclass.py', 'SomeTestClass'),
|
||||||
|
'main.SomeTestSubClass': ('./sometestsubclass.py',
|
||||||
|
'SomeTestSubClass'),
|
||||||
|
})
|
||||||
|
"""))
|
||||||
|
temp.ensure('pkg/test/test_pkg.py').write(py.code.Source("""\
|
||||||
|
import py
|
||||||
|
py.std.sys.path.insert(0,
|
||||||
|
py.magic.autopath().dirpath().dirpath().dirpath().strpath)
|
||||||
|
import pkg
|
||||||
|
|
||||||
|
# this mainly exists to provide some data to the tracer
|
||||||
|
def test_pkg():
|
||||||
|
s = pkg.main.SomeTestClass(10)
|
||||||
|
assert s.get_somevar() == 10
|
||||||
|
s = pkg.main.SomeTestClass('10')
|
||||||
|
assert s.get_somevar() == '10'
|
||||||
|
s = pkg.main.SomeTestSubClass(10)
|
||||||
|
assert s.get_somevar() == 11
|
||||||
|
s = pkg.main.SomeTestSubClass('10')
|
||||||
|
py.test.raises(TypeError, 's.get_somevar()')
|
||||||
|
assert pkg.main.sub.func(10) is None
|
||||||
|
assert pkg.main.sub.func(20) is None
|
||||||
|
s = pkg.main.func(pkg.main.SomeTestClass, 10)
|
||||||
|
assert isinstance(s, pkg.main.SomeTestClass)
|
||||||
|
"""))
|
||||||
|
return temp, 'pkg'
|
||||||
|
|
||||||
|
def test_apigen_functional():
|
||||||
|
fs_root, package_name = setup_fs_project()
|
||||||
|
tempdir = py.test.ensuretemp('test_apigen_functional_results')
|
||||||
|
parentdir = py.magic.autopath().dirpath().dirpath()
|
||||||
|
pkgdir = fs_root.join('pkg')
|
||||||
|
try:
|
||||||
|
output = py.process.cmdexec('APIGEN_TARGET="%s" py.test '
|
||||||
|
'--apigen="%s/apigen.py" "%s"' % (
|
||||||
|
tempdir, parentdir, pkgdir))
|
||||||
|
except py.error.Error, e:
|
||||||
|
print e.out
|
||||||
|
raise
|
||||||
|
assert output.lower().find('traceback') == -1
|
||||||
|
|
||||||
|
# just some quick content checks
|
||||||
|
apidir = tempdir.join('api')
|
||||||
|
assert apidir.check(dir=True)
|
||||||
|
sometestclass_api = apidir.join('main.SomeTestClass.html')
|
||||||
|
assert sometestclass_api.check(file=True)
|
||||||
|
html = sometestclass_api.read()
|
||||||
|
assert '<a href="main.SomeTestClass.html">SomeTestClass</a>' in html
|
||||||
|
# XXX not linking to method files anymore
|
||||||
|
#sometestclass_init_api = apidir.join('main.SomeTestClass.__init__.html')
|
||||||
|
#assert sometestclass_init_api.check(file=True)
|
||||||
|
#assert sometestclass_init_api.read().find(
|
||||||
|
# '<a href="main.SomeTestClass.__init__.html">__init__</a>') > -1
|
||||||
|
namespace_api = apidir.join('main.html')
|
||||||
|
assert namespace_api.check(file=True)
|
||||||
|
html = namespace_api.read()
|
||||||
|
assert '<a href="main.SomeTestClass.html">SomeTestClass</a>' in html
|
||||||
|
|
||||||
|
sourcedir = tempdir.join('source')
|
||||||
|
assert sourcedir.check(dir=True)
|
||||||
|
sometestclass_source = sourcedir.join('sometestclass.py.html')
|
||||||
|
assert sometestclass_source.check(file=True)
|
||||||
|
html = sometestclass_source.read()
|
||||||
|
assert '<div class="project_title">sources for sometestclass.py</div>' in html
|
||||||
|
|
||||||
|
# XXX later...
|
||||||
|
#index = sourcedir.join('index.html')
|
||||||
|
#assert index.check(file=True)
|
||||||
|
#html = index.read()
|
||||||
|
#assert '<a href="main/index.html">main</a>' in html
|
||||||
|
|
Loading…
Reference in New Issue