mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
test: Update testcase for autoclass_content
This commit is contained in:
35
tests/roots/test-ext-autodoc/target/autoclass_content.py
Normal file
35
tests/roots/test-ext-autodoc/target/autoclass_content.py
Normal file
@@ -0,0 +1,35 @@
|
||||
class A:
|
||||
"""A class having no __init__, no __new__"""
|
||||
|
||||
|
||||
class B:
|
||||
"""A class having __init__(no docstring), no __new__"""
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
|
||||
class C:
|
||||
"""A class having __init__, no __new__"""
|
||||
def __init__(self):
|
||||
"""__init__ docstring"""
|
||||
|
||||
|
||||
class D:
|
||||
"""A class having no __init__, __new__(no docstring)"""
|
||||
def __new__(cls):
|
||||
pass
|
||||
|
||||
|
||||
class E:
|
||||
"""A class having no __init__, __new__"""
|
||||
def __new__(cls):
|
||||
"""__new__ docstring"""
|
||||
|
||||
|
||||
class F:
|
||||
"""A class having both __init__ and __new__"""
|
||||
def __init__(self):
|
||||
"""__init__ docstring"""
|
||||
|
||||
def __new__(cls):
|
||||
"""__new__ docstring"""
|
||||
@@ -325,34 +325,6 @@ def test_get_doc():
|
||||
"""Döcstring"""
|
||||
assert getdocl('function', f) == ['Döcstring']
|
||||
|
||||
# class docstring: depends on config value which one is taken
|
||||
class C:
|
||||
"""Class docstring"""
|
||||
def __init__(self):
|
||||
"""Init docstring"""
|
||||
|
||||
def __new__(cls):
|
||||
"""New docstring"""
|
||||
directive.env.config.autoclass_content = 'class'
|
||||
assert getdocl('class', C) == ['Class docstring']
|
||||
directive.env.config.autoclass_content = 'init'
|
||||
assert getdocl('class', C) == ['Init docstring']
|
||||
directive.env.config.autoclass_content = 'both'
|
||||
assert getdocl('class', C) == ['Class docstring', '', 'Init docstring']
|
||||
|
||||
class D:
|
||||
"""Class docstring"""
|
||||
def __init__(self):
|
||||
"""Init docstring
|
||||
|
||||
Other
|
||||
lines
|
||||
"""
|
||||
|
||||
# Indentation is normalized for 'both'
|
||||
assert getdocl('class', D) == ['Class docstring', '', 'Init docstring',
|
||||
'', 'Other', ' lines']
|
||||
|
||||
# __init__ have signature at first line of docstring
|
||||
class E:
|
||||
"""Class docstring"""
|
||||
@@ -386,66 +358,6 @@ def test_get_doc():
|
||||
directive.env.config.autoclass_content = 'both'
|
||||
assert getdocl('class', E) == ['Class docstring', '', 'Init docstring']
|
||||
|
||||
# class does not have __init__ method
|
||||
class F:
|
||||
"""Class docstring"""
|
||||
|
||||
# docstring in the __init__ method of base class will be discard
|
||||
for f in (False, True):
|
||||
directive.env.config.autodoc_docstring_signature = f
|
||||
directive.env.config.autoclass_content = 'class'
|
||||
assert getdocl('class', F) == ['Class docstring']
|
||||
directive.env.config.autoclass_content = 'init'
|
||||
assert getdocl('class', F) == ['Class docstring']
|
||||
directive.env.config.autoclass_content = 'both'
|
||||
assert getdocl('class', F) == ['Class docstring']
|
||||
|
||||
# class has __init__ method with no docstring
|
||||
class G:
|
||||
"""Class docstring"""
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
# docstring in the __init__ method of base class will not be used
|
||||
for f in (False, True):
|
||||
directive.env.config.autodoc_docstring_signature = f
|
||||
directive.env.config.autoclass_content = 'class'
|
||||
assert getdocl('class', G) == ['Class docstring']
|
||||
directive.env.config.autoclass_content = 'init'
|
||||
assert getdocl('class', G) == ['Class docstring']
|
||||
directive.env.config.autoclass_content = 'both'
|
||||
assert getdocl('class', G) == ['Class docstring']
|
||||
|
||||
# class has __new__ method with docstring
|
||||
# class docstring: depends on config value which one is taken
|
||||
class H:
|
||||
"""Class docstring"""
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def __new__(cls):
|
||||
"""New docstring"""
|
||||
directive.env.config.autoclass_content = 'class'
|
||||
assert getdocl('class', H) == ['Class docstring']
|
||||
directive.env.config.autoclass_content = 'init'
|
||||
assert getdocl('class', H) == ['New docstring']
|
||||
directive.env.config.autoclass_content = 'both'
|
||||
assert getdocl('class', H) == ['Class docstring', '', 'New docstring']
|
||||
|
||||
# class has __init__ method without docstring and
|
||||
# __new__ method with docstring
|
||||
# class docstring: depends on config value which one is taken
|
||||
class I: # NOQA
|
||||
"""Class docstring"""
|
||||
def __new__(cls):
|
||||
"""New docstring"""
|
||||
directive.env.config.autoclass_content = 'class'
|
||||
assert getdocl('class', I) == ['Class docstring']
|
||||
directive.env.config.autoclass_content = 'init'
|
||||
assert getdocl('class', I) == ['New docstring']
|
||||
directive.env.config.autoclass_content = 'both'
|
||||
assert getdocl('class', I) == ['Class docstring', '', 'New docstring']
|
||||
|
||||
# verify that method docstrings get extracted in both normal case
|
||||
# and in case of bound method posing as a function
|
||||
class J: # NOQA
|
||||
|
||||
@@ -18,6 +18,156 @@ from test_autodoc import do_autodoc
|
||||
IS_PYPY = platform.python_implementation() == 'PyPy'
|
||||
|
||||
|
||||
@pytest.mark.sphinx('html', testroot='ext-autodoc')
|
||||
def test_autoclass_content_class(app):
|
||||
app.config.autoclass_content = 'class'
|
||||
options = {"members": None}
|
||||
actual = do_autodoc(app, 'module', 'target.autoclass_content', options)
|
||||
assert list(actual) == [
|
||||
'',
|
||||
'.. py:module:: target.autoclass_content',
|
||||
'',
|
||||
'',
|
||||
'.. py:class:: A',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having no __init__, no __new__',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: B()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having __init__(no docstring), no __new__',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: C()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having __init__, no __new__',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: D',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having no __init__, __new__(no docstring)',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: E',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having no __init__, __new__',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: F()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having both __init__ and __new__',
|
||||
' '
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.sphinx('html', testroot='ext-autodoc')
|
||||
def test_autoclass_content_init(app):
|
||||
app.config.autoclass_content = 'init'
|
||||
options = {"members": None}
|
||||
actual = do_autodoc(app, 'module', 'target.autoclass_content', options)
|
||||
assert list(actual) == [
|
||||
'',
|
||||
'.. py:module:: target.autoclass_content',
|
||||
'',
|
||||
'',
|
||||
'.. py:class:: A',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having no __init__, no __new__',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: B()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having __init__(no docstring), no __new__',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: C()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' __init__ docstring',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: D',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having no __init__, __new__(no docstring)',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: E',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' __new__ docstring',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: F()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' __init__ docstring',
|
||||
' '
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.sphinx('html', testroot='ext-autodoc')
|
||||
def test_autoclass_content_both(app):
|
||||
app.config.autoclass_content = 'both'
|
||||
options = {"members": None}
|
||||
actual = do_autodoc(app, 'module', 'target.autoclass_content', options)
|
||||
assert list(actual) == [
|
||||
'',
|
||||
'.. py:module:: target.autoclass_content',
|
||||
'',
|
||||
'',
|
||||
'.. py:class:: A',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having no __init__, no __new__',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: B()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having __init__(no docstring), no __new__',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: C()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having __init__, no __new__',
|
||||
' ',
|
||||
' __init__ docstring',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: D',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having no __init__, __new__(no docstring)',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: E',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having no __init__, __new__',
|
||||
' ',
|
||||
' __new__ docstring',
|
||||
' ',
|
||||
'',
|
||||
'.. py:class:: F()',
|
||||
' :module: target.autoclass_content',
|
||||
'',
|
||||
' A class having both __init__ and __new__',
|
||||
' ',
|
||||
' __init__ docstring',
|
||||
' '
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.sphinx('html', testroot='ext-autodoc')
|
||||
def test_autodoc_inherit_docstrings(app):
|
||||
assert app.config.autodoc_inherit_docstrings is True # default
|
||||
|
||||
Reference in New Issue
Block a user