Always load Hass.io component on Hass.io (#22185)
* Always load Hass.io component on Hass.io * Lint * Lint
This commit is contained in:
parent
88669c6543
commit
92dc26bab3
4 changed files with 28 additions and 26 deletions
|
@ -127,10 +127,7 @@ async def async_from_config_dict(config: Dict[str, Any],
|
||||||
hass.config_entries = config_entries.ConfigEntries(hass, config)
|
hass.config_entries = config_entries.ConfigEntries(hass, config)
|
||||||
await hass.config_entries.async_initialize()
|
await hass.config_entries.async_initialize()
|
||||||
|
|
||||||
# Filter out the repeating and common config section [homeassistant]
|
components = _get_components(hass, config)
|
||||||
components = set(key.split(' ')[0] for key in config.keys()
|
|
||||||
if key != core.DOMAIN)
|
|
||||||
components.update(hass.config_entries.async_domains())
|
|
||||||
|
|
||||||
# Resolve all dependencies of all components.
|
# Resolve all dependencies of all components.
|
||||||
for component in list(components):
|
for component in list(components):
|
||||||
|
@ -391,3 +388,20 @@ async def async_mount_local_lib_path(config_dir: str) -> str:
|
||||||
if lib_dir not in sys.path:
|
if lib_dir not in sys.path:
|
||||||
sys.path.insert(0, lib_dir)
|
sys.path.insert(0, lib_dir)
|
||||||
return deps_dir
|
return deps_dir
|
||||||
|
|
||||||
|
|
||||||
|
@core.callback
|
||||||
|
def _get_components(hass: core.HomeAssistant, config: Dict[str, Any]):
|
||||||
|
"""Get components to set up."""
|
||||||
|
# Filter out the repeating and common config section [homeassistant]
|
||||||
|
components = set(key.split(' ')[0] for key in config.keys()
|
||||||
|
if key != core.DOMAIN)
|
||||||
|
|
||||||
|
# Add config entry domains
|
||||||
|
components.update(hass.config_entries.async_domains())
|
||||||
|
|
||||||
|
# Make sure the Hass.io component is loaded
|
||||||
|
if 'HASSIO' in os.environ:
|
||||||
|
components.add('hassio')
|
||||||
|
|
||||||
|
return components
|
||||||
|
|
|
@ -9,7 +9,6 @@ loaded before the EVENT_PLATFORM_DISCOVERED is fired.
|
||||||
import json
|
import json
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import logging
|
import logging
|
||||||
import os
|
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
|
@ -199,10 +198,6 @@ async def async_setup(hass, config):
|
||||||
"""Schedule the first discovery when Home Assistant starts up."""
|
"""Schedule the first discovery when Home Assistant starts up."""
|
||||||
async_track_point_in_utc_time(hass, scan_devices, dt_util.utcnow())
|
async_track_point_in_utc_time(hass, scan_devices, dt_util.utcnow())
|
||||||
|
|
||||||
# Discovery for local services
|
|
||||||
if 'HASSIO' in os.environ:
|
|
||||||
hass.async_create_task(new_service_found(SERVICE_HASSIO, {}))
|
|
||||||
|
|
||||||
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, schedule_first)
|
hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, schedule_first)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
"""The tests for the discovery component."""
|
"""The tests for the discovery component."""
|
||||||
import asyncio
|
import asyncio
|
||||||
import os
|
|
||||||
from unittest.mock import patch, MagicMock
|
from unittest.mock import patch, MagicMock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
@ -142,21 +141,6 @@ def test_discover_duplicates(hass):
|
||||||
SERVICE_NO_PLATFORM_COMPONENT, BASE_CONFIG)
|
SERVICE_NO_PLATFORM_COMPONENT, BASE_CONFIG)
|
||||||
|
|
||||||
|
|
||||||
@asyncio.coroutine
|
|
||||||
def test_load_component_hassio(hass):
|
|
||||||
"""Test load hassio component."""
|
|
||||||
def discover(netdisco):
|
|
||||||
"""Fake discovery."""
|
|
||||||
return []
|
|
||||||
|
|
||||||
with patch.dict(os.environ, {'HASSIO': "FAKE_HASSIO"}), \
|
|
||||||
patch('homeassistant.components.hassio.async_setup',
|
|
||||||
return_value=mock_coro(return_value=True)) as mock_hassio:
|
|
||||||
yield from mock_discovery(hass, discover)
|
|
||||||
|
|
||||||
assert mock_hassio.called
|
|
||||||
|
|
||||||
|
|
||||||
async def test_discover_config_flow(hass):
|
async def test_discover_config_flow(hass):
|
||||||
"""Test discovery triggering a config flow."""
|
"""Test discovery triggering a config flow."""
|
||||||
discovery_info = {
|
discovery_info = {
|
||||||
|
|
|
@ -34,7 +34,7 @@ def test_from_config_file(hass):
|
||||||
}
|
}
|
||||||
|
|
||||||
with patch_yaml_files(files, True):
|
with patch_yaml_files(files, True):
|
||||||
yield from bootstrap.async_from_config_file('config.yaml')
|
yield from bootstrap.async_from_config_file('config.yaml', hass)
|
||||||
|
|
||||||
assert components == hass.config.components
|
assert components == hass.config.components
|
||||||
|
|
||||||
|
@ -103,3 +103,12 @@ async def test_async_from_config_file_not_mount_deps_folder(loop):
|
||||||
|
|
||||||
await bootstrap.async_from_config_file('mock-path', hass)
|
await bootstrap.async_from_config_file('mock-path', hass)
|
||||||
assert len(mock_mount.mock_calls) == 0
|
assert len(mock_mount.mock_calls) == 0
|
||||||
|
|
||||||
|
|
||||||
|
async def test_load_hassio(hass):
|
||||||
|
"""Test that we load Hass.io component."""
|
||||||
|
with patch.dict(os.environ, {}, clear=True):
|
||||||
|
assert bootstrap._get_components(hass, {}) == set()
|
||||||
|
|
||||||
|
with patch.dict(os.environ, {'HASSIO': '1'}):
|
||||||
|
assert bootstrap._get_components(hass, {}) == {'hassio'}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue