Load requirements and dependencies from manifests. Fallback to current REQUIREMENTS
and DEPENDENCIES
(#22717)
* Load dependencies from manifests. Fallback to current DEPENDENCIES * Fix typing * Ignore typing correctly * Split out dependency processing to a new method * Fix tests * Only pull from manifest if dependencies is non empty * Inline temporary function * Fix light tests [skip ci] * Fix tests/common * Fix some mqtt tests [skip ci] * Fix tests and component manifests which have only one platform * Fix rflink tests * Fix more tests and manifests * Readability over shorthand format * Fix demo/notify tests * Load dependencies from manifests. Fallback to current DEPENDENCIES * Load requirements from manifests. Fallback to current REQUIREMENTS * Fix typing * Ignore typing correctly * Split out dependency processing to a new method * Only pull from manifest if dependencies is non empty * Inline temporary function * Fix tests and component manifests which have only one platform * Fix rflink tests * Readability over shorthand format * Clean up requirements * Use integration to resolve deps/reqs * Lint * Lint * revert a change * Revert a test change * Fix types * Fix types * Add back cache for load component * Fix test_component_not_found * Move light.test and device_tracker.test into test package instead with manifest to fix tests * Fix broken device_tracker tests * Add docstrings to __init__ * Fix all of the light tests that I broke earlier * Embed the test.switch platform to fix other tests * Embed and fix the test.imagimage_processing platform * Fix tests for nx584 * Add dependencies from platform file's DEPENDENCIES * Try to setup component when entity_platform is setting up Fix tests in helpers folder * Rewrite test_setup * Simplify * Lint * Disable demo component if running in test Temp workaround to unblock CI tests * Skip demo tests * Fix config entry test * Fix repeat test * Clarify doc * One extra guard * Fix import * Lint * Workaround google tts
This commit is contained in:
parent
8a81286abb
commit
6ba9ccf052
66 changed files with 391 additions and 233 deletions
|
@ -21,7 +21,8 @@ import homeassistant.util.dt as dt_util
|
|||
|
||||
from tests.common import (
|
||||
get_test_home_assistant, MockPlatform, MockModule, mock_coro,
|
||||
async_fire_time_changed, MockEntity, MockConfigEntry)
|
||||
async_fire_time_changed, MockEntity, MockConfigEntry,
|
||||
mock_entity_platform, mock_integration)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
DOMAIN = "test_domain"
|
||||
|
@ -74,11 +75,14 @@ class TestHelpersEntityComponent(unittest.TestCase):
|
|||
"""Test the loading of the platforms."""
|
||||
component_setup = Mock(return_value=True)
|
||||
platform_setup = Mock(return_value=None)
|
||||
loader.set_component(
|
||||
self.hass, 'test_component',
|
||||
MockModule('test_component', setup=component_setup))
|
||||
loader.set_component(self.hass, 'test_domain.mod2',
|
||||
MockPlatform(platform_setup, ['test_component']))
|
||||
|
||||
mock_integration(self.hass,
|
||||
MockModule('test_component', setup=component_setup))
|
||||
# mock the dependencies
|
||||
mock_integration(self.hass,
|
||||
MockModule('mod2', dependencies=['test_component']))
|
||||
mock_entity_platform(self.hass, 'test_domain.mod2',
|
||||
MockPlatform(platform_setup))
|
||||
|
||||
component = EntityComponent(_LOGGER, DOMAIN, self.hass)
|
||||
|
||||
|
@ -100,9 +104,9 @@ class TestHelpersEntityComponent(unittest.TestCase):
|
|||
platform1_setup = Mock(side_effect=Exception('Broken'))
|
||||
platform2_setup = Mock(return_value=None)
|
||||
|
||||
loader.set_component(self.hass, 'test_domain.mod1',
|
||||
mock_entity_platform(self.hass, 'test_domain.mod1',
|
||||
MockPlatform(platform1_setup))
|
||||
loader.set_component(self.hass, 'test_domain.mod2',
|
||||
mock_entity_platform(self.hass, 'test_domain.mod2',
|
||||
MockPlatform(platform2_setup))
|
||||
|
||||
component = EntityComponent(_LOGGER, DOMAIN, self.hass)
|
||||
|
@ -147,7 +151,7 @@ class TestHelpersEntityComponent(unittest.TestCase):
|
|||
"""Test the platform setup."""
|
||||
add_entities([MockEntity(should_poll=True)])
|
||||
|
||||
loader.set_component(self.hass, 'test_domain.platform',
|
||||
mock_entity_platform(self.hass, 'test_domain.platform',
|
||||
MockPlatform(platform_setup))
|
||||
|
||||
component = EntityComponent(_LOGGER, DOMAIN, self.hass)
|
||||
|
@ -174,7 +178,7 @@ class TestHelpersEntityComponent(unittest.TestCase):
|
|||
|
||||
platform = MockPlatform(platform_setup)
|
||||
|
||||
loader.set_component(self.hass, 'test_domain.platform', platform)
|
||||
mock_entity_platform(self.hass, 'test_domain.platform', platform)
|
||||
|
||||
component = EntityComponent(_LOGGER, DOMAIN, self.hass)
|
||||
|
||||
|
@ -222,7 +226,9 @@ def test_platform_not_ready(hass):
|
|||
"""Test that we retry when platform not ready."""
|
||||
platform1_setup = Mock(side_effect=[PlatformNotReady, PlatformNotReady,
|
||||
None])
|
||||
loader.set_component(hass, 'test_domain.mod1',
|
||||
loader.set_component(hass, 'mod1',
|
||||
MockModule('mod1'))
|
||||
loader.set_component(hass, 'mod1.test_domain',
|
||||
MockPlatform(platform1_setup))
|
||||
|
||||
component = EntityComponent(_LOGGER, DOMAIN, hass)
|
||||
|
@ -320,17 +326,15 @@ def test_setup_dependencies_platform(hass):
|
|||
We're explictely testing that we process dependencies even if a component
|
||||
with the same name has already been loaded.
|
||||
"""
|
||||
loader.set_component(hass, 'test_component', MockModule('test_component'))
|
||||
loader.set_component(hass, 'test_component',
|
||||
MockModule('test_component',
|
||||
dependencies=['test_component2']))
|
||||
loader.set_component(hass, 'test_component2',
|
||||
MockModule('test_component2'))
|
||||
loader.set_component(
|
||||
hass, 'test_component.test_domain',
|
||||
MockPlatform(dependencies=['test_component', 'test_component2']))
|
||||
loader.set_component(hass, 'test_component.test_domain', MockPlatform())
|
||||
|
||||
component = EntityComponent(_LOGGER, DOMAIN, hass)
|
||||
|
||||
yield from async_setup_component(hass, 'test_component', {})
|
||||
|
||||
yield from component.async_setup({
|
||||
DOMAIN: {
|
||||
'platform': 'test_component',
|
||||
|
@ -345,7 +349,7 @@ def test_setup_dependencies_platform(hass):
|
|||
async def test_setup_entry(hass):
|
||||
"""Test setup entry calls async_setup_entry on platform."""
|
||||
mock_setup_entry = Mock(return_value=mock_coro(True))
|
||||
loader.set_component(
|
||||
mock_entity_platform(
|
||||
hass, 'test_domain.entry_domain',
|
||||
MockPlatform(async_setup_entry=mock_setup_entry,
|
||||
scan_interval=timedelta(seconds=5)))
|
||||
|
@ -374,7 +378,7 @@ async def test_setup_entry_platform_not_exist(hass):
|
|||
async def test_setup_entry_fails_duplicate(hass):
|
||||
"""Test we don't allow setting up a config entry twice."""
|
||||
mock_setup_entry = Mock(return_value=mock_coro(True))
|
||||
loader.set_component(
|
||||
mock_entity_platform(
|
||||
hass, 'test_domain.entry_domain',
|
||||
MockPlatform(async_setup_entry=mock_setup_entry))
|
||||
|
||||
|
@ -390,7 +394,7 @@ async def test_setup_entry_fails_duplicate(hass):
|
|||
async def test_unload_entry_resets_platform(hass):
|
||||
"""Test unloading an entry removes all entities."""
|
||||
mock_setup_entry = Mock(return_value=mock_coro(True))
|
||||
loader.set_component(
|
||||
mock_entity_platform(
|
||||
hass, 'test_domain.entry_domain',
|
||||
MockPlatform(async_setup_entry=mock_setup_entry))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue