From 33b088ffd96fc0a07eee6da34ab630140987d2aa Mon Sep 17 00:00:00 2001 From: Martin Blazik Date: Tue, 2 Aug 2022 14:24:23 +0200 Subject: [PATCH] Fix type Error for check type of file Add tests --- src/battery/battery/power.py | 16 ++++++++++++++-- src/battery/tests/test_power.py | 10 +++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/battery/battery/power.py b/src/battery/battery/power.py index f3e43dc..c5f1619 100644 --- a/src/battery/battery/power.py +++ b/src/battery/battery/power.py @@ -22,7 +22,7 @@ class Battery: def find_uevent(batteries: List[str]) -> Union[Path, None]: for battery in batteries: uevent_path = POWER_CLASS.joinpath(battery, "uevent") - if uevent_path.is_fifo(): + if uevent_path.is_file(): return uevent_path return None @@ -35,14 +35,26 @@ def read_uevent(filename: Path) -> Dict[str, str]: def battery_info(uevent: Dict[str, str]) -> Battery: + power_full = [ + "POWER_SUPPLY_ENERGY_FULL_DESIGN" + "POWER_SUPPLY_ENERGY_FULL", + "POWER_SUPPLY_CHARGE_FULL", + ] return Battery( name=uevent.get("POWER_SUPPLY_NAME", "??"), model=uevent.get("POWER_SUPPLY_MODEL_NAME", ""), manufacturer=uevent.get("POWER_SUPPLY_MANUFACTURER", ""), technology=uevent.get("POWER_SUPPLY_TECHNOLOGY", ""), - capacity=float(uevent.get("POWER_SUPPLY_CHARGE_FULL", 0)) / 1e6, + capacity=float(find_first(uevent, power_full, "0")) / 1e6, percent=int(uevent.get("POWER_SUPPLY_CAPACITY", 0)), status=uevent.get("POWER_SUPPLY_STATUS", "??"), time_to_empty=int(uevent.get("POWER_SUPPLY_TIME_TO_EMPTY_NOW", 0)), current=int(float(uevent.get("POWER_SUPPLY_CURRENT_NOW", 0)) / 1e3), ) + + +def find_first(uevent: Dict[str, str], keys: List[str], default: str) -> str: + for key in keys: + if key in uevent: + return uevent[key] + return default diff --git a/src/battery/tests/test_power.py b/src/battery/tests/test_power.py index 88dc217..afb6005 100644 --- a/src/battery/tests/test_power.py +++ b/src/battery/tests/test_power.py @@ -1,7 +1,7 @@ import unittest from pathlib import Path -from battery.power import Battery, battery_info, read_uevent +from battery.power import Battery, battery_info, read_uevent, find_first def load_fixture(filename: str) -> dict[str, str]: @@ -81,3 +81,11 @@ class TestPower(unittest.TestCase): uevent = load_fixture(filename) info = battery_info(uevent) self.assertEqual(info, expected_info) + + def test_find_first_default(self) -> None: + uevent = {"ONE": 1, "TWO": 2, "THREE": 3} + self.assertEqual(find_first(uevent, ["XX", "YY"], 10), 10) + + def test_find_first_more_values(self) -> None: + uevent = {"ONE": 1, "TWO": 2, "THREE": 3} + self.assertEqual(find_first(uevent, ["TWO", "ONE", "XX"], 10), 2)