From 1f00a1f4f30daf52d5a85efe3bd50c4a150853b1 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Thu, 4 Jun 2026 10:55:16 +0200 Subject: [PATCH] nanorst: do not require 2 empty lines at end of string after code block, fixes #9714 --- src/borg/helpers/nanorst.py | 6 ++++++ src/borg/testsuite/helpers/nanorst_test.py | 6 ++++++ 2 files changed, 12 insertions(+) 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"