Custom component loading cleanup (#14211)
* Clean up custom component loading * Fix some tests * Fix some stuff * Make imports work again * Fix tests * Remove debug print * Lint
This commit is contained in:
parent
5d96751168
commit
83d300fd11
50 changed files with 315 additions and 392 deletions
|
@ -49,6 +49,7 @@ class TestSetup:
|
|||
}
|
||||
}, required=True)
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'comp_conf', MockModule('comp_conf', config_schema=config_schema))
|
||||
|
||||
with assert_setup_component(0):
|
||||
|
@ -93,10 +94,12 @@ class TestSetup:
|
|||
'hello': str,
|
||||
})
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'platform_conf',
|
||||
MockModule('platform_conf', platform_schema=platform_schema))
|
||||
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'platform_conf.whatever', MockPlatform('whatever'))
|
||||
|
||||
with assert_setup_component(0):
|
||||
|
@ -179,7 +182,8 @@ class TestSetup:
|
|||
"""Test we do not setup a component twice."""
|
||||
mock_setup = mock.MagicMock(return_value=True)
|
||||
|
||||
loader.set_component('comp', MockModule('comp', setup=mock_setup))
|
||||
loader.set_component(
|
||||
self.hass, 'comp', MockModule('comp', setup=mock_setup))
|
||||
|
||||
assert setup.setup_component(self.hass, 'comp')
|
||||
assert mock_setup.called
|
||||
|
@ -195,6 +199,7 @@ class TestSetup:
|
|||
"""Component setup should fail if requirement can't install."""
|
||||
self.hass.config.skip_pip = False
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'comp', MockModule('comp', requirements=['package==0.0.1']))
|
||||
|
||||
assert not setup.setup_component(self.hass, 'comp')
|
||||
|
@ -210,6 +215,7 @@ class TestSetup:
|
|||
result.append(1)
|
||||
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'comp', MockModule('comp', async_setup=async_setup))
|
||||
|
||||
def setup_component():
|
||||
|
@ -227,20 +233,23 @@ class TestSetup:
|
|||
def test_component_not_setup_missing_dependencies(self):
|
||||
"""Test we do not setup a component if not all dependencies loaded."""
|
||||
deps = ['non_existing']
|
||||
loader.set_component('comp', MockModule('comp', dependencies=deps))
|
||||
loader.set_component(
|
||||
self.hass, 'comp', MockModule('comp', dependencies=deps))
|
||||
|
||||
assert not setup.setup_component(self.hass, 'comp', {})
|
||||
assert 'comp' not in self.hass.config.components
|
||||
|
||||
self.hass.data.pop(setup.DATA_SETUP)
|
||||
|
||||
loader.set_component('non_existing', MockModule('non_existing'))
|
||||
loader.set_component(
|
||||
self.hass, 'non_existing', MockModule('non_existing'))
|
||||
assert setup.setup_component(self.hass, 'comp', {})
|
||||
|
||||
def test_component_failing_setup(self):
|
||||
"""Test component that fails setup."""
|
||||
loader.set_component(
|
||||
'comp', MockModule('comp', setup=lambda hass, config: False))
|
||||
self.hass, 'comp',
|
||||
MockModule('comp', setup=lambda hass, config: False))
|
||||
|
||||
assert not setup.setup_component(self.hass, 'comp', {})
|
||||
assert 'comp' not in self.hass.config.components
|
||||
|
@ -251,7 +260,8 @@ class TestSetup:
|
|||
"""Setup that raises exception."""
|
||||
raise Exception('fail!')
|
||||
|
||||
loader.set_component('comp', MockModule('comp', setup=exception_setup))
|
||||
loader.set_component(
|
||||
self.hass, 'comp', MockModule('comp', setup=exception_setup))
|
||||
|
||||
assert not setup.setup_component(self.hass, 'comp', {})
|
||||
assert 'comp' not in self.hass.config.components
|
||||
|
@ -264,11 +274,12 @@ class TestSetup:
|
|||
return True
|
||||
raise Exception('Config not passed in: {}'.format(config))
|
||||
|
||||
loader.set_component('comp_a',
|
||||
MockModule('comp_a', setup=config_check_setup))
|
||||
loader.set_component(
|
||||
self.hass, 'comp_a',
|
||||
MockModule('comp_a', setup=config_check_setup))
|
||||
|
||||
loader.set_component('switch.platform_a', MockPlatform('comp_b',
|
||||
['comp_a']))
|
||||
loader.set_component(
|
||||
self.hass, 'switch.platform_a', MockPlatform('comp_b', ['comp_a']))
|
||||
|
||||
setup.setup_component(self.hass, 'switch', {
|
||||
'comp_a': {
|
||||
|
@ -289,6 +300,7 @@ class TestSetup:
|
|||
mock_setup = mock.MagicMock(spec_set=True)
|
||||
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'switch.platform_a',
|
||||
MockPlatform(platform_schema=platform_schema,
|
||||
setup_platform=mock_setup))
|
||||
|
@ -330,29 +342,34 @@ class TestSetup:
|
|||
def test_disable_component_if_invalid_return(self):
|
||||
"""Test disabling component if invalid return."""
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'disabled_component',
|
||||
MockModule('disabled_component', setup=lambda hass, config: None))
|
||||
|
||||
assert not setup.setup_component(self.hass, 'disabled_component')
|
||||
assert loader.get_component('disabled_component') is None
|
||||
assert loader.get_component(self.hass, 'disabled_component') is None
|
||||
assert 'disabled_component' not in self.hass.config.components
|
||||
|
||||
self.hass.data.pop(setup.DATA_SETUP)
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'disabled_component',
|
||||
MockModule('disabled_component', setup=lambda hass, config: False))
|
||||
|
||||
assert not setup.setup_component(self.hass, 'disabled_component')
|
||||
assert loader.get_component('disabled_component') is not None
|
||||
assert loader.get_component(
|
||||
self.hass, 'disabled_component') is not None
|
||||
assert 'disabled_component' not in self.hass.config.components
|
||||
|
||||
self.hass.data.pop(setup.DATA_SETUP)
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'disabled_component',
|
||||
MockModule('disabled_component', setup=lambda hass, config: True))
|
||||
|
||||
assert setup.setup_component(self.hass, 'disabled_component')
|
||||
assert loader.get_component('disabled_component') is not None
|
||||
assert loader.get_component(
|
||||
self.hass, 'disabled_component') is not None
|
||||
assert 'disabled_component' in self.hass.config.components
|
||||
|
||||
def test_all_work_done_before_start(self):
|
||||
|
@ -373,14 +390,17 @@ class TestSetup:
|
|||
return True
|
||||
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'test_component1',
|
||||
MockModule('test_component1', setup=component1_setup))
|
||||
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'test_component2',
|
||||
MockModule('test_component2', setup=component_track_setup))
|
||||
|
||||
loader.set_component(
|
||||
self.hass,
|
||||
'test_component3',
|
||||
MockModule('test_component3', setup=component_track_setup))
|
||||
|
||||
|
@ -409,7 +429,8 @@ def test_component_cannot_depend_config(hass):
|
|||
@asyncio.coroutine
|
||||
def test_component_warn_slow_setup(hass):
|
||||
"""Warn we log when a component setup takes a long time."""
|
||||
loader.set_component('test_component1', MockModule('test_component1'))
|
||||
loader.set_component(
|
||||
hass, 'test_component1', MockModule('test_component1'))
|
||||
with mock.patch.object(hass.loop, 'call_later', mock.MagicMock()) \
|
||||
as mock_call:
|
||||
result = yield from setup.async_setup_component(
|
||||
|
@ -430,7 +451,7 @@ def test_component_warn_slow_setup(hass):
|
|||
def test_platform_no_warn_slow(hass):
|
||||
"""Do not warn for long entity setup time."""
|
||||
loader.set_component(
|
||||
'test_component1',
|
||||
hass, 'test_component1',
|
||||
MockModule('test_component1', platform_schema=PLATFORM_SCHEMA))
|
||||
with mock.patch.object(hass.loop, 'call_later', mock.MagicMock()) \
|
||||
as mock_call:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue