summaryrefslogtreecommitdiff
path: root/tests/test_domain_py.py
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2020-02-09 00:57:53 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2020-02-09 00:57:53 +0900
commit2e87ee85a22279ee4ecc658f830520a88c90236d (patch)
tree124b080e0203aead764362ba1e5bd11da62822e5 /tests/test_domain_py.py
parentd4aeae475943aef9b935f7487baf90ccc1c58b42 (diff)
parent1e5342faa9147c7a3c60e41dc7671e88f6795855 (diff)
downloadsphinx-git-2e87ee85a22279ee4ecc658f830520a88c90236d.tar.gz
Merge branch '2.0'
Diffstat (limited to 'tests/test_domain_py.py')
-rw-r--r--tests/test_domain_py.py62
1 files changed, 49 insertions, 13 deletions
diff --git a/tests/test_domain_py.py b/tests/test_domain_py.py
index 3ff29cbb7..f78c1e9d8 100644
--- a/tests/test_domain_py.py
+++ b/tests/test_domain_py.py
@@ -105,19 +105,22 @@ def test_domain_py_xrefs(app, status, warning):
'mod_child_2', 'meth')
assert_refnode(refnodes[4], 'module_a.submodule', 'ModTopLevel',
'module_a.submodule.ModTopLevel.mod_child_1', 'meth')
- assert_refnode(refnodes[5], 'module_b.submodule', None,
+ assert_refnode(refnodes[5], 'module_a.submodule', 'ModTopLevel',
+ 'prop', 'attr')
+ assert_refnode(refnodes[6], 'module_a.submodule', 'ModTopLevel',
+ 'prop', 'meth')
+ assert_refnode(refnodes[7], 'module_b.submodule', None,
'ModTopLevel', 'class')
- assert_refnode(refnodes[6], 'module_b.submodule', 'ModTopLevel',
+ assert_refnode(refnodes[8], 'module_b.submodule', 'ModTopLevel',
'ModNoModule', 'class')
- assert_refnode(refnodes[7], False, False, 'int', 'class')
- assert_refnode(refnodes[8], False, False, 'tuple', 'class')
- assert_refnode(refnodes[9], False, False, 'str', 'class')
- assert_refnode(refnodes[10], False, False, 'float', 'class')
- assert_refnode(refnodes[11], False, False, 'list', 'class')
- assert_refnode(refnodes[11], False, False, 'list', 'class')
- assert_refnode(refnodes[12], False, False, 'ModTopLevel', 'class')
- assert_refnode(refnodes[13], False, False, 'index', 'doc', domain='std')
- assert len(refnodes) == 14
+ assert_refnode(refnodes[9], False, False, 'int', 'class')
+ assert_refnode(refnodes[10], False, False, 'tuple', 'class')
+ assert_refnode(refnodes[11], False, False, 'str', 'class')
+ assert_refnode(refnodes[12], False, False, 'float', 'class')
+ assert_refnode(refnodes[13], False, False, 'list', 'class')
+ assert_refnode(refnodes[14], False, False, 'ModTopLevel', 'class')
+ assert_refnode(refnodes[15], False, False, 'index', 'doc', domain='std')
+ assert len(refnodes) == 16
doctree = app.env.get_doctree('module_option')
refnodes = list(doctree.traverse(addnodes.pending_xref))
@@ -161,6 +164,21 @@ def test_domain_py_objects(app, status, warning):
assert objects['NestedParentB.child_1'] == ('roles', 'method')
+@pytest.mark.sphinx('html', testroot='domain-py')
+def test_resolve_xref_for_properties(app, status, warning):
+ app.builder.build_all()
+
+ content = (app.outdir / 'module.html').text()
+ assert ('Link to <a class="reference internal" href="#module_a.submodule.ModTopLevel.prop"'
+ ' title="module_a.submodule.ModTopLevel.prop">'
+ '<code class="xref py py-attr docutils literal notranslate"><span class="pre">'
+ 'prop</span> <span class="pre">attribute</span></code></a>' in content)
+ assert ('Link to <a class="reference internal" href="#module_a.submodule.ModTopLevel.prop"'
+ ' title="module_a.submodule.ModTopLevel.prop">'
+ '<code class="xref py py-meth docutils literal notranslate"><span class="pre">'
+ 'prop</span> <span class="pre">method</span></code></a>' in content)
+
+
@pytest.mark.sphinx('dummy', testroot='domain-py')
def test_domain_py_find_obj(app, status, warning):
@@ -268,6 +286,20 @@ def test_exceptions_module_is_ignored(app):
def test_pydata_signature(app):
text = (".. py:data:: version\n"
+ " :type: int\n"
+ " :value: 1\n")
+ doctree = restructuredtext.parse(app, text)
+ assert_node(doctree, (addnodes.index,
+ [desc, ([desc_signature, ([desc_name, "version"],
+ [desc_annotation, ": int"],
+ [desc_annotation, " = 1"])],
+ desc_content)]))
+ assert_node(doctree[1], addnodes.desc, desctype="data",
+ domain="py", objtype="data", noindex=False)
+
+
+def test_pydata_signature_old(app):
+ text = (".. py:data:: version\n"
" :annotation: = 1\n")
doctree = restructuredtext.parse(app, text)
assert_node(doctree, (addnodes.index,
@@ -463,7 +495,9 @@ def test_pystaticmethod(app):
def test_pyattribute(app):
text = (".. py:class:: Class\n"
"\n"
- " .. py:attribute:: attr\n")
+ " .. py:attribute:: attr\n"
+ " :type: str\n"
+ " :value: ''\n")
domain = app.env.get_domain('py')
doctree = restructuredtext.parse(app, text)
assert_node(doctree, (addnodes.index,
@@ -473,7 +507,9 @@ def test_pyattribute(app):
desc)])]))
assert_node(doctree[1][1][0], addnodes.index,
entries=[('single', 'attr (Class attribute)', 'Class.attr', '', None)])
- assert_node(doctree[1][1][1], ([desc_signature, desc_name, "attr"],
+ assert_node(doctree[1][1][1], ([desc_signature, ([desc_name, "attr"],
+ [desc_annotation, ": str"],
+ [desc_annotation, " = ''"])],
[desc_content, ()]))
assert 'Class.attr' in domain.objects
assert domain.objects['Class.attr'] == ('index', 'attribute')