style: ruff format and the lint rules of the driver standard
Mechanical: ruff format, and ruff check --fix with the rule set every NAPALM driver uses (E, F, I, UP, B at line length 100, Python 3.10). What ruff cannot fix comes in the next commit.
This commit is contained in:
1 parent
739283e76b
commit
c2a788fa7a
6 files changed
+307
-278
No files matched your search
+42
-21
@@ -1,13 +1,12 @@
|
||||
"""Unit tests for ProcurveDriver and parsers — no real device required."""
|
||||
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
from napalm.base.exceptions import ConnectionException
|
||||
|
||||
from napalm_procurve.procurve import _SSH_DISABLED_STANDARD, ProcurveDriver, _parse_ping_output
|
||||
from napalm_procurve import parsers
|
||||
|
||||
from napalm_procurve.procurve import _SSH_DISABLED_STANDARD, ProcurveDriver, _parse_ping_output
|
||||
|
||||
# ===========================================================================
|
||||
# Sample CLI output fixtures (captured from real ProCurve devices)
|
||||
@@ -510,7 +509,9 @@ class TestDriverTransportDetection:
|
||||
with patch("napalm_procurve.procurve.ConnectHandler") as mock_conn:
|
||||
mock_conn.return_value = MagicMock()
|
||||
drv = ProcurveDriver(
|
||||
"192.168.0.1", "manager", "secret",
|
||||
"192.168.0.1",
|
||||
"manager",
|
||||
"secret",
|
||||
optional_args={"transport": "ssh"},
|
||||
)
|
||||
drv.open()
|
||||
@@ -521,7 +522,9 @@ class TestDriverTransportDetection:
|
||||
with patch("napalm_procurve.procurve.ConnectHandler") as mock_conn:
|
||||
mock_conn.return_value = MagicMock()
|
||||
drv = ProcurveDriver(
|
||||
"192.168.0.1", "manager", "secret",
|
||||
"192.168.0.1",
|
||||
"manager",
|
||||
"secret",
|
||||
optional_args={"transport": "telnet"},
|
||||
)
|
||||
drv.open()
|
||||
@@ -565,7 +568,9 @@ class TestDriverTransportDetection:
|
||||
def test_all_transports_fail_names_each_reason(self):
|
||||
"""The final error gives a reason per transport, not just its name."""
|
||||
with patch("napalm_procurve.procurve.ProcurveApiClient.probe", return_value=(None, None)):
|
||||
with patch("napalm_procurve.procurve.ConnectHandler", side_effect=OSError("no route to host")):
|
||||
with patch(
|
||||
"napalm_procurve.procurve.ConnectHandler", side_effect=OSError("no route to host")
|
||||
):
|
||||
drv = ProcurveDriver("192.168.0.1", "manager", "secret")
|
||||
with pytest.raises(ConnectionException) as exc_info:
|
||||
drv.open()
|
||||
@@ -745,8 +750,8 @@ class TestParseVlanPortsDetail:
|
||||
class TestDerivePvids:
|
||||
def test_basic_pvid_derivation(self):
|
||||
vlans = {
|
||||
1: {"untagged": ["1", "2", "3"], "tagged": []},
|
||||
10: {"untagged": ["4"], "tagged": ["5"]},
|
||||
1: {"untagged": ["1", "2", "3"], "tagged": []},
|
||||
10: {"untagged": ["4"], "tagged": ["5"]},
|
||||
}
|
||||
pvids = parsers.derive_port_pvids(vlans)
|
||||
assert pvids["1"] == 1
|
||||
@@ -756,7 +761,7 @@ class TestDerivePvids:
|
||||
|
||||
def test_tagged_only_port_gets_pvid1(self):
|
||||
vlans = {
|
||||
1: {"untagged": [], "tagged": []},
|
||||
1: {"untagged": [], "tagged": []},
|
||||
10: {"untagged": [], "tagged": ["5"]},
|
||||
}
|
||||
pvids = parsers.derive_port_pvids(vlans)
|
||||
@@ -793,7 +798,7 @@ class TestDriverGetVlans:
|
||||
def side_effect(cmd, **kw):
|
||||
call_count[0] += 1
|
||||
if "running-config" in (cmd if isinstance(cmd, str) else cmd[0]):
|
||||
return "hostname myswitch\n" # no vlan blocks
|
||||
return "hostname myswitch\n" # no vlan blocks
|
||||
if "show vlans" == (cmd if isinstance(cmd, str) else cmd[0]):
|
||||
return SHOW_VLANS_BRIEF
|
||||
if "show vlans 10" in (cmd if isinstance(cmd, str) else cmd[0]):
|
||||
@@ -900,22 +905,36 @@ class TestApiGetInterfacesLag:
|
||||
client = ProcurveApiClient(hostname="192.168.0.1", username="manager", password="secret")
|
||||
responses = {
|
||||
"ports": {"port_element": ports},
|
||||
"port-statistics": {"port_statistics_element": [
|
||||
{"id": p["id"], "port_speed_mbps": 1000} for p in ports
|
||||
]},
|
||||
"port-statistics": {
|
||||
"port_statistics_element": [{"id": p["id"], "port_speed_mbps": 1000} for p in ports]
|
||||
},
|
||||
"system/status/switch": {},
|
||||
}
|
||||
client.get = MagicMock(side_effect=lambda endpoint, **kw: responses[endpoint])
|
||||
return client
|
||||
|
||||
def test_trunk_rows_with_mode(self):
|
||||
client = self._client([
|
||||
{"id": "1", "is_port_up": True, "is_port_enabled": True, "trunk_group": ""},
|
||||
{"id": "3", "is_port_up": False, "is_port_enabled": True, "trunk_group": "trk3", "trunk_mode": "PTT_LACP"},
|
||||
{"id": "4", "is_port_up": True, "is_port_enabled": True, "trunk_group": "trk3", "trunk_mode": "PTT_LACP"},
|
||||
{"id": "10", "is_port_up": False, "is_port_enabled": True, "trunk_group": "trk6"},
|
||||
{"id": "7", "is_port_up": False, "is_port_enabled": True, "trunk_group": "trk6"},
|
||||
])
|
||||
client = self._client(
|
||||
[
|
||||
{"id": "1", "is_port_up": True, "is_port_enabled": True, "trunk_group": ""},
|
||||
{
|
||||
"id": "3",
|
||||
"is_port_up": False,
|
||||
"is_port_enabled": True,
|
||||
"trunk_group": "trk3",
|
||||
"trunk_mode": "PTT_LACP",
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"is_port_up": True,
|
||||
"is_port_enabled": True,
|
||||
"trunk_group": "trk3",
|
||||
"trunk_mode": "PTT_LACP",
|
||||
},
|
||||
{"id": "10", "is_port_up": False, "is_port_enabled": True, "trunk_group": "trk6"},
|
||||
{"id": "7", "is_port_up": False, "is_port_enabled": True, "trunk_group": "trk6"},
|
||||
]
|
||||
)
|
||||
ifaces = client.get_interfaces()
|
||||
|
||||
assert ifaces["trk3"]["lag_members"] == ["3", "4"]
|
||||
@@ -931,7 +950,9 @@ class TestApiGetInterfacesLag:
|
||||
class TestCliGetInterfacesLag:
|
||||
def test_trunk_rows_from_member_ports(self, driver):
|
||||
driver._send_command = MagicMock(
|
||||
side_effect=lambda cmd: SHOW_INTERFACES_BRIEF_INTRUSION if cmd == "show interfaces brief" else ""
|
||||
side_effect=lambda cmd: (
|
||||
SHOW_INTERFACES_BRIEF_INTRUSION if cmd == "show interfaces brief" else ""
|
||||
)
|
||||
)
|
||||
ifaces = driver.get_interfaces()
|
||||
|
||||
|
||||
Reference in new issue
Block a user