diff --git a/src/borg/helpers/nanorst.py b/src/borg/helpers/nanorst.py index dc2f6d1a7..3d7c3316e 100644 --- a/src/borg/helpers/nanorst.py +++ b/src/borg/helpers/nanorst.py @@ -159,6 +159,12 @@ def rst_to_text(text, state_hook=None, references=None): state = "text" out.write(char) + if state == "code-block": + # without this, we would need 2 empty lines after a code block, + # even if it is at the end of the string anyway. + state_hook(state, "text", out) + state = "text" + assert state == "text", "Invalid final state %r (This usually indicates unmatched */**)" % state return out.getvalue() diff --git a/src/borg/testsuite/helpers/nanorst_test.py b/src/borg/testsuite/helpers/nanorst_test.py index dad408db0..b47db6c4a 100644 --- a/src/borg/testsuite/helpers/nanorst_test.py +++ b/src/borg/testsuite/helpers/nanorst_test.py @@ -36,3 +36,9 @@ def test_undefined_ref(): with pytest.raises(ValueError) as exc_info: rst_to_text("See :ref:`foo`.") assert "Undefined reference" in str(exc_info.value) + + +def test_code_block_end_of_string(): + # check that there is no unexpected exception if a code block + # is not followed by blank lines, but the string just ends. + assert rst_to_text("This is a code block::\n\n borg --help") == "This is a code block:\n\n borg --help"