diff --git a/src/pendulum/parsing/__init__.py b/src/pendulum/parsing/__init__.py index 761f52c5..3dc9dd01 100644 --- a/src/pendulum/parsing/__init__.py +++ b/src/pendulum/parsing/__init__.py @@ -212,6 +212,10 @@ def _parse_iso8601_interval(text: str) -> _Interval: raise ParserError("Invalid interval") first, last = text.split("/") + + if not first or not last: + raise ParserError("Invalid interval.") + start = end = duration = None if first[0] == "P": diff --git a/tests/parsing/test_parsing_duration.py b/tests/parsing/test_parsing_duration.py index ab8b9920..d6a0b73d 100644 --- a/tests/parsing/test_parsing_duration.py +++ b/tests/parsing/test_parsing_duration.py @@ -293,6 +293,14 @@ def test_parse_duration_invalid(): parse("P1Dasdfasdf") +def test_parse_interval_invalid(): + with pytest.raises(ParserError): + parse("/no_start") + + with pytest.raises(ParserError): + parse("no_end/") + + def test_parse_duration_fraction_only_allowed_on_last_component(): with pytest.raises(ParserError): parse("P2Y3M4DT5.5H6M7S")