diff --git a/homeassistant/config_entries.py b/homeassistant/config_entries.py index d4f76d9bb3767a..43e60a35af83ab 100644 --- a/homeassistant/config_entries.py +++ b/homeassistant/config_entries.py @@ -579,11 +579,24 @@ def async_get_entry(self, entry_id: str) -> Optional[ConfigEntry]: return None @callback - def async_entries(self, domain: Optional[str] = None) -> List[ConfigEntry]: + def async_entries( + self, domain: Optional[str] = None, include_ignored: bool = True + ) -> List[ConfigEntry]: """Return all entries or entries for a specific domain.""" if domain is None: - return list(self._entries) - return [entry for entry in self._entries if entry.domain == domain] + if include_ignored: + return list(self._entries) + + return [entry for entry in self._entries if entry.source != SOURCE_IGNORE] + + if include_ignored: + return [entry for entry in self._entries if entry.domain == domain] + + return [ + entry + for entry in self._entries + if entry.domain == domain and entry.source != SOURCE_IGNORE + ] async def async_add(self, entry: ConfigEntry) -> None: """Add and setup an entry.""" diff --git a/tests/test_config_entries.py b/tests/test_config_entries.py index 28746bbfbe07ae..ba61bb93b02aee 100644 --- a/tests/test_config_entries.py +++ b/tests/test_config_entries.py @@ -7,6 +7,7 @@ import pytest from homeassistant import config_entries, data_entry_flow, loader +from homeassistant.config_entries import SOURCE_IGNORE from homeassistant.core import callback from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.setup import async_setup_component @@ -1558,3 +1559,15 @@ async def async_step_import(self, user_input): assert len(entries) == 1 assert entries[0].state == config_entries.ENTRY_STATE_LOADED assert entries[0].data == {"value": "updated"} + + async def test_async_entries_ignore_parameter(hass): + """Test `include_ignored` parameter in ConfigEntries.async_entries.""" + MockConfigEntry(domain="test", entry_id="test1").add_to_hass(hass) + MockConfigEntry( + domain="test", entry_id="test2", source=SOURCE_IGNORE + ).add_to_hass(hass) + + assert len(hass.config_entries.async_entries("test")) == 2 + assert len(hass.config_entries.async_entries("test", False)) == 1 + assert len(hass.config_entries.async_entries()) == 2 + assert len(hass.config_entries.async_entries(include_ignored=False)) == 1