From a17b4c3a7a3daf9be0e5f6edc3669a8423d14cda Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sun, 13 Apr 2025 13:54:22 +0300 Subject: [PATCH 1/4] Refactor test data into fixture --- .coveragerc | 1 + .ruff.toml | 1 + tests/test_build_docs_versions.py | 36 ++++++++++--------------------- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/.coveragerc b/.coveragerc index 0f12707..f970781 100644 --- a/.coveragerc +++ b/.coveragerc @@ -5,3 +5,4 @@ exclude_also = # Don't complain if non-runnable code isn't run: if __name__ == .__main__.: + if TYPE_CHECKING: diff --git a/.ruff.toml b/.ruff.toml index 47cbf74..13416ad 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -1,3 +1,4 @@ +fix = true target-version = "py313" # Pin Ruff to Python 3.13 line-length = 88 output-format = "full" diff --git a/tests/test_build_docs_versions.py b/tests/test_build_docs_versions.py index 42b5392..284dfbe 100644 --- a/tests/test_build_docs_versions.py +++ b/tests/test_build_docs_versions.py @@ -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=""), @@ -12,6 +16,8 @@ def test_filter_default() -> None: Version(name="3.9", status="security-fixes", branch_or_tag=""), ]) + +def test_filter_default(versions) -> None: # Act filtered = versions.filter() @@ -23,17 +29,7 @@ def test_filter_default() -> None: ] -def test_filter_one() -> 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_one(versions) -> None: # Act filtered = versions.filter(["3.13"]) @@ -41,17 +37,7 @@ def test_filter_one() -> None: 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"]) From 3fef48525e53594c38ffab41e733a92e604c2a02 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Sun, 13 Apr 2025 16:50:52 +0300 Subject: [PATCH 2/4] Add more tests for Versions class --- tests/test_build_docs_versions.py | 70 +++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/tests/test_build_docs_versions.py b/tests/test_build_docs_versions.py index 284dfbe..ab961b9 100644 --- a/tests/test_build_docs_versions.py +++ b/tests/test_build_docs_versions.py @@ -17,6 +17,76 @@ def versions() -> Versions: ]) +def test_reversed(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() From c8b947cfe97a7d7c0c0afd118cda857fd6a16e39 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 16 Apr 2025 18:43:43 +0300 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- .ruff.toml | 1 - tests/test_build_docs_versions.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.ruff.toml b/.ruff.toml index 13416ad..47cbf74 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -1,4 +1,3 @@ -fix = true target-version = "py313" # Pin Ruff to Python 3.13 line-length = 88 output-format = "full" diff --git a/tests/test_build_docs_versions.py b/tests/test_build_docs_versions.py index ab961b9..1d8f6dc 100644 --- a/tests/test_build_docs_versions.py +++ b/tests/test_build_docs_versions.py @@ -17,7 +17,7 @@ def versions() -> Versions: ]) -def test_reversed(versions) -> None: +def test_reversed(versions: Versions) -> None: # Act output = list(reversed(versions)) From 1a7ccab3e71e6c83ceb8c1ccf80232d179c26011 Mon Sep 17 00:00:00 2001 From: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Date: Wed, 16 Apr 2025 18:43:45 +0300 Subject: [PATCH 4/4] Move ruff's --fix to pre-commit --- .pre-commit-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c0eb053..869a979 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,6 +17,7 @@ repos: rev: v0.11.5 hooks: - id: ruff + args: [--fix] - id: ruff-format - repo: https://github.com/python-jsonschema/check-jsonschema