Skip to content

Commit 88b786f

Browse files
authored
fix: emit a warning when no content is rendered (#231)
* fix: emit a warning when no content is rendered Fixes #149 Signed-off-by: Mike Fiedler <[email protected]> * feat: emit empty warning only if no warnings exist This is a bit more gymnastics than I think is warranted, but wanted to play out the example. Needing to inspect the stream proved more complex than originally expected, as each version confroms to a slightly different interface. - Updated the outpout string to be clearer - Added test for empty RST file Signed-off-by: Mike Fiedler <[email protected]> * refactor: simplify now that distutils is gone Signed-off-by: Mike Fiedler <[email protected]>
1 parent 7512742 commit 88b786f

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

readme_renderer/rst.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,7 @@ def render(
129129
if rendered:
130130
return clean(rendered)
131131
else:
132+
# If the warnings stream is empty, docutils had none, so add ours.
133+
if not stream.tell():
134+
stream.write("No content rendered from RST source.")
132135
return None

tests/test_rst.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,33 @@ def test_rst_raw():
5353
""", stream=warnings) is None
5454

5555
assert '"raw" directive disabled' in warnings.getvalue()
56+
57+
58+
def test_rst_empty_file():
59+
warnings = io.StringIO()
60+
assert render("", stream=warnings) is None
61+
62+
assert "No content rendered from RST source." in warnings.getvalue()
63+
64+
65+
def test_rst_header_only():
66+
warnings = io.StringIO()
67+
assert render("""
68+
Header
69+
======
70+
""", stream=warnings) is None
71+
72+
assert "No content rendered from RST source." in warnings.getvalue()
73+
74+
75+
def test_header_and_malformed_emits_docutils_warning_only():
76+
warnings = io.StringIO()
77+
assert render("""
78+
Header
79+
======
80+
81+
======
82+
""", stream=warnings) is None
83+
84+
assert len(warnings.getvalue().splitlines()) == 1
85+
assert "No content rendered from RST source." not in warnings.getvalue()

0 commit comments

Comments
 (0)