@@ -373,7 +373,7 @@ def test_error_no_space_after_url(self) -> None:
373373 # THEN
374374 assert ctx .exconly () == (
375375 "packaging.requirements.InvalidRequirement: "
376- "Expected end or semicolon (after URL and whitespace)\n "
376+ "Expected semicolon (after URL and whitespace) or end \n "
377377 " name @ https://example.com/; extra == 'example'\n "
378378 " ~~~~~~~~~~~~~~~~~~~~~~^"
379379 )
@@ -521,7 +521,8 @@ def test_error_on_legacy_version_outside_triple_equals(self) -> None:
521521 # THEN
522522 assert ctx .exconly () == (
523523 "packaging.requirements.InvalidRequirement: "
524- "Expected end or semicolon (after version specifier)\n "
524+ "Expected comma (within version specifier), "
525+ "semicolon (after version specifier) or end\n "
525526 " name==1.0.org1\n "
526527 " ~~~~~^"
527528 )
@@ -537,7 +538,7 @@ def test_error_on_missing_version_after_op(self) -> None:
537538 # THEN
538539 assert ctx .exconly () == (
539540 "packaging.requirements.InvalidRequirement: "
540- "Expected end or semicolon (after name and no valid version specifier)\n "
541+ "Expected semicolon (after name with no version specifier) or end \n "
541542 " name==\n "
542543 " ^"
543544 )
@@ -553,7 +554,7 @@ def test_error_on_missing_op_after_name(self) -> None:
553554 # THEN
554555 assert ctx .exconly () == (
555556 "packaging.requirements.InvalidRequirement: "
556- "Expected end or semicolon (after name and no valid version specifier)\n "
557+ "Expected semicolon (after name with no version specifier) or end \n "
557558 " name 1.0\n "
558559 " ^"
559560 )
@@ -569,11 +570,29 @@ def test_error_on_random_char_after_specifier(self) -> None:
569570 # THEN
570571 assert ctx .exconly () == (
571572 "packaging.requirements.InvalidRequirement: "
572- "Expected end or semicolon (after version specifier)\n "
573+ "Expected comma (within version specifier), "
574+ "semicolon (after version specifier) or end\n "
573575 " name >= 1.0 #\n "
574576 " ~~~~~~~^"
575577 )
576578
579+ def test_error_on_missing_comma_in_specifier (self ) -> None :
580+ # GIVEN
581+ to_parse = "name >= 1.0 <= 2.0"
582+
583+ # WHEN
584+ with pytest .raises (InvalidRequirement ) as ctx :
585+ Requirement (to_parse )
586+
587+ # THEN
588+ assert ctx .exconly () == (
589+ "packaging.requirements.InvalidRequirement: "
590+ "Expected comma (within version specifier), "
591+ "semicolon (after version specifier) or end\n "
592+ " name >= 1.0 <= 2.0\n "
593+ " ~~~~~~~^"
594+ )
595+
577596
578597class TestRequirementBehaviour :
579598 def test_types_with_nothing (self ) -> None :
0 commit comments