-
-
Notifications
You must be signed in to change notification settings - Fork 62
/
Copy pathtest_build_docs_versions.py
118 lines (89 loc) · 3.05 KB
/
test_build_docs_versions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
from __future__ import annotations
import pytest
from build_docs import Version, Versions
@pytest.fixture
def versions() -> Versions:
return Versions([
Version(name="3.14", status="in development", branch_or_tag=""),
Version(name="3.13", status="stable", branch_or_tag=""),
Version(name="3.12", status="stable", branch_or_tag=""),
Version(name="3.11", status="security-fixes", branch_or_tag=""),
Version(name="3.10", status="security-fixes", branch_or_tag=""),
Version(name="3.9", status="security-fixes", branch_or_tag=""),
])
def test_reversed(versions: Versions) -> None:
# Act
output = list(reversed(versions))
# Assert
assert output[0].name == "3.9"
assert output[-1].name == "3.14"
def test_from_json() -> None:
# Arrange
json_data = {
"3.14": {
"branch": "main",
"pep": 745,
"status": "feature",
"first_release": "2025-10-01",
"end_of_life": "2030-10",
"release_manager": "Hugo van Kemenade",
},
"3.13": {
"branch": "3.13",
"pep": 719,
"status": "bugfix",
"first_release": "2024-10-07",
"end_of_life": "2029-10",
"release_manager": "Thomas Wouters",
},
}
# Act
versions = list(Versions.from_json(json_data))
# Assert
assert versions == [
Version(name="3.13", status="stable", branch_or_tag=""),
Version(name="3.14", status="in development", branch_or_tag=""),
]
def test_from_json_error() -> None:
# Arrange
json_data = {"2.8": {"branch": "2.8", "pep": 404, "status": "ex-release"}}
# Act / Assert
with pytest.raises(
ValueError,
match="Saw invalid version status 'ex-release', expected to be one of",
):
Versions.from_json(json_data)
def test_current_stable(versions) -> None:
# Act
current_stable = versions.current_stable
# Assert
assert current_stable.name == "3.13"
assert current_stable.status == "stable"
def test_current_dev(versions) -> None:
# Act
current_dev = versions.current_dev
# Assert
assert current_dev.name == "3.14"
assert current_dev.status == "in development"
def test_filter_default(versions) -> None:
# Act
filtered = versions.filter()
# Assert
assert filtered == [
Version(name="3.14", status="in development", branch_or_tag=""),
Version(name="3.13", status="stable", branch_or_tag=""),
Version(name="3.12", status="stable", branch_or_tag=""),
]
def test_filter_one(versions) -> None:
# Act
filtered = versions.filter(["3.13"])
# Assert
assert filtered == [Version(name="3.13", status="security-fixes", branch_or_tag="")]
def test_filter_multiple(versions) -> None:
# Act
filtered = versions.filter(["3.13", "3.14"])
# Assert
assert filtered == [
Version(name="3.14", status="in development", branch_or_tag=""),
Version(name="3.13", status="security-fixes", branch_or_tag=""),
]