Move legacy tts setup to use tracked tasks (#113717)
* Move legacy tts setup to a tracked task * comment * fix test * fix test * fix more tests * tweak
This commit is contained in:
parent
719d373bd7
commit
8f33bad4ef
3 changed files with 18 additions and 3 deletions
|
@ -319,9 +319,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||||
|
|
||||||
platform_setups = await async_setup_legacy(hass, config)
|
platform_setups = await async_setup_legacy(hass, config)
|
||||||
|
|
||||||
if platform_setups:
|
|
||||||
await asyncio.wait([asyncio.create_task(setup) for setup in platform_setups])
|
|
||||||
|
|
||||||
component.async_register_entity_service(
|
component.async_register_entity_service(
|
||||||
"speak",
|
"speak",
|
||||||
{
|
{
|
||||||
|
@ -345,6 +342,15 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||||
schema=SCHEMA_SERVICE_CLEAR_CACHE,
|
schema=SCHEMA_SERVICE_CLEAR_CACHE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
for setup in platform_setups:
|
||||||
|
# Tasks are created as tracked tasks to ensure startup
|
||||||
|
# waits for them to finish, but we explicitly do not
|
||||||
|
# want to wait for them to finish here because we want
|
||||||
|
# any config entries that use tts as a base platform
|
||||||
|
# to be able to start with out having to wait for the
|
||||||
|
# legacy platforms to finish setting up.
|
||||||
|
hass.async_create_task(setup, eager_start=True)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,7 @@ async def test_prefs_default_voice(
|
||||||
"""Test cloud provider uses the preferences."""
|
"""Test cloud provider uses the preferences."""
|
||||||
assert await async_setup_component(hass, "homeassistant", {})
|
assert await async_setup_component(hass, "homeassistant", {})
|
||||||
assert await async_setup_component(hass, TTS_DOMAIN, {TTS_DOMAIN: platform_config})
|
assert await async_setup_component(hass, TTS_DOMAIN, {TTS_DOMAIN: platform_config})
|
||||||
|
await hass.async_block_till_done()
|
||||||
assert await async_setup_component(hass, DOMAIN, {DOMAIN: {}})
|
assert await async_setup_component(hass, DOMAIN, {DOMAIN: {}})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
@ -108,6 +109,7 @@ async def test_prefs_default_voice(
|
||||||
|
|
||||||
on_start_callback = cloud.register_on_start.call_args[0][0]
|
on_start_callback = cloud.register_on_start.call_args[0][0]
|
||||||
await on_start_callback()
|
await on_start_callback()
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
engine = get_engine_instance(hass, engine_id)
|
engine = get_engine_instance(hass, engine_id)
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ async def test_service_say(
|
||||||
await async_setup_component(
|
await async_setup_component(
|
||||||
hass, tts.DOMAIN, {tts.DOMAIN: {"platform": "microsoft", "api_key": ""}}
|
hass, tts.DOMAIN, {tts.DOMAIN: {"platform": "microsoft", "api_key": ""}}
|
||||||
)
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
tts.DOMAIN,
|
tts.DOMAIN,
|
||||||
|
@ -110,6 +111,7 @@ async def test_service_say_en_gb_config(
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
tts.DOMAIN,
|
tts.DOMAIN,
|
||||||
|
@ -151,6 +153,7 @@ async def test_service_say_en_gb_service(
|
||||||
tts.DOMAIN,
|
tts.DOMAIN,
|
||||||
{tts.DOMAIN: {"platform": "microsoft", "api_key": ""}},
|
{tts.DOMAIN: {"platform": "microsoft", "api_key": ""}},
|
||||||
)
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
tts.DOMAIN,
|
tts.DOMAIN,
|
||||||
|
@ -201,6 +204,7 @@ async def test_service_say_fa_ir_config(
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
tts.DOMAIN,
|
tts.DOMAIN,
|
||||||
|
@ -246,6 +250,7 @@ async def test_service_say_fa_ir_service(
|
||||||
}
|
}
|
||||||
|
|
||||||
await async_setup_component(hass, tts.DOMAIN, config)
|
await async_setup_component(hass, tts.DOMAIN, config)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
tts.DOMAIN,
|
tts.DOMAIN,
|
||||||
|
@ -303,6 +308,7 @@ async def test_invalid_language(hass: HomeAssistant, mock_tts, calls) -> None:
|
||||||
tts.DOMAIN,
|
tts.DOMAIN,
|
||||||
{tts.DOMAIN: {"platform": "microsoft", "api_key": "", "language": "en"}},
|
{tts.DOMAIN: {"platform": "microsoft", "api_key": "", "language": "en"}},
|
||||||
)
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
with pytest.raises(ServiceNotFound):
|
with pytest.raises(ServiceNotFound):
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
|
@ -327,6 +333,7 @@ async def test_service_say_error(
|
||||||
await async_setup_component(
|
await async_setup_component(
|
||||||
hass, tts.DOMAIN, {tts.DOMAIN: {"platform": "microsoft", "api_key": ""}}
|
hass, tts.DOMAIN, {tts.DOMAIN: {"platform": "microsoft", "api_key": ""}}
|
||||||
)
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
await hass.services.async_call(
|
await hass.services.async_call(
|
||||||
tts.DOMAIN,
|
tts.DOMAIN,
|
||||||
|
|
Loading…
Add table
Reference in a new issue