Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
exclude_also =
# Don't complain if non-runnable code isn't run:
if __name__ == .__main__.:
if TYPE_CHECKING:
1 change: 1 addition & 0 deletions .ruff.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
fix = true
target-version = "py313" # Pin Ruff to Python 3.13
line-length = 88
output-format = "full"
Expand Down
104 changes: 80 additions & 24 deletions tests/test_build_docs_versions.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
from __future__ import annotations

import pytest

from build_docs import Version, Versions


def test_filter_default() -> None:
# Arrange
versions = 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=""),
Expand All @@ -12,46 +16,98 @@ def test_filter_default() -> None:
Version(name="3.9", status="security-fixes", branch_or_tag=""),
])


def test_reversed(versions) -> None:
# Act
filtered = versions.filter()
output = list(reversed(versions))

# Assert
assert filtered == [
Version(name="3.14", status="in development", branch_or_tag=""),
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.12", status="stable", branch_or_tag=""),
Version(name="3.14", status="in development", branch_or_tag=""),
]


def test_filter_one() -> None:
def test_from_json_error() -> None:
# Arrange
versions = Versions([
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=""),
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_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() -> None:
# Arrange
versions = 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_filter_multiple(versions) -> None:
# Act
filtered = versions.filter(["3.13", "3.14"])

Expand Down