Commit e2ca0611 by Sébastien Eustace

Fix parsing of platform_release markers

parent d792134b
......@@ -230,6 +230,7 @@ class EmptyMarker(BaseMarker):
class SingleMarker(BaseMarker):
_CONSTRAINT_RE = re.compile(r"(?i)^(~=|!=|>=?|<=?|==?|in|not in)?\s*(.+)$")
_VERSION_LIKE_MARKER_NAME = {"python_version", "platform_release"}
def __init__(self, name, constraint):
from poetry.packages.constraints import (
......@@ -248,10 +249,10 @@ class SingleMarker(BaseMarker):
self._value = m.group(2)
self._parser = parse_generic_constraint
if self._name == "python_version":
if name in self._VERSION_LIKE_MARKER_NAME:
self._parser = parse_constraint
if name == "python_version":
if self._operator in {"in", "not in"}:
versions = []
for v in re.split("[ ,]+", self._value):
......
......@@ -174,8 +174,8 @@ MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
MARKER_EXPR.setParseAction(
lambda s, l, t: parse_marker(s[t._original_start : t._original_end])
)
MARKER_SEPERATOR = SEMICOLON
MARKER = MARKER_SEPERATOR + MARKER_EXPR
MARKER_SEPARATOR = SEMICOLON
MARKER = MARKER_SEPARATOR + MARKER_EXPR
VERSION_AND_MARKER = VERSION_SPEC + Optional(MARKER)
URL_AND_MARKER = URL + Optional(MARKER)
......
......@@ -423,3 +423,18 @@ def test_validate(marker_string, environment, expected):
m = parse_marker(marker_string)
assert m.validate(environment) is expected
@pytest.mark.parametrize(
"marker, env",
[
(
'platform_release >= "9.0" and platform_release < "11.0"',
{"platform_release": "10.0"},
)
],
)
def test_parse_version_like_markers(marker, env):
m = parse_marker(marker)
assert m.validate(env)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment