test(connection): manager unit tests with a fake poller — connect/reconnect backoff, TTL expiry, listeners, lifecycle
This commit is contained in:
1 parent
4779c20407
commit
ec2db2ae58
2 files changed
+391
No files matched your search
@@ -3,10 +3,50 @@
|
||||
Puts the vendored ha_adb_common package on sys.path so helpers can be imported
|
||||
directly (their code is stdlib-only) without installing Home Assistant or
|
||||
executing the integration's __init__ module.
|
||||
|
||||
The integration-package modules that stay Home-Assistant-free at import time
|
||||
(currently connection.py) are also made importable — via a synthetic package
|
||||
("nsh") that wraps custom_components/nvidia_shield WITHOUT executing its
|
||||
__init__.py (that one imports Home Assistant). Only the stdlib-only modules
|
||||
are loaded into it explicitly; their relative imports resolve normally.
|
||||
"""
|
||||
|
||||
import importlib.util
|
||||
import sys
|
||||
import types
|
||||
from pathlib import Path
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parent.parent
|
||||
sys.path.insert(0, str(REPO_ROOT / "custom_components" / "nvidia_shield"))
|
||||
|
||||
_SHIELD_DIR = REPO_ROOT / "custom_components" / "nvidia_shield"
|
||||
_PKG = "nsh"
|
||||
|
||||
|
||||
def _load_module(name: str, path: Path, search_paths: list[str] | None = None):
|
||||
"""Import a source file under ``name`` without touching real packages."""
|
||||
spec = importlib.util.spec_from_file_location(
|
||||
name, path, submodule_search_locations=search_paths
|
||||
)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
sys.modules[name] = module
|
||||
spec.loader.exec_module(module)
|
||||
return module
|
||||
|
||||
|
||||
# Synthetic integration package — no __init__.py execution (HA-free).
|
||||
_root = types.ModuleType(_PKG)
|
||||
_root.__path__ = [str(_SHIELD_DIR)]
|
||||
sys.modules[_PKG] = _root
|
||||
|
||||
# Real subpackage __init__ (stdlib-only) so `from .ha_adb_common import ...`
|
||||
# works through the synthetic package.
|
||||
_load_module(
|
||||
f"{_PKG}.ha_adb_common",
|
||||
_SHIELD_DIR / "ha_adb_common" / "__init__.py",
|
||||
[str(_SHIELD_DIR / "ha_adb_common")],
|
||||
)
|
||||
|
||||
# Stdlib-only integration modules.
|
||||
for _mod in ("const", "adb_session", "connection"):
|
||||
_load_module(f"{_PKG}.{_mod}", _SHIELD_DIR / f"{_mod}.py")
|
||||
Reference in new issue
Block a user