Detect duplicate script objects in config validation (#70368)
This commit is contained in:
parent
9a7f6393aa
commit
cad2ba4d44
2 changed files with 28 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue