diff options
author | Latosha Maltba <79100569+latosha-maltba@users.noreply.github.com> | 2021-09-21 09:19:53 +0000 |
---|---|---|
committer | Latosha Maltba <79100569+latosha-maltba@users.noreply.github.com> | 2021-09-21 09:19:53 +0000 |
commit | cf9b5b5be978355e518a1a8d506fbd967baecb54 (patch) | |
tree | 2da3d08ff8a4b2a40f4bc365a37627592bf64b6d | |
parent | 274ee481acb3394b8cb62e06d7978e297dd657f1 (diff) | |
download | sphinx-git-cf9b5b5be978355e518a1a8d506fbd967baecb54.tar.gz |
Add tests for :dedent: option of code-block directive
-rw-r--r-- | tests/roots/test-directive-code/dedent.rst | 64 | ||||
-rw-r--r-- | tests/test_directive_code.py | 26 |
2 files changed, 90 insertions, 0 deletions
diff --git a/tests/roots/test-directive-code/dedent.rst b/tests/roots/test-directive-code/dedent.rst new file mode 100644 index 000000000..f36e3e3ba --- /dev/null +++ b/tests/roots/test-directive-code/dedent.rst @@ -0,0 +1,64 @@ +dedent option +------------- + +.. code-block:: + + First line + Second line + Third line + Fourth line + +ReST has no fixed indent and only a change in indention is significant not the amount [1]_. +Thus, the following code inside the code block is not indent even it looks so with respect to the previous block. + +.. code-block:: + + First line + Second line + Third line + Fourth line + +Having an option "fixates" the indent to be 3 spaces, thus the code inside the code block is indented by 4 spaces. + +.. code-block:: + :class: dummy + + First line + Second line + Third line + Fourth line + +The code has 6 spaces indent, minus 4 spaces dedent should yield a 2 space indented code in the output. + +.. code-block:: + :dedent: 4 + + First line + Second line + Third line + Fourth line + +Dedenting by zero, should not strip any spaces and be a no-op. + +.. note:: + This can be used as an alternative to ``:class: dummy`` above, to fixate the ReST indention of the block. + +.. code-block:: + :dedent: 0 + + First line + Second line + Third line + Fourth line + +Dedent without argument should autostrip common whitespace at the beginning. + +.. code-block:: + :dedent: + + First line + Second line + Third line + Fourth line + +.. [1] https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#indentation diff --git a/tests/test_directive_code.py b/tests/test_directive_code.py index a011a31e8..95b6455d2 100644 --- a/tests/test_directive_code.py +++ b/tests/test_directive_code.py @@ -580,3 +580,29 @@ def test_linenothreshold(app, status, warning): # literal include not using linenothreshold (no line numbers) assert ('<span></span><span class="c1"># Very small literal include ' '(linenothreshold check)</span>' in html) + +@pytest.mark.sphinx('dummy', testroot='directive-code') +def test_code_block_dedent(app, status, warning): + app.builder.build(['dedent']) + doctree = app.env.get_doctree('dedent') + codeblocks = list(doctree.traverse(nodes.literal_block)) + # Note: comparison string should not have newlines at the beginning or end + text_0_indent = '''First line +Second line + Third line +Fourth line''' + text_2_indent = ''' First line + Second line + Third line + Fourth line''' + text_4_indent = ''' First line + Second line + Third line + Fourth line''' + + assert codeblocks[0].astext() == text_0_indent + assert codeblocks[1].astext() == text_0_indent + assert codeblocks[2].astext() == text_4_indent + assert codeblocks[3].astext() == text_2_indent + assert codeblocks[4].astext() == text_4_indent + assert codeblocks[5].astext() == text_0_indent |