mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
127 lines
4.0 KiB
Python
127 lines
4.0 KiB
Python
"""Test the patched directives."""
|
|
|
|
import pytest
|
|
from docutils import nodes
|
|
|
|
from sphinx.testing import restructuredtext
|
|
from sphinx.testing.util import assert_node
|
|
|
|
|
|
@pytest.mark.sphinx('html', testroot='root')
|
|
def test_code_directive(app):
|
|
# normal case
|
|
text = '.. code::\n\n print("hello world")\n'
|
|
|
|
doctree = restructuredtext.parse(app, text)
|
|
assert_node(doctree, [nodes.document, nodes.literal_block, 'print("hello world")'])
|
|
assert_node(doctree[0], language='default', highlight_args={})
|
|
|
|
# with language
|
|
text = '.. code:: python\n\n print("hello world")\n'
|
|
|
|
doctree = restructuredtext.parse(app, text)
|
|
assert_node(doctree, [nodes.document, nodes.literal_block, 'print("hello world")'])
|
|
assert_node(doctree[0], language='python', highlight_args={})
|
|
|
|
# :number-lines: option
|
|
text = '.. code:: python\n :number-lines:\n\n print("hello world")\n'
|
|
|
|
doctree = restructuredtext.parse(app, text)
|
|
assert_node(doctree, [nodes.document, nodes.literal_block, 'print("hello world")'])
|
|
assert_node(doctree[0], language='python', linenos=True, highlight_args={})
|
|
|
|
# :number-lines: option
|
|
text = '.. code:: python\n :number-lines: 5\n\n print("hello world")\n'
|
|
|
|
doctree = restructuredtext.parse(app, text)
|
|
assert_node(doctree, [nodes.document, nodes.literal_block, 'print("hello world")'])
|
|
assert_node(
|
|
doctree[0], language='python', linenos=True, highlight_args={'linenostart': 5}
|
|
)
|
|
|
|
|
|
@pytest.mark.sphinx('html', testroot='directive-csv-table')
|
|
def test_csv_table_directive(app):
|
|
# relative path from current document
|
|
text = '.. csv-table::\n :file: example.csv\n'
|
|
doctree = restructuredtext.parse(app, text, docname='subdir/index')
|
|
assert_node(
|
|
doctree,
|
|
(
|
|
[
|
|
nodes.table,
|
|
nodes.tgroup,
|
|
(nodes.colspec, nodes.colspec, nodes.colspec, [nodes.tbody, nodes.row]),
|
|
],
|
|
),
|
|
)
|
|
assert_node(
|
|
doctree[0][0][3][0],
|
|
(
|
|
[nodes.entry, nodes.paragraph, 'FOO'],
|
|
[nodes.entry, nodes.paragraph, 'BAR'],
|
|
[nodes.entry, nodes.paragraph, 'BAZ'],
|
|
),
|
|
)
|
|
|
|
# absolute path from source directory
|
|
text = '.. csv-table::\n :file: /example.csv\n'
|
|
doctree = restructuredtext.parse(app, text, docname='subdir/index')
|
|
assert_node(
|
|
doctree,
|
|
(
|
|
[
|
|
nodes.table,
|
|
nodes.tgroup,
|
|
(nodes.colspec, nodes.colspec, nodes.colspec, [nodes.tbody, nodes.row]),
|
|
],
|
|
),
|
|
)
|
|
assert_node(
|
|
doctree[0][0][3][0],
|
|
(
|
|
[nodes.entry, nodes.paragraph, 'foo'],
|
|
[nodes.entry, nodes.paragraph, 'bar'],
|
|
[nodes.entry, nodes.paragraph, 'baz'],
|
|
),
|
|
)
|
|
|
|
|
|
@pytest.mark.sphinx('html', testroot='root')
|
|
def test_math_directive(app):
|
|
# normal case
|
|
text = '.. math:: E = mc^2'
|
|
doctree = restructuredtext.parse(app, text)
|
|
assert_node(doctree, [nodes.document, nodes.math_block, 'E = mc^2\n\n'])
|
|
|
|
# :name: option
|
|
text = '.. math:: E = mc^2\n :name: eq1\n'
|
|
doctree = restructuredtext.parse(app, text)
|
|
assert_node(
|
|
doctree, [nodes.document, (nodes.target, [nodes.math_block, 'E = mc^2\n\n'])]
|
|
)
|
|
assert_node(doctree[1], nodes.math_block, docname='index', label='eq1', number=1)
|
|
|
|
# :label: option
|
|
text = '.. math:: E = mc^2\n :label: eq2\n'
|
|
doctree = restructuredtext.parse(app, text)
|
|
assert_node(
|
|
doctree, [nodes.document, (nodes.target, [nodes.math_block, 'E = mc^2\n\n'])]
|
|
)
|
|
assert_node(doctree[1], nodes.math_block, docname='index', label='eq2', number=2)
|
|
|
|
# :label: option without value
|
|
text = '.. math:: E = mc^2\n :label:\n'
|
|
doctree = restructuredtext.parse(app, text)
|
|
assert_node(
|
|
doctree, [nodes.document, (nodes.target, [nodes.math_block, 'E = mc^2\n\n'])]
|
|
)
|
|
assert_node(
|
|
doctree[1],
|
|
nodes.math_block,
|
|
ids=['equation-index-0'],
|
|
docname='index',
|
|
label='index:0',
|
|
number=3,
|
|
)
|