TestGetVlans ist auf main rot — Tests erwarten das alte interfaces-Schema #2

Closed
opened 2026-08-17 13:00:25 +00:00 by christianmanivong · 2 comments
Owner

Problem

Vier Tests in tests/unit/test_driver.py::TestGetVlans schlagen auf main fehl:

FAILED tests/unit/test_driver.py::TestGetVlans::test_required_keys
FAILED tests/unit/test_driver.py::TestGetVlans::test_interfaces_for_vlan10
FAILED tests/unit/test_driver.py::TestGetVlans::test_interfaces_for_vlan20
FAILED tests/unit/test_driver.py::TestGetVlans::test_no_duplicate_interfaces
4 failed, 6 passed, 109 deselected

Alle mit KeyError: 'interfaces'.

Ursache

get_vlans() wurde auf getrennte tagged/untagged-Listen umgestellt:

vlans.setdefault(vlan_id, {"name": "", "tagged": [], "untagged": []})

Die Tests wurden dabei nie nachgezogen und prüfen weiterhin gegen den alten Rückgabewert {"name": ..., "interfaces": [...]}.

Auswirkung

Die Regressionsabdeckung für get_vlans() ist faktisch weg — der interessante Teil (Trennung tagged/untagged, PVID-Erkennung, Sub-Interface-Fallback) wird von keinem grünen Test abgedeckt. Dass die Suite rot ist, verdeckt ausserdem neue Fehler.

Lösungsvorschlag

Tests auf das aktuelle Schema umschreiben und dabei die Fälle abdecken, die vorher nicht geprüft wurden: PVID/untagged-Zuordnung, Fortsetzungszeilen in bridge vlan show, sowie das Verhalten wenn bridge gar nicht verfügbar ist.

## Problem Vier Tests in `tests/unit/test_driver.py::TestGetVlans` schlagen auf `main` fehl: ``` FAILED tests/unit/test_driver.py::TestGetVlans::test_required_keys FAILED tests/unit/test_driver.py::TestGetVlans::test_interfaces_for_vlan10 FAILED tests/unit/test_driver.py::TestGetVlans::test_interfaces_for_vlan20 FAILED tests/unit/test_driver.py::TestGetVlans::test_no_duplicate_interfaces 4 failed, 6 passed, 109 deselected ``` Alle mit `KeyError: 'interfaces'`. ## Ursache `get_vlans()` wurde auf getrennte `tagged`/`untagged`-Listen umgestellt: ```python vlans.setdefault(vlan_id, {"name": "", "tagged": [], "untagged": []}) ``` Die Tests wurden dabei nie nachgezogen und prüfen weiterhin gegen den alten Rückgabewert `{"name": ..., "interfaces": [...]}`. ## Auswirkung Die Regressionsabdeckung für `get_vlans()` ist faktisch weg — der interessante Teil (Trennung tagged/untagged, PVID-Erkennung, Sub-Interface-Fallback) wird von keinem grünen Test abgedeckt. Dass die Suite rot ist, verdeckt ausserdem neue Fehler. ## Lösungsvorschlag Tests auf das aktuelle Schema umschreiben und dabei die Fälle abdecken, die vorher nicht geprüft wurden: PVID/untagged-Zuordnung, Fortsetzungszeilen in `bridge vlan show`, sowie das Verhalten wenn `bridge` gar nicht verfügbar ist.
Author
Owner

Behoben

Alle vier Tests auf das aktuelle tagged/untagged-Schema umgeschrieben und dabei die vorher ungeprüften Fälle ergänzt: PVID-Port als untagged Member, Fortsetzungszeilen als tagged Member, gemischtes Tagging derselben VLAN über mehrere Ports, sowie die Invariante, dass ein Port nie gleichzeitig in beiden Listen steht.

Beim Durchlauf fiel ein fünfter Test derselben Ursache auf, der hier gleich mitgenommen wurde: TestGetFacts::test_returns_required_keys schlug mit number_of_interfaces als „extra key" fehl. Der Key wird von get_facts() bewusst gesetzt (facts["number_of_interfaces"] = len(interface_list)), nur der Test war nicht nachgezogen. Erwartungsmenge korrigiert und ein Test ergänzt, der die Konsistenz zu interface_list prüft.

Suite ist wieder vollständig grün: 129 passed.

## Behoben Alle vier Tests auf das aktuelle `tagged`/`untagged`-Schema umgeschrieben und dabei die vorher ungeprüften Fälle ergänzt: PVID-Port als untagged Member, Fortsetzungszeilen als tagged Member, gemischtes Tagging derselben VLAN über mehrere Ports, sowie die Invariante, dass ein Port nie gleichzeitig in beiden Listen steht. Beim Durchlauf fiel ein fünfter Test derselben Ursache auf, der hier gleich mitgenommen wurde: `TestGetFacts::test_returns_required_keys` schlug mit `number_of_interfaces` als „extra key" fehl. Der Key wird von `get_facts()` bewusst gesetzt (`facts["number_of_interfaces"] = len(interface_list)`), nur der Test war nicht nachgezogen. Erwartungsmenge korrigiert und ein Test ergänzt, der die Konsistenz zu `interface_list` prüft. Suite ist wieder vollständig grün: **129 passed**.
Author
Owner

Behoben in c686fac — Suite ist wieder vollständig grün (129 passed).

Behoben in c686fac — Suite ist wieder vollständig grün (129 passed).
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: NAPALM/napalm-openwrt#2