diff --git a/tests/test_linux.py b/tests/test_linux.py index 41c8ed1..6972396 100644 --- a/tests/test_linux.py +++ b/tests/test_linux.py @@ -22,6 +22,11 @@ def driver(): d._secret = "pass" # noqa: S105 d._forced_pkg_manager = None d._pkg_manager = "apt" + # Set by __init__, which this fixture bypasses via __new__. Without it every + # call through _sudo() raises AttributeError, which the callers' broad + # `except Exception` turns into a plain {"success": False} -- so the tests + # failed for a reason that had nothing to do with what they were testing. + d._sudo_password = None d.netmiko_optional_args = {} d._device = MagicMock() return d @@ -179,7 +184,7 @@ APT_UPGRADABLE = ( def test_get_available_updates_apt(driver): driver._pkg_manager = "apt" - with patch.object(driver, "_send", side_effect=["", APT_UPGRADABLE]): + with patch.object(driver, "_send", return_value=APT_UPGRADABLE): updates = driver.get_available_updates() assert len(updates) == 2 assert updates[0]["name"] == "openssh-server" @@ -312,7 +317,10 @@ def test_apply_updates_apt_all_packages(driver): driver._pkg_manager = "apt" sent_commands = [] - def capture_send(cmd): + def capture_send(cmd, **kwargs): + # _sudo() passes read_timeout as a keyword; without **kwargs this raises + # TypeError, which the caller's `except Exception` reports as a failed + # upgrade rather than a broken test double. sent_commands.append(cmd) return APT_UPGRADE_SUCCESS