Pin the tracker alias three-place invariant

This commit is contained in:
J. Nick Koston
2026-08-08 22:38:26 -05:00
parent 2d50e07e90
commit 2dc9fbec5e
@@ -202,3 +202,36 @@ def test_add_service_uuid_dispatches_by_width(monkeypatch: pytest.MonkeyPatch) -
assert "0x00,0xff,0xee,0xdd" in emitted[2]
with pytest.raises(ValueError, match="Unsupported UUID format"):
ble_device_base.add_service_uuid(var, "123")
def test_hub_alias_ladder_mirrors_tracker_defines() -> None:
"""Adding a BLE chip is a three-place invariant: the tracker's to_code
emits USE_<CHIP>_BLE_TRACKER, ble_hub_impl.h has a matching alias arm, and
defines.h mirrors the define for static analysis. Pin all three so a
missing piece fails here instead of as a distant C++ error."""
import re
components = Path(ble_device_base.__file__).parent.parent
impl = (components / "ble_device_base" / "ble_hub_impl.h").read_text()
arm_defines = set(re.findall(r"defined\((USE_\w+_BLE_TRACKER)\)", impl))
assert arm_defines, "alias ladder has no tracker arms - parse stale?"
defines_h = (components.parent / "core" / "defines.h").read_text()
for define in arm_defines:
chip = define.removeprefix("USE_").removesuffix("_BLE_TRACKER").lower()
tracker_init = (components / f"{chip}_ble_tracker" / "__init__.py").read_text()
assert f'cg.add_define("{define}")' in tracker_init, (
f"{define} has an alias arm but {chip}_ble_tracker never emits it"
)
assert f"#define {define}" in defines_h, (
f"{define} missing from the defines.h static-analysis mirror"
)
# Reverse direction: every tracker emitting the define has an alias arm.
for init in components.glob("*_ble_tracker/__init__.py"):
for define in re.findall(
r'cg\.add_define\("(USE_\w+_BLE_TRACKER)"\)', init.read_text()
):
assert define in arm_defines, (
f"{init.parent.name} emits {define} but ble_hub_impl.h has no alias arm"
)