Add a test for a new documenter.

This commit is contained in:
Georg Brandl 2009-02-18 00:06:24 +01:00
parent b42e9303f4
commit 4b2864e87c
2 changed files with 34 additions and 5 deletions

View File

@ -404,7 +404,7 @@ class Documenter(object):
try:
ret.append((mname, self.get_attr(self.object, mname)))
except AttributeError:
self.directive.warn('missing attribute %s in object %s: '
self.directive.warn('missing attribute %s in object %s'
% (mname, self.fullname))
return False, ret
elif self.options.inherited_members:

View File

@ -14,9 +14,8 @@ from util import *
from docutils.statemachine import ViewList
from sphinx.ext.autodoc import AutoDirective, Documenter, ModuleDocumenter, \
ClassDocumenter, FunctionDocumenter, DataDocumenter, MethodDocumenter, \
AttributeDocumenter, cut_lines, between, ALL
from sphinx.ext.autodoc import AutoDirective, Documenter, add_documenter, \
ModuleLevelDocumenter, FunctionDocumenter, cut_lines, between, ALL
def setup_module():
@ -281,6 +280,33 @@ def test_docstring_processing():
app.disconnect(lid)
def test_new_documenter():
class MyDocumenter(ModuleLevelDocumenter):
objtype = 'integer'
directivetype = 'data'
priority = 100
@classmethod
def can_document_member(cls, member, membername, isattr, parent):
return isinstance(member, int)
def document_members(self, all_members=False):
return
add_documenter(MyDocumenter)
def assert_result_contains(item, objtype, name, **kw):
inst = AutoDirective._registry[objtype](directive, name)
inst.generate(**kw)
#print '\n'.join(directive.result)
assert len(_warnings) == 0, _warnings
assert item in directive.result
del directive.result[:]
options.members = ['integer']
assert_result_contains('.. data:: integer', 'module', 'test_autodoc')
def test_generate():
def assert_warns(warn_str, objtype, name, **kw):
inst = AutoDirective._registry[objtype](directive, name)
@ -312,6 +338,8 @@ def test_generate():
assert item in directive.result
del directive.result[:]
options.members = []
# no module found?
assert_warns("import for autodocumenting 'foobar'",
'function', 'foobar', more_content=None)
@ -405,13 +433,14 @@ def test_generate():
__all__ = ['Class']
integer = 1
class CustomEx(Exception):
"""My custom exception."""
def f(self):
"""Exception method."""
class Base(object):
def inheritedmeth(self):
"""Inherited function."""