summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES3
-rw-r--r--tests/test_autodoc.py42
2 files changed, 45 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 1dfc6b06d..db0fa7e92 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
Release 1.2 (in development)
============================
+* PR#111: Respect add_autodoc_attrgetter() even when inherited-members is set.
+ Thanks to A. Jesse Jiryu Davis.
+
* #1090: Fix gettext does not extract glossary terms.
* #1070: Avoid un-pickling issues when running Python 3 and the saved
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)