fix(audit): sort milestones, sort JSON export, extract test helper

- Fix milestone section using unsorted repos list
- Apply --sort to --format json output
- Rename _sort_repos to sort_repos (now used by cli.py)
- Extract shared make_repo helper to tests/helpers.py
- Move exporter import to module level in cli.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
sylvain
2026-03-12 04:07:41 +01:00
parent cf6f2dd3c6
commit 50768db31f
5 changed files with 46 additions and 71 deletions

View File

@@ -4,11 +4,13 @@ from io import StringIO
from rich.console import Console
from gitea_dashboard.collector import RepoData
from gitea_dashboard.display import (
render_dashboard,
sort_repos,
)
from tests.helpers import make_repo as _make_repo
def _make_console():
"""Create a console that captures output for testing.
@@ -20,33 +22,6 @@ def _make_console():
return Console(file=buf, force_terminal=True, width=120, highlight=False), buf
def _make_repo(
name="my-repo",
full_name="admin/my-repo",
description="A repo",
open_issues=3,
is_fork=False,
is_archived=False,
is_mirror=False,
latest_release=None,
milestones=None,
last_commit_date=None,
):
"""Build a RepoData for testing."""
return RepoData(
name=name,
full_name=full_name,
description=description,
open_issues=open_issues,
is_fork=is_fork,
is_archived=is_archived,
is_mirror=is_mirror,
latest_release=latest_release,
milestones=milestones if milestones is not None else [],
last_commit_date=last_commit_date,
)
class TestRenderDashboardTable:
"""Test the main repos table rendering."""
@@ -290,35 +265,32 @@ class TestColorizeMilestoneDue:
class TestSortRepos:
"""Test _sort_repos function."""
"""Test sort_repos function."""
def test_sort_by_name(self):
"""Sorts alphabetically by name (case-insensitive)."""
from gitea_dashboard.display import _sort_repos
repos = [
_make_repo(name="Charlie"),
_make_repo(name="alpha"),
_make_repo(name="Bravo"),
]
result = _sort_repos(repos, "name")
result = sort_repos(repos, "name")
assert [r.name for r in result] == ["alpha", "Bravo", "Charlie"]
def test_sort_by_issues(self):
"""Sorts by issues count descending."""
from gitea_dashboard.display import _sort_repos
repos = [
_make_repo(name="low", open_issues=1),
_make_repo(name="high", open_issues=10),
_make_repo(name="mid", open_issues=5),
]
result = _sort_repos(repos, "issues")
result = sort_repos(repos, "issues")
assert [r.name for r in result] == ["high", "mid", "low"]
def test_sort_by_release(self):
"""Sorts by release date descending; repos without release last."""
from gitea_dashboard.display import _sort_repos
repos = [
_make_repo(name="no-rel", latest_release=None),
@@ -331,17 +303,16 @@ class TestSortRepos:
latest_release={"tag_name": "v2.0", "published_at": "2026-03-01T00:00:00Z"},
),
]
result = _sort_repos(repos, "release")
result = sort_repos(repos, "release")
assert [r.name for r in result] == ["new", "old", "no-rel"]
def test_sort_by_activity(self):
"""Sorts by last commit date descending; repos without commit last."""
from gitea_dashboard.display import _sort_repos
repos = [
_make_repo(name="inactive", last_commit_date=None),
_make_repo(name="old-commit", last_commit_date="2025-06-01T00:00:00Z"),
_make_repo(name="recent", last_commit_date="2026-03-10T00:00:00Z"),
]
result = _sort_repos(repos, "activity")
result = sort_repos(repos, "activity")
assert [r.name for r in result] == ["recent", "old-commit", "inactive"]