diff --git a/tests/components/zha/test_registries.py b/tests/components/zha/test_registries.py index 6a6bf758cebc3f1cfccea2c75c7589fddc648abe..80b1f10f5613348f4f203d2cd27194eb9707570e 100644 --- a/tests/components/zha/test_registries.py +++ b/tests/components/zha/test_registries.py @@ -1,4 +1,5 @@ """Test ZHA registries.""" +import importlib import inspect from unittest import mock @@ -440,24 +441,11 @@ def test_quirk_classes() -> None: def find_quirk_class(base_obj, quirk_mod, quirk_cls): """Find a specific quirk class.""" - mods = dict(inspect.getmembers(base_obj, inspect.ismodule)) - - # Check if we have found the right module - if quirk_mod in mods: - # If so, look for the class - clss = dict(inspect.getmembers(mods[quirk_mod], inspect.isclass)) - 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 + + module = importlib.import_module(quirk_mod) + clss = dict(inspect.getmembers(module, inspect.isclass)) + # Check quirk_cls in module classes + return quirk_cls in clss def quirk_class_validator(value): """Validate quirk classes during self test.""" @@ -471,9 +459,9 @@ def test_quirk_classes() -> None: quirk_class_validator(v) return - quirk_tok = value.split(".") + quirk_tok = value.rsplit(".", 1) 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}'") if not find_quirk_class(zhaquirks, quirk_tok[0], quirk_tok[1]):