Don't crash on devices not reporting features (#317)

Returns an empty set if no feature information is available
This commit is contained in:
Teemu R 2022-03-02 16:29:20 +01:00 committed by GitHub
parent e3d76bea75
commit b22f6b4eef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 1 deletions

View File

@ -262,7 +262,11 @@ class SmartDevice:
@requires_update
def features(self) -> Set[str]:
"""Return a set of features that the device supports."""
return set(self.sys_info["feature"].split(":"))
try:
return set(self.sys_info["feature"].split(":"))
except KeyError:
_LOGGER.debug("Device does not have feature information")
return set()
@property # type: ignore
@requires_update

View File

@ -139,3 +139,12 @@ async def test_childrens(dev):
async def test_internal_state(dev):
"""Make sure the internal state returns the last update results."""
assert dev.internal_state == dev._last_update
async def test_features(dev):
"""Make sure features is always accessible."""
sysinfo = dev._last_update["system"]["get_sysinfo"]
if "feature" in sysinfo:
assert dev.features == set(sysinfo["feature"].split(":"))
else:
assert dev.features == set()