summaryrefslogtreecommitdiff
path: root/tests/test_autodoc.py
diff options
context:
space:
mode:
authorTakayuki Shimizukawa <shimizukawa@gmail.com>2013-02-03 12:48:39 +0900
committerTakayuki Shimizukawa <shimizukawa@gmail.com>2013-02-03 12:48:39 +0900
commite47f434c3241911e21bae65294687f1180fce2a3 (patch)
tree83c63aa7a77a46dcb13aec504e208ee85ac6a5db /tests/test_autodoc.py
parent6945551c20357906979e1857b512f2a27d30890a (diff)
downloadsphinx-git-e47f434c3241911e21bae65294687f1180fce2a3.tar.gz
add test for pull request #111: Respect add_autodoc_attrgetter() even when inherited-members is set
Diffstat (limited to 'tests/test_autodoc.py')
-rw-r--r--tests/test_autodoc.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py
index be6c4ec9c..04e24ee39 100644
--- a/tests/test_autodoc.py
+++ b/tests/test_autodoc.py
@@ -14,6 +14,7 @@ import sys
from StringIO import StringIO
from util import *
+from nose.tools import with_setup
from docutils.statemachine import ViewList
@@ -342,6 +343,47 @@ def test_new_documenter():
assert_result_contains('.. py:data:: integer', 'module', 'test_autodoc')
+def cleanup_test_attrgetter_using():
+ del processed_docstrings[:]
+ del processed_signatures[:]
+ del directive.result[:]
+ del _warnings[:]
+ AutoDirective._special_attrgetters.clear()
+ setup_module()
+
+@with_setup(None, cleanup_test_attrgetter_using)
+def test_attrgetter_using():
+ def assert_getter_works(objtype, name, obj, attrs=[], **kw):
+ getattr_spy = []
+ def special_getattr(obj, name, *defargs):
+ if name in attrs:
+ getattr_spy.append((obj, name))
+ return None
+ return getattr(obj, name, *defargs)
+ AutoDirective._special_attrgetters[type] = special_getattr
+
+ del getattr_spy[:]
+ inst = AutoDirective._registry[objtype](directive, name)
+ inst.generate(**kw)
+
+ hooked_members = [s[1] for s in getattr_spy]
+ documented_members = [s[1] for s in processed_signatures]
+ for attr in attrs:
+ fullname = '.'.join((name, attr))
+ assert attr in hooked_members
+ assert fullname not in documented_members, \
+ '%r was not hooked by special_attrgetter function' % fullname
+
+ options.members = ALL
+ options.inherited_members = False
+ assert_getter_works('class', 'test_autodoc.Class', Class,
+ ['meth'])
+
+ options.inherited_members = True
+ assert_getter_works('class', 'test_autodoc.Class', Class,
+ ['meth', 'inheritedmeth'])
+
+
def test_generate():
def assert_warns(warn_str, objtype, name, **kw):
inst = AutoDirective._registry[objtype](directive, name)