-
-
Notifications
You must be signed in to change notification settings - Fork 67
Expand file tree
/
Copy pathtest_build_docs_versions.py
More file actions
132 lines (101 loc) · 3.44 KB
/
test_build_docs_versions.py
File metadata and controls
132 lines (101 loc) · 3.44 KB
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
from __future__ import annotations
import logging
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_warning(caplog) -> None:
# Arrange
json_data = {
"2.8": {"branch": "2.8", "pep": 404, "status": "ex-release"},
"3.16": {
"branch": "",
"pep": 826,
"status": "planned",
"first_release": "2027-10-06",
"end_of_life": "2032-10",
"release_manager": "Savannah Ostrowski",
},
}
# Act
with caplog.at_level(logging.INFO):
versions = list(Versions.from_json(json_data))
# Assert: both should be skipped
assert versions == []
assert "Saw invalid version status 'ex-release'" in caplog.text
assert "Skipping 3.16 with status 'planned'" in caplog.text
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=""),
]