Unverified Commit ea9726dc authored by Sébastien Eustace's avatar Sébastien Eustace
Browse files

Add support for disjunctive python constraint

parent d348518b
Loading
Loading
Loading
Loading
+3 −3
Changes for tests/installation/fixtures/with-optional-dependencies.test: 3 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ python-versions = "*"
platform = "*"

[package.requirements]
python = ">= 2.7.0.0 < 2.8.0.0"
python = ">= 2.7.0.0, < 2.8.0.0"

[[package]]
name = "C"
@@ -32,7 +32,7 @@ platform = "*"
D = "^1.2"

[package.requirements]
python = ">= 3.6.0.0 < 4.0.0.0"
python = ">= 3.6.0.0, < 4.0.0.0"

[[package]]
name = "D"
@@ -44,7 +44,7 @@ python-versions = "*"
platform = "*"

[package.requirements]
python = ">= 3.6.0.0 < 4.0.0.0"
python = ">= 3.6.0.0, < 4.0.0.0"

[metadata]
python-versions = "~2.7 || ^3.4"
+19 −0
Changes for tests/semver/test_version_parser.py: 19 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -60,6 +60,25 @@ def test_parse_constraints_wildcard(parser, input, min, max):
    assert str(parser.parse_constraints(input)) == str(expected)


@pytest.mark.parametrize(
    'input,min,max',
    [
        ('!=v2.*', Constraint('<', '2.0.0.0'), Constraint('>=', '3.0.0.0')),
        ('!=2.*.*', Constraint('<', '2.0.0.0'), Constraint('>=', '3.0.0.0')),
        ('!=2.0.*', Constraint('<', '2.0.0.0'), Constraint('>=', '2.1.0.0')),
        ('!=0.*', None, Constraint('>=', '1.0.0.0')),
        ('!=0.*.*', None, Constraint('>=', '1.0.0.0')),
    ]
)
def test_parse_constraints_negative_wildcard(parser, input, min, max):
    if min:
        expected = MultiConstraint((min, max), conjunctive=False)
    else:
        expected = max

    assert str(parser.parse_constraints(input)) == str(expected)


@pytest.mark.parametrize(
    'input,min,max',
    [
+1 −1
Changes for tests/test_poetry.py: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ def test_poetry():
    assert package.keywords == ["packaging", "dependency", "poetry"]

    assert package.python_versions == '~2.7 || ^3.6'
    assert str(package.python_constraint) == '>= 2.7.0.0 < 2.8.0.0 || >= 3.6.0.0 < 4.0.0.0'
    assert str(package.python_constraint) == '>= 2.7.0.0, < 2.8.0.0 || >= 3.6.0.0, < 4.0.0.0'

    dependencies = package.requires
    cleo = dependencies[0]
+0 −0

Empty file added.

+11 −0
Changes for tests/version/test_helpers.py: 11 added lines, 0 removed lines.
Original line number Diff line number Diff line
from poetry.version.helpers import format_python_constraint
from poetry.semver.version_parser import VersionParser


def test_format_python_constraint():
    parser = VersionParser()
    constraint = parser.parse_constraints('~2.7 || ^3.6')

    result = format_python_constraint(constraint)

    assert result == '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*'