mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
81 lines
3.2 KiB
Python
81 lines
3.2 KiB
Python
|
"""
|
||
|
test_domain_c
|
||
|
~~~~~~~~~~~~~
|
||
|
|
||
|
Tests the C Domain
|
||
|
|
||
|
:copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
|
||
|
:license: BSD, see LICENSE for details.
|
||
|
"""
|
||
|
|
||
|
from docutils import nodes
|
||
|
|
||
|
from sphinx import addnodes
|
||
|
from sphinx.addnodes import (
|
||
|
desc, desc_addname, desc_annotation, desc_content, desc_name, desc_optional,
|
||
|
desc_parameter, desc_parameterlist, desc_returns, desc_signature, desc_type,
|
||
|
pending_xref
|
||
|
)
|
||
|
from sphinx.testing import restructuredtext
|
||
|
from sphinx.testing.util import assert_node
|
||
|
|
||
|
|
||
|
def test_cfunction(app):
|
||
|
text = (".. c:function:: PyObject* "
|
||
|
"PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)")
|
||
|
doctree = restructuredtext.parse(app, text)
|
||
|
assert_node(doctree,
|
||
|
(addnodes.index,
|
||
|
[desc, ([desc_signature, ([desc_type, ([pending_xref, "PyObject"],
|
||
|
"* ")],
|
||
|
[desc_name, "PyType_GenericAlloc"],
|
||
|
[desc_parameterlist, (desc_parameter,
|
||
|
desc_parameter)])],
|
||
|
desc_content)]))
|
||
|
assert_node(doctree[1], addnodes.desc, desctype="function",
|
||
|
domain="c", objtype="function", noindex=False)
|
||
|
assert_node(doctree[1][0][2][0],
|
||
|
[desc_parameter, ([pending_xref, "PyTypeObject"],
|
||
|
[nodes.emphasis, "\xa0*type"])])
|
||
|
assert_node(doctree[1][0][2][1],
|
||
|
[desc_parameter, ([pending_xref, "Py_ssize_t"],
|
||
|
[nodes.emphasis, "\xa0nitems"])])
|
||
|
|
||
|
domain = app.env.get_domain('c')
|
||
|
entry = domain.objects.get('PyType_GenericAlloc')
|
||
|
assert entry == ('index', 'c-pytype-genericalloc', 'function')
|
||
|
|
||
|
|
||
|
def test_cmember(app):
|
||
|
text = ".. c:member:: PyObject* PyTypeObject.tp_bases"
|
||
|
doctree = restructuredtext.parse(app, text)
|
||
|
assert_node(doctree,
|
||
|
(addnodes.index,
|
||
|
[desc, ([desc_signature, ([desc_type, ([pending_xref, "PyObject"],
|
||
|
"* ")],
|
||
|
[desc_name, "PyTypeObject.tp_bases"])],
|
||
|
desc_content)]))
|
||
|
assert_node(doctree[1], addnodes.desc, desctype="member",
|
||
|
domain="c", objtype="member", noindex=False)
|
||
|
|
||
|
domain = app.env.get_domain('c')
|
||
|
entry = domain.objects.get('PyTypeObject.tp_bases')
|
||
|
assert entry == ('index', 'c-pytypeobject-tp-bases', 'member')
|
||
|
|
||
|
|
||
|
def test_cvar(app):
|
||
|
text = ".. c:var:: PyObject* PyClass_Type"
|
||
|
doctree = restructuredtext.parse(app, text)
|
||
|
assert_node(doctree,
|
||
|
(addnodes.index,
|
||
|
[desc, ([desc_signature, ([desc_type, ([pending_xref, "PyObject"],
|
||
|
"* ")],
|
||
|
[desc_name, "PyClass_Type"])],
|
||
|
desc_content)]))
|
||
|
assert_node(doctree[1], addnodes.desc, desctype="var",
|
||
|
domain="c", objtype="var", noindex=False)
|
||
|
|
||
|
domain = app.env.get_domain('c')
|
||
|
entry = domain.objects.get('PyClass_Type')
|
||
|
assert entry == ('index', 'c-pyclass-type', 'var')
|