Fix friendly names for empty entity name overrides (#181576)

This commit is contained in:
Paul Bottein
2026-09-29 10:36:27 +02:00
committed by GitHub
parent 8dac020172
commit db0852818c
3 changed files with 49 additions and 1 deletions
+1 -1
View File
@@ -550,7 +550,7 @@ def _async_get_full_entity_name(
if name is None and overridden_name is not None:
full_name = overridden_name
elif not use_legacy_naming or name is None:
elif not use_legacy_naming or not name:
raw_device_name: str | None = None
device_name: str | None = None
parent_device_name: str | None = None
+38
View File
@@ -1042,6 +1042,44 @@ async def _test_friendly_name(
assert state.attributes.get(ATTR_FRIENDLY_NAME) == expected_friendly_name
@pytest.mark.parametrize("has_entity_name", [False, True])
async def test_friendly_name_empty_override_uses_device_name(
hass: HomeAssistant,
entity_registry: er.EntityRegistry,
device_registry: dr.DeviceRegistry,
has_entity_name: bool,
) -> None:
"""Test an empty name follows the device until the override is reset."""
ent = MockEntity(
unique_id="empty_name",
device_info={
"identifiers": {("test", "device")},
"name": "Device Bla",
},
has_entity_name=has_entity_name,
name="Temperature",
)
await _test_friendly_name(hass, ent, "Device Bla Temperature")
entry = entity_registry.async_update_entity(ent.entity_id, name="")
await hass.async_block_till_done()
assert hass.states.get(ent.entity_id).attributes[ATTR_FRIENDLY_NAME] == "Device Bla"
assert entry.device_id is not None
device_registry.async_update_device(entry.device_id, name_by_user="Living room")
await hass.async_block_till_done()
assert (
hass.states.get(ent.entity_id).attributes[ATTR_FRIENDLY_NAME] == "Living room"
)
entity_registry.async_update_entity(ent.entity_id, name=None)
await hass.async_block_till_done()
assert (
hass.states.get(ent.entity_id).attributes[ATTR_FRIENDLY_NAME]
== "Living room Temperature"
)
@pytest.mark.parametrize(
(
"has_entity_name",
+10
View File
@@ -3658,6 +3658,16 @@ async def test_restore_states(
pytest.param(
None, None, "Living Room Fan", "Living Room Fan", id="device_rename_applied"
),
pytest.param(
"Temperature", "", None, "Pedestal Fan", id="empty_name_uses_device_name"
),
pytest.param(
"Temperature",
"",
"Living Room Fan",
"Living Room Fan",
id="empty_name_uses_renamed_device",
),
],
)
async def test_restore_state_uses_device_name(