From 4104ebe3e246079e60214f377a5c2aa4f8eafb70 Mon Sep 17 00:00:00 2001 From: Arpit Jain Date: Thu, 8 Oct 2026 19:48:29 -0400 Subject: [PATCH] Handle a blank endpoint or parameter description without crashing Co-Authored-By: Claude Signed-off-by: Arpit Jain --- src/ferry_cli/helpers/ferry_parser.py | 2 +- tests/test_ferry_parser.py | 31 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 tests/test_ferry_parser.py diff --git a/src/ferry_cli/helpers/ferry_parser.py b/src/ferry_cli/helpers/ferry_parser.py index f3524f8..b11b3c3 100755 --- a/src/ferry_cli/helpers/ferry_parser.py +++ b/src/ferry_cli/helpers/ferry_parser.py @@ -62,7 +62,7 @@ def parse_description( name: str = "Endpoint", method: str = "", description: str = "" ) -> str: description_lines = textwrap.wrap(description, width=60) - first_line = description_lines[0] + first_line = description_lines[0] if description_lines else "" rest_lines = description_lines[1:] endpoint_description = name.replace("/", "") diff --git a/tests/test_ferry_parser.py b/tests/test_ferry_parser.py new file mode 100644 index 0000000..e91190a --- /dev/null +++ b/tests/test_ferry_parser.py @@ -0,0 +1,31 @@ +import pytest + +from ferry_cli.helpers.ferry_parser import FerryParser + + +@pytest.mark.parametrize("description", ["", " ", "\n\t "]) +def test_parse_description_blank(description): + """A blank description should not abort endpoint generation.""" + result = FerryParser.parse_description( + name="testEndpoint", method="GET", description=description + ) + assert "testEndpoint" in result + assert "(GET)" in result + + +def test_parse_description_wraps_long_text(): + description = "word " * 40 + result = FerryParser.parse_description( + name="testEndpoint", method="GET", description=description + ) + assert len(result.splitlines()) > 1 + + +def test_set_arguments_with_blank_param_description(): + """Swagger parameters sometimes carry an empty description.""" + parser = FerryParser.create(description="test") + parser.set_arguments( + [{"name": "unitname", "type": "string", "required": False, "description": ""}] + ) + args = parser.parse_args(["--unitname", "testunit"]) + assert args.unitname == "testunit"