Make sure panel_custom won't crash on invalid data (#32835)
* Make sure panel_custom won't crash on invalid data * Add a test
This commit is contained in:
parent
42998f898b
commit
d88275d6d2
3 changed files with 25 additions and 7 deletions
|
@ -3,6 +3,7 @@
|
||||||
"name": "Hass.io",
|
"name": "Hass.io",
|
||||||
"documentation": "https://www.home-assistant.io/hassio",
|
"documentation": "https://www.home-assistant.io/hassio",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": ["http", "panel_custom"],
|
"dependencies": ["http"],
|
||||||
|
"after_dependencies": ["panel_custom"],
|
||||||
"codeowners": ["@home-assistant/hass-io"]
|
"codeowners": ["@home-assistant/hass-io"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,8 +146,6 @@ async def async_setup(hass, config):
|
||||||
if DOMAIN not in config:
|
if DOMAIN not in config:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
success = False
|
|
||||||
|
|
||||||
for panel in config[DOMAIN]:
|
for panel in config[DOMAIN]:
|
||||||
name = panel[CONF_COMPONENT_NAME]
|
name = panel[CONF_COMPONENT_NAME]
|
||||||
|
|
||||||
|
@ -182,8 +180,13 @@ async def async_setup(hass, config):
|
||||||
hass.http.register_static_path(url, panel_path)
|
hass.http.register_static_path(url, panel_path)
|
||||||
kwargs["html_url"] = url
|
kwargs["html_url"] = url
|
||||||
|
|
||||||
|
try:
|
||||||
await async_register_panel(hass, **kwargs)
|
await async_register_panel(hass, **kwargs)
|
||||||
|
except ValueError as err:
|
||||||
|
_LOGGER.error(
|
||||||
|
"Unable to register panel %s: %s",
|
||||||
|
panel.get(CONF_SIDEBAR_TITLE, name),
|
||||||
|
err,
|
||||||
|
)
|
||||||
|
|
||||||
success = True
|
return True
|
||||||
|
|
||||||
return success
|
|
||||||
|
|
|
@ -181,3 +181,17 @@ async def test_url_option_conflict(hass):
|
||||||
for config in to_try:
|
for config in to_try:
|
||||||
result = await setup.async_setup_component(hass, "panel_custom", config)
|
result = await setup.async_setup_component(hass, "panel_custom", config)
|
||||||
assert not result
|
assert not result
|
||||||
|
|
||||||
|
|
||||||
|
async def test_url_path_conflict(hass):
|
||||||
|
"""Test config with overlapping url path."""
|
||||||
|
assert await setup.async_setup_component(
|
||||||
|
hass,
|
||||||
|
"panel_custom",
|
||||||
|
{
|
||||||
|
"panel_custom": [
|
||||||
|
{"name": "todo-mvc", "js_url": "/local/bla.js"},
|
||||||
|
{"name": "todo-mvc", "js_url": "/local/bla.js"},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue