test(collector): add filtering optimization and edge case tests
- test_filtered_repos_have_no_api_calls: prouve que get_latest_release et get_milestones ne sont pas appelés pour les repos exclus par le filtre include - test_collect_all_include_empty_list: documente le contrat implicite où include=[] est équivalent à include=None (tous les repos inclus) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
6
docs/technical/findings-history.md
Normal file
6
docs/technical/findings-history.md
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Findings History
|
||||||
|
|
||||||
|
| Version | Severity | Category | File | Pattern | Resolution |
|
||||||
|
|---------|----------|----------|------|---------|------------|
|
||||||
|
| v1.1.0 | minor | testing | tests/test_collector.py | Pas de test prouvant que les repos filtrés n'entraînent pas d'appels API inutiles (get_latest_release / get_milestones) | Ajout de `test_filtered_repos_have_no_api_calls` : vérifie que `assert_called_once_with` cible uniquement le repo qui a passé le filtre |
|
||||||
|
| v1.1.0 | minor | testing | tests/test_collector.py | Pas de test pour `include=[]` (liste vide) — contrat implicite `if include:` traite `[]` comme `None` | Ajout de `test_collect_all_include_empty_list` : compare le résultat de `collect_all(client, include=[])` avec `collect_all(client)` |
|
||||||
@@ -206,3 +206,26 @@ class TestCollectAllFiltering:
|
|||||||
result = collect_all(client, exclude=["alpha", "beta"])
|
result = collect_all(client, exclude=["alpha", "beta"])
|
||||||
|
|
||||||
assert result == []
|
assert result == []
|
||||||
|
|
||||||
|
def test_filtered_repos_have_no_api_calls(self):
|
||||||
|
"""Repos excluded by include filter must not trigger enrichment API calls."""
|
||||||
|
client = self._setup_client(["gitea-dashboard", "infra-core", "notes"])
|
||||||
|
|
||||||
|
collect_all(client, include=["dashboard"])
|
||||||
|
|
||||||
|
# Only gitea-dashboard passed the filter — enrichment calls must target it only
|
||||||
|
client.get_latest_release.assert_called_once_with("admin", "gitea-dashboard")
|
||||||
|
client.get_milestones.assert_called_once_with("admin", "gitea-dashboard")
|
||||||
|
|
||||||
|
def test_collect_all_include_empty_list(self):
|
||||||
|
"""include=[] behaves like include=None — all repos are returned.
|
||||||
|
|
||||||
|
The contract: an empty list is falsy, so `if include:` is False, meaning
|
||||||
|
no inclusion filter is applied and every repo is included before exclude.
|
||||||
|
"""
|
||||||
|
client = self._setup_client(["alpha", "beta", "gamma"])
|
||||||
|
|
||||||
|
result_none = collect_all(client)
|
||||||
|
result_empty = collect_all(client, include=[])
|
||||||
|
|
||||||
|
assert [r.name for r in result_empty] == [r.name for r in result_none]
|
||||||
|
|||||||
Reference in New Issue
Block a user