diff options
author | Takayuki Shimizukawa <shimizukawa@gmail.com> | 2013-02-03 12:48:39 +0900 |
---|---|---|
committer | Takayuki Shimizukawa <shimizukawa@gmail.com> | 2013-02-03 12:48:39 +0900 |
commit | e47f434c3241911e21bae65294687f1180fce2a3 (patch) | |
tree | 83c63aa7a77a46dcb13aec504e208ee85ac6a5db /tests/test_autodoc.py | |
parent | 6945551c20357906979e1857b512f2a27d30890a (diff) | |
download | sphinx-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.py | 42 |
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) |