Skip to content

Commit 51da18a

Browse files
committed
tests for most of the functions in minimum_versions.release
1 parent afd85b4 commit 51da18a

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
import datetime as dt
2+
from dataclasses import dataclass
3+
4+
import pytest
5+
from rattler import PackageName, Version
6+
7+
from minimum_versions import release
8+
9+
10+
@dataclass
11+
class FakePackageRecord:
12+
name: PackageName
13+
version: Version
14+
build_number: int
15+
timestamp: dt.datetime
16+
17+
18+
@pytest.fixture
19+
def timestamps():
20+
yield [
21+
dt.datetime(2025, 12, 2, 20, 24, 40),
22+
dt.datetime(2025, 12, 2, 20, 25, 40),
23+
dt.datetime(2025, 12, 2, 20, 20, 40),
24+
]
25+
26+
27+
@pytest.fixture
28+
def records(timestamps):
29+
yield [
30+
FakePackageRecord(
31+
name=PackageName("test1"),
32+
version=Version("1.0.0"),
33+
build_number=1,
34+
timestamp=timestamps[0],
35+
),
36+
FakePackageRecord(
37+
name=PackageName("test1"),
38+
version=Version("1.0.1"),
39+
build_number=0,
40+
timestamp=None,
41+
),
42+
FakePackageRecord(
43+
name=PackageName("test2"),
44+
version=Version("1.0.0"),
45+
build_number=0,
46+
timestamp=timestamps[2],
47+
),
48+
]
49+
50+
51+
@pytest.fixture
52+
def releases(timestamps):
53+
yield {
54+
"test1": [
55+
release.Release(
56+
version=Version("1.0.0"), build_number=1, timestamp=timestamps[0]
57+
),
58+
release.Release(version=Version("1.0.1"), build_number=0, timestamp=None),
59+
],
60+
"test2": [
61+
release.Release(
62+
version=Version("1.0.0"), build_number=0, timestamp=timestamps[2]
63+
)
64+
],
65+
}
66+
67+
68+
def test_release_from_repodata_record():
69+
repo_data = FakePackageRecord(
70+
name=PackageName("test"),
71+
version=Version("1.0.1"),
72+
build_number=0,
73+
timestamp=dt.datetime(2025, 12, 2, 20, 24, 40),
74+
)
75+
76+
actual = release.Release.from_repodata_record(repo_data)
77+
78+
assert actual.version == repo_data.version
79+
assert actual.build_number == repo_data.build_number
80+
assert actual.timestamp == repo_data.timestamp
81+
82+
83+
def test_group_packages(records, releases):
84+
actual = release.group_packages(records)
85+
expected = releases
86+
87+
assert actual == expected
88+
89+
90+
@pytest.mark.parametrize(
91+
["predicate", "expected"],
92+
(
93+
(
94+
lambda r: r.timestamp is None,
95+
{"test1": [release.Release(Version("1.0.1"), 0, None)], "test2": []},
96+
),
97+
(
98+
lambda r: r.build_number == 1,
99+
{
100+
"test1": [
101+
release.Release(
102+
Version("1.0.0"), 1, dt.datetime(2025, 12, 2, 20, 24, 40)
103+
)
104+
],
105+
"test2": [],
106+
},
107+
),
108+
),
109+
)
110+
def test_filter_releases(releases, predicate, expected):
111+
actual = release.filter_releases(predicate, releases)
112+
assert actual == expected

0 commit comments

Comments
 (0)