Skip to content

Commit 0a6cfd9

Browse files
authored
convert versions passed to overrides to Version (#54)
* wrap the override in `Version` * tests for `parse_policy` * convert overrides to `Version` objects * revert the conversion of the override
1 parent 2f54201 commit 0a6cfd9

File tree

2 files changed

+59
-2
lines changed

2 files changed

+59
-2
lines changed

minimum_versions/policy.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import yaml
66
from dateutil.relativedelta import relativedelta
77
from rattler import Version
8+
from tlz.dicttoolz import valmap
89

910
schema = {
1011
"type": "object",
@@ -115,7 +116,7 @@ def parse_policy(f):
115116
package_months=package_policy["packages"],
116117
default_months=package_policy["default"],
117118
ignored_violations=package_policy["ignored_violations"],
118-
overrides=package_policy["overrides"],
119+
overrides=valmap(Version, package_policy["overrides"]),
119120
)
120121

121122

minimum_versions/tests/test_policy.py

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import datetime as dt
2+
import textwrap
3+
from io import StringIO
24

35
import pytest
46
from rattler import Version
57

6-
from minimum_versions.policy import Policy
8+
from minimum_versions.policy import Policy, parse_policy
79
from minimum_versions.release import Release
810

911

@@ -52,3 +54,57 @@ def test_policy_minimum_version(package_name, policy, today, expected):
5254
actual = policy.minimum_version(today, package_name, releases[package_name])
5355

5456
assert actual == expected
57+
58+
59+
@pytest.mark.parametrize(
60+
["content", "expected"],
61+
(
62+
pytest.param(
63+
"""\
64+
channels: [conda-forge]
65+
platforms: [noarch]
66+
policy:
67+
packages:
68+
numpy: 12
69+
default: 6
70+
overrides: {}
71+
exclude: []
72+
ignored_violations: []
73+
""",
74+
Policy(
75+
{"numpy": 12},
76+
6,
77+
overrides={},
78+
channels=["conda-forge"],
79+
platforms=["noarch"],
80+
),
81+
id="normal",
82+
),
83+
pytest.param(
84+
"""\
85+
channels: [conda-forge]
86+
platforms: [noarch]
87+
policy:
88+
packages:
89+
numpy: 12
90+
default: 6
91+
overrides:
92+
scipy: "1.2.1"
93+
exclude: []
94+
ignored_violations: []
95+
""",
96+
Policy(
97+
{"numpy": 12},
98+
6,
99+
overrides={"scipy": Version("1.2.1")},
100+
channels=["conda-forge"],
101+
platforms=["noarch"],
102+
),
103+
id="overrides",
104+
),
105+
),
106+
)
107+
def test_parse_policy(content, expected):
108+
f = StringIO(textwrap.dedent(content.rstrip()))
109+
actual = parse_policy(f)
110+
assert actual == expected

0 commit comments

Comments
 (0)