diff --git a/homeassistant/components/script/config.py b/homeassistant/components/script/config.py index 24c5f86078b..bd7ca1fc791 100644 --- a/homeassistant/components/script/config.py +++ b/homeassistant/components/script/config.py @@ -35,6 +35,7 @@ from .const import ( CONF_REQUIRED, CONF_TRACE, DOMAIN, + LOGGER, ) from .helpers import async_get_blueprints @@ -110,6 +111,9 @@ async def async_validate_config(hass, config): scripts = {} for _, p_config in config_per_platform(config, DOMAIN): for object_id, cfg in p_config.items(): + if object_id in scripts: + LOGGER.warning("Duplicate script detected with name: '%s'", object_id) + continue cfg = await _try_async_validate_config_item(hass, object_id, cfg, config) if cfg is not None: scripts[object_id] = cfg diff --git a/tests/components/script/test_init.py b/tests/components/script/test_init.py index 680293b57d7..8a5297786f5 100644 --- a/tests/components/script/test_init.py +++ b/tests/components/script/test_init.py @@ -917,3 +917,27 @@ async def test_recursive_script_indirect(hass, script_mode, warning_msg, caplog) await asyncio.wait_for(service_called.wait(), 1) assert warning_msg in caplog.text + + +async def test_setup_with_duplicate_scripts( + hass: HomeAssistant, caplog: pytest.LogCaptureFixture +) -> None: + """Test setup with duplicate configs.""" + assert await async_setup_component( + hass, + "script", + { + "script one": { + "duplicate": { + "sequence": [], + }, + }, + "script two": { + "duplicate": { + "sequence": [], + }, + }, + }, + ) + assert "Duplicate script detected with name: 'duplicate'" in caplog.text + assert len(hass.states.async_entity_ids("script")) == 1