"""Synthetic collection/watch tests. No Bluetooth hardware or private captures.""" import asyncio import importlib.util import struct from argparse import Namespace from pathlib import Path from unittest.mock import AsyncMock, Mock import pytest from bmspy.ecoflow_bt import EcoFlowBTDevice, EcoFlowPacket, _State from bmspy.ecoflow_proto import parse_protobuf_fields ADDRESS = "02:00:00:00:00:03" @pytest.fixture def script(): path = Path(__file__).resolve().parents[1] / "tools" / "ecoflow-bt.py" spec = importlib.util.spec_from_file_location("ecoflow_live_diagnostics", path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module def varint(value): result = bytearray() while value > 127: result.append((value & 127) | 128) value >>= 7 result.append(value) return bytes(result) def wire_field(number, wire_type=0, value=0): body = struct.pack("