Skip to content

Commit

Permalink
Add missing platforms_exist guard to check_config (#114600)
Browse files Browse the repository at this point in the history
* Add missing platforms_exist guard to check_config

related issue #112811

When the exception hits, the config will end up being saved in the traceback
so the memory is never released.

This matches the check_config code to homeassistant.config to avoid having
the exception thrown.

* patch

* merge branch
  • Loading branch information
bdraco committed Apr 2, 2024
1 parent b12c69a commit 5856bbc
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
19 changes: 10 additions & 9 deletions homeassistant/helpers/check_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,15 +198,16 @@ async def _get_integration(

# Check if the integration has a custom config validator
config_validator = None
try:
config_validator = await integration.async_get_platform("config")
except ImportError as err:
# Filter out import error of the config platform.
# If the config platform contains bad imports, make sure
# that still fails.
if err.name != f"{integration.pkg_path}.config":
result.add_error(f"Error importing config platform {domain}: {err}")
continue
if integration.platforms_exists(("config",)):
try:
config_validator = await integration.async_get_platform("config")
except ImportError as err:
# Filter out import error of the config platform.
# If the config platform contains bad imports, make sure
# that still fails.
if err.name != f"{integration.pkg_path}.config":
result.add_error(f"Error importing config platform {domain}: {err}")
continue

if config_validator is not None and hasattr(
config_validator, "async_validate_config"
Expand Down
2 changes: 2 additions & 0 deletions tests/helpers/test_check_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,7 @@ async def test_config_platform_import_error(hass: HomeAssistant) -> None:
side_effect=ImportError("blablabla"),
),
patch("os.path.isfile", return_value=True),
patch("homeassistant.loader.Integration.platforms_exists", return_value=True),
patch_yaml_files(files),
):
res = await async_check_ha_config_file(hass)
Expand All @@ -373,6 +374,7 @@ async def test_platform_import_error(hass: HomeAssistant) -> None:
"homeassistant.loader.Integration.async_get_platform",
side_effect=[None, ImportError("blablabla")],
),
patch("homeassistant.loader.Integration.platforms_exists", return_value=True),
patch("os.path.isfile", return_value=True),
patch_yaml_files(files),
):
Expand Down

0 comments on commit 5856bbc

Please sign in to comment.