Skip to content

Commit 00e3e24

Browse files
committed
error msg if version is missing
1 parent 9cb4647 commit 00e3e24

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

envs/failing-env2.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
channels:
2+
- conda-forge
3+
dependencies:
4+
- package_no_version_not_in_exclude

minimum_versions.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,23 @@ def parse_environment(text):
153153
return specs, warnings
154154

155155

156+
def assert_spec_has_version(environments):
157+
# packages in policy.exclude were already removed
158+
159+
for env, specs in environments.items():
160+
for spec in specs:
161+
if spec.version is None:
162+
163+
msg = (
164+
f"No minimum version found for '{spec.name}' in '{env}'. Either"
165+
" add a version or add to the list of excluded packages in the"
166+
" policy file."
167+
)
168+
169+
raise ValueError(msg)
170+
171+
172+
156173
def parse_policy(file):
157174
policy = yaml.safe_load(file)
158175
try:
@@ -344,6 +361,10 @@ def parse_date(string):
344361
@click.option("--today", type=parse_date, default=None)
345362
@click.option("--policy", "policy_file", type=click.File(mode="r"), required=True)
346363
def main(today, policy_file, environment_paths):
364+
_main(today, policy_file, environment_paths)
365+
366+
367+
def _main(today, policy_file, environment_paths):
347368
console = Console()
348369

349370
policy = parse_policy(policy_file)
@@ -360,6 +381,8 @@ def main(today, policy_file, environment_paths):
360381
for env, (specs, _) in parsed_environments.items()
361382
}
362383

384+
assert_spec_has_version(environments)
385+
363386
all_packages = list(
364387
dict.fromkeys(spec.name for spec in concat(environments.values()))
365388
)

test_script.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import datetime as dt
22

33
import pytest
4+
import pathlib
45
from rattler import Version
56

6-
from minimum_versions import Policy, Release, Spec
7+
from minimum_versions import Policy, Release, Spec, _main
78

89

910
@pytest.mark.parametrize(
@@ -27,6 +28,25 @@ def test_spec_parse(text, expected_spec, expected_name, expected_warnings):
2728
assert actual_warnings == expected_warnings
2829

2930

31+
def test_error_missing_version_or_exclude():
32+
33+
34+
msg = (
35+
"No minimum version found for 'package_no_version_not_in_exclude' in"
36+
" 'failing-env2'. Either add a version or add to the list of excluded packages"
37+
" in the policy file."
38+
)
39+
40+
with open("policy.yaml") as policy:
41+
42+
environment_paths = [pathlib.Path("envs/failing-env2.yaml")]
43+
44+
with pytest.raises(ValueError, match=msg):
45+
_main(dt.date(2023, 12, 12), policy, environment_paths=environment_paths)
46+
47+
48+
49+
3050
@pytest.mark.parametrize(
3151
["package_name", "policy", "today", "expected"],
3252
(
@@ -72,3 +92,5 @@ def test_policy_minimum_version(package_name, policy, today, expected):
7292
actual = policy.minimum_version(today, package_name, releases[package_name])
7393

7494
assert actual == expected
95+
96+

0 commit comments

Comments
 (0)