From 3151ca888f904f891cbe7dca706096fccee8b13a Mon Sep 17 00:00:00 2001 From: Brett Adams Date: Fri, 11 Sep 2026 20:48:32 +1000 Subject: [PATCH] Fix shared wakelock across Tesla Fleet vehicles (#181658) --- .../components/tesla_fleet/models.py | 4 ++-- tests/components/tesla_fleet/test_models.py | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 tests/components/tesla_fleet/test_models.py diff --git a/homeassistant/components/tesla_fleet/models.py b/homeassistant/components/tesla_fleet/models.py index d81ceada6966..9515aea791a5 100644 --- a/homeassistant/components/tesla_fleet/models.py +++ b/homeassistant/components/tesla_fleet/models.py @@ -1,7 +1,7 @@ """The Tesla Fleet integration models.""" import asyncio -from dataclasses import dataclass +from dataclasses import dataclass, field from tesla_fleet_api.const import Scope from tesla_fleet_api.tesla import EnergySite, VehicleFleet @@ -34,7 +34,7 @@ class TeslaFleetVehicleData: vin: str device: DeviceInfo signing: bool - wakelock = asyncio.Lock() + wakelock: asyncio.Lock = field(default_factory=asyncio.Lock) @dataclass diff --git a/tests/components/tesla_fleet/test_models.py b/tests/components/tesla_fleet/test_models.py new file mode 100644 index 000000000000..eac52bdec0c8 --- /dev/null +++ b/tests/components/tesla_fleet/test_models.py @@ -0,0 +1,20 @@ +"""Test the Tesla Fleet models.""" + +from unittest.mock import Mock + +from homeassistant.components.tesla_fleet.models import TeslaFleetVehicleData + + +def test_wakelock_is_per_instance() -> None: + """Each vehicle must get its own wakelock, not a lock shared across the account.""" + kwargs = { + "api": Mock(), + "coordinator": Mock(), + "vin": "VIN", + "device": Mock(), + "signing": False, + } + a = TeslaFleetVehicleData(**kwargs) + b = TeslaFleetVehicleData(**kwargs) + + assert a.wakelock is not b.wakelock