[svn r62333] remove apigen here, it is now at svn/apigen/trunk/pytest_apigen.py
--HG-- branch : trunk
This commit is contained in:
parent
1764555778
commit
8a1ee954f8
|
@ -1,82 +0,0 @@
|
||||||
import py
|
|
||||||
|
|
||||||
class ApigenPlugin:
|
|
||||||
def pytest_addoption(self, parser):
|
|
||||||
group = parser.addgroup("apigen options")
|
|
||||||
group.addoption('--apigen', action="store_true", dest="apigen",
|
|
||||||
help="generate api documentation")
|
|
||||||
#group.addoption('--apigenpath',
|
|
||||||
# action="store", dest="apigenpath",
|
|
||||||
# default="../apigen",
|
|
||||||
# type="string",
|
|
||||||
# help="relative path to apigen doc output location (relative from py/)")
|
|
||||||
#group.addoption('--docpath',
|
|
||||||
# action='store', dest='docpath',
|
|
||||||
# default="doc", type='string',
|
|
||||||
# help="relative path to doc output location (relative from py/)")
|
|
||||||
|
|
||||||
def pytest_configure(self, config):
|
|
||||||
if config.option.apigen:
|
|
||||||
from py.__.apigen.tracer.tracer import Tracer, DocStorage
|
|
||||||
self.pkgdir = py.path.local(config.args[0]).pypkgpath()
|
|
||||||
apigenscriptpath = py.path.local(py.__file__).dirpath("apigen", "apigen.py")
|
|
||||||
apigenscript = apigenscriptpath.pyimport()
|
|
||||||
if not hasattr(apigenscript, 'get_documentable_items'):
|
|
||||||
raise NotImplementedError("%r needs to provide get_documentable_items" %(
|
|
||||||
apigenscriptpath,))
|
|
||||||
self.apigenscript = apigenscript
|
|
||||||
pkgname, items = apigenscript.get_documentable_items(self.pkgdir)
|
|
||||||
self.docstorage = DocStorage().from_dict(items,
|
|
||||||
module_name=pkgname)
|
|
||||||
self.tracer = Tracer(self.docstorage)
|
|
||||||
|
|
||||||
def pytest_pyfunc_call(self, pyfuncitem, args, kwargs):
|
|
||||||
if hasattr(self, 'tracer'):
|
|
||||||
self.tracer.start_tracing()
|
|
||||||
try:
|
|
||||||
pyfuncitem.obj(*args, **kwargs)
|
|
||||||
finally:
|
|
||||||
self.tracer.end_tracing()
|
|
||||||
return True
|
|
||||||
|
|
||||||
def pytest_terminal_summary(self, terminalreporter):
|
|
||||||
if hasattr(self, 'tracer'):
|
|
||||||
tr = terminalreporter
|
|
||||||
from py.__.apigen.tracer.docstorage import DocStorageAccessor
|
|
||||||
terminalreporter.write_sep("=", "apigen: building documentation")
|
|
||||||
#assert hasattr(tr.config.option, 'apigenpath')
|
|
||||||
capture = py.io.StdCaptureFD()
|
|
||||||
try:
|
|
||||||
self.apigenscript.build(
|
|
||||||
tr.config,
|
|
||||||
self.pkgdir,
|
|
||||||
DocStorageAccessor(self.docstorage),
|
|
||||||
capture)
|
|
||||||
finally:
|
|
||||||
capture.reset()
|
|
||||||
terminalreporter.write_line("apigen build completed")
|
|
||||||
|
|
||||||
def test_generic(plugintester):
|
|
||||||
plugintester.apicheck(ApigenPlugin)
|
|
||||||
|
|
||||||
def test_functional_simple(testdir):
|
|
||||||
sub = testdir.tmpdir.mkdir("test_simple")
|
|
||||||
sub.join("__init__.py").write(py.code.Source("""
|
|
||||||
from py import initpkg
|
|
||||||
initpkg(__name__, exportdefs={
|
|
||||||
'simple.f': ('./test_simple.py', 'f',),
|
|
||||||
})
|
|
||||||
"""))
|
|
||||||
pyfile = sub.join("test_simple.py")
|
|
||||||
pyfile.write(py.code.Source("""
|
|
||||||
def f(arg):
|
|
||||||
pass
|
|
||||||
def test_f():
|
|
||||||
f(42)
|
|
||||||
"""))
|
|
||||||
testdir.makepyfile(conftest="pytest_plugins='apigen'")
|
|
||||||
result = testdir.runpytest(pyfile, "--apigen")
|
|
||||||
result.stdout.fnmatch_lines([
|
|
||||||
"*apigen: building documentation*",
|
|
||||||
"apigen build completed",
|
|
||||||
])
|
|
Loading…
Reference in New Issue