blob: 8c67f0523fc21ce356b002c1bae12b810a91e3c5 [file]
"""Tests for collectors/github_repos.py — repo classification."""
from asfmetrics.collectors.github_repos import classify_repo, build_project_map
# --- classify_repo ---
def test_classify_simple_repo():
result = classify_repo("kafka")
assert result == {"project": "kafka", "sub_repo": None, "incubating": False}
def test_classify_sub_repo():
result = classify_repo("kafka-site")
assert result == {"project": "kafka", "sub_repo": "site", "incubating": False}
def test_classify_incubator_repo():
result = classify_repo("incubator-ponymail")
assert result == {"project": "ponymail", "sub_repo": None, "incubating": True}
def test_classify_incubator_sub_repo():
result = classify_repo("incubator-ponymail-foal")
assert result == {"project": "ponymail", "sub_repo": "foal", "incubating": True}
def test_classify_hyphenated_project():
"""empire-db is a project name with a hyphen — split only on first hyphen."""
result = classify_repo("empire-db")
assert result["project"] == "empire"
assert result["sub_repo"] == "db"
# --- build_project_map ---
def test_build_project_map_groups_repos():
repos = [
{"name": "kafka", "fork": False, "archived": False, "default_branch": "main"},
{"name": "kafka-site", "fork": False, "archived": False, "default_branch": "main"},
{"name": "kafka-python", "fork": False, "archived": False, "default_branch": "main"},
]
result = build_project_map(repos)
assert "kafka" in result
assert len(result["kafka"]["repos"]) == 3
def test_build_project_map_skips_forks():
repos = [
{"name": "kafka", "fork": False, "archived": False, "default_branch": "main"},
{"name": "some-fork", "fork": True, "archived": False, "default_branch": "main"},
]
result = build_project_map(repos)
assert "some" not in result
def test_build_project_map_detects_incubating():
repos = [
{"name": "incubator-xyz", "fork": False, "archived": False, "default_branch": "main"},
]
result = build_project_map(repos)
assert result["xyz"]["incubating"] is True
def test_build_project_map_detects_all_archived():
repos = [
{"name": "oldproject", "fork": False, "archived": True, "default_branch": "main"},
{"name": "oldproject-docs", "fork": False, "archived": True, "default_branch": "main"},
]
result = build_project_map(repos)
assert result["oldproject"]["archived"] is True
def test_build_project_map_not_archived_if_any_active():
repos = [
{"name": "myproj", "fork": False, "archived": False, "default_branch": "main"},
{"name": "myproj-old", "fork": False, "archived": True, "default_branch": "trunk"},
]
result = build_project_map(repos)
assert result["myproj"]["archived"] is False