diff --git a/sphinxcontrib/openapi/renderers/_httpdomain.py b/sphinxcontrib/openapi/renderers/_httpdomain.py index 5118e15..6c797d7 100644 --- a/sphinxcontrib/openapi/renderers/_httpdomain.py +++ b/sphinxcontrib/openapi/renderers/_httpdomain.py @@ -281,7 +281,7 @@ def render_operation(self, endpoint, method, operation): yield "" if operation.get("summary"): - yield f" **{operation['summary']}**" + yield f" **{' '.join(operation['summary'].split())}**" yield "" if operation.get("description"): diff --git a/tests/renderers/httpdomain/test_render_operation.py b/tests/renderers/httpdomain/test_render_operation.py index 4855d00..e95093f 100644 --- a/tests/renderers/httpdomain/test_render_operation.py +++ b/tests/renderers/httpdomain/test_render_operation.py @@ -108,6 +108,59 @@ def test_render_operation_summary(testrenderer, oas_fragment): """.rstrip()) +def test_render_operation_summary_block_scalar(testrenderer, oas_fragment): + """Operation's 'summary' is stripped of its trailing newline.""" + + markup = textify( + testrenderer.render_operation( + "/evidences", + "post", + oas_fragment(""" + summary: | + Create an evidence. + responses: + '201': + description: An evidence created. + """), + ) + ) + assert markup == textwrap.dedent("""\ + .. http:post:: /evidences + + **Create an evidence.** + + :statuscode 201: + An evidence created. + """.rstrip()) + + +def test_render_operation_summary_multiline(testrenderer, oas_fragment): + """Operation's 'summary' is rendered as a single line.""" + + markup = textify( + testrenderer.render_operation( + "/evidences", + "post", + oas_fragment(""" + summary: | + Create + an evidence. + responses: + '201': + description: An evidence created. + """), + ) + ) + assert markup == textwrap.dedent("""\ + .. http:post:: /evidences + + **Create an evidence.** + + :statuscode 201: + An evidence created. + """.rstrip()) + + def test_render_operation_description(testrenderer, oas_fragment): """Operation's 'description' is rendered."""