mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 12:17:07 +00:00
Fix quirk_class_validator
in ZHA unit tests (#90140)
* Fix `quirk_class_validator` Fix the `quirk_class_validator` for quirks with more than 1 module level * fix black * Shorten `quirk_cls` in `clss` Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com> * Update comment --------- Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
This commit is contained in:
parent
89f89cab2c
commit
f4fda55405
@ -1,4 +1,5 @@
|
|||||||
"""Test ZHA registries."""
|
"""Test ZHA registries."""
|
||||||
|
import importlib
|
||||||
import inspect
|
import inspect
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
|
||||||
@ -440,24 +441,11 @@ def test_quirk_classes() -> None:
|
|||||||
|
|
||||||
def find_quirk_class(base_obj, quirk_mod, quirk_cls):
|
def find_quirk_class(base_obj, quirk_mod, quirk_cls):
|
||||||
"""Find a specific quirk class."""
|
"""Find a specific quirk class."""
|
||||||
mods = dict(inspect.getmembers(base_obj, inspect.ismodule))
|
|
||||||
|
|
||||||
# Check if we have found the right module
|
module = importlib.import_module(quirk_mod)
|
||||||
if quirk_mod in mods:
|
clss = dict(inspect.getmembers(module, inspect.isclass))
|
||||||
# If so, look for the class
|
# Check quirk_cls in module classes
|
||||||
clss = dict(inspect.getmembers(mods[quirk_mod], inspect.isclass))
|
return quirk_cls in clss
|
||||||
if quirk_cls in clss:
|
|
||||||
# Quirk class found
|
|
||||||
return True
|
|
||||||
|
|
||||||
else:
|
|
||||||
# Recurse into other modules
|
|
||||||
for mod in mods:
|
|
||||||
if not mods[mod].__name__.startswith("zhaquirks."):
|
|
||||||
continue
|
|
||||||
if find_quirk_class(mods[mod], quirk_mod, quirk_cls):
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def quirk_class_validator(value):
|
def quirk_class_validator(value):
|
||||||
"""Validate quirk classes during self test."""
|
"""Validate quirk classes during self test."""
|
||||||
@ -471,9 +459,9 @@ def test_quirk_classes() -> None:
|
|||||||
quirk_class_validator(v)
|
quirk_class_validator(v)
|
||||||
return
|
return
|
||||||
|
|
||||||
quirk_tok = value.split(".")
|
quirk_tok = value.rsplit(".", 1)
|
||||||
if len(quirk_tok) != 2:
|
if len(quirk_tok) != 2:
|
||||||
# quirk_class is always __module__.__class__
|
# quirk_class is at least __module__.__class__
|
||||||
raise ValueError(f"Invalid quirk class : '{value}'")
|
raise ValueError(f"Invalid quirk class : '{value}'")
|
||||||
|
|
||||||
if not find_quirk_class(zhaquirks, quirk_tok[0], quirk_tok[1]):
|
if not find_quirk_class(zhaquirks, quirk_tok[0], quirk_tok[1]):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user