Warn if integrations call async_show_progress without passing a task (#107796)
This commit is contained in:
parent
9471f81a18
commit
24c23d7323
2 changed files with 25 additions and 1 deletions
|
@ -24,6 +24,7 @@ from .helpers.deprecation import (
|
||||||
dir_with_deprecated_constants,
|
dir_with_deprecated_constants,
|
||||||
)
|
)
|
||||||
from .helpers.frame import report
|
from .helpers.frame import report
|
||||||
|
from .loader import async_suggest_report_issue
|
||||||
from .util import uuid as uuid_util
|
from .util import uuid as uuid_util
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
@ -526,6 +527,7 @@ class FlowHandler:
|
||||||
MINOR_VERSION = 1
|
MINOR_VERSION = 1
|
||||||
|
|
||||||
__progress_task: asyncio.Task[Any] | None = None
|
__progress_task: asyncio.Task[Any] | None = None
|
||||||
|
__no_progress_task_reported = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def source(self) -> str | None:
|
def source(self) -> str | None:
|
||||||
|
@ -668,6 +670,21 @@ class FlowHandler:
|
||||||
progress_task: asyncio.Task[Any] | None = None,
|
progress_task: asyncio.Task[Any] | None = None,
|
||||||
) -> FlowResult:
|
) -> FlowResult:
|
||||||
"""Show a progress message to the user, without user input allowed."""
|
"""Show a progress message to the user, without user input allowed."""
|
||||||
|
if progress_task is None and not self.__no_progress_task_reported:
|
||||||
|
self.__no_progress_task_reported = True
|
||||||
|
cls = self.__class__
|
||||||
|
report_issue = async_suggest_report_issue(self.hass, module=cls.__module__)
|
||||||
|
_LOGGER.warning(
|
||||||
|
(
|
||||||
|
"%s::%s calls async_show_progress without passing a progress task, "
|
||||||
|
"this is not valid and will break in Home Assistant Core 2024.8. "
|
||||||
|
"Please %s"
|
||||||
|
),
|
||||||
|
cls.__module__,
|
||||||
|
cls.__name__,
|
||||||
|
report_issue,
|
||||||
|
)
|
||||||
|
|
||||||
result = FlowResult(
|
result = FlowResult(
|
||||||
type=FlowResultType.SHOW_PROGRESS,
|
type=FlowResultType.SHOW_PROGRESS,
|
||||||
flow_id=self.flow_id,
|
flow_id=self.flow_id,
|
||||||
|
|
|
@ -498,7 +498,7 @@ async def test_show_progress_error(hass: HomeAssistant, manager) -> None:
|
||||||
assert result["reason"] == "error"
|
assert result["reason"] == "error"
|
||||||
|
|
||||||
|
|
||||||
async def test_show_progress_legacy(hass: HomeAssistant, manager) -> None:
|
async def test_show_progress_legacy(hass: HomeAssistant, manager, caplog) -> None:
|
||||||
"""Test show progress logic.
|
"""Test show progress logic.
|
||||||
|
|
||||||
This tests the deprecated version where the config flow is responsible for
|
This tests the deprecated version where the config flow is responsible for
|
||||||
|
@ -586,6 +586,13 @@ async def test_show_progress_legacy(hass: HomeAssistant, manager) -> None:
|
||||||
assert result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY
|
assert result["type"] == data_entry_flow.FlowResultType.CREATE_ENTRY
|
||||||
assert result["title"] == "Hello"
|
assert result["title"] == "Hello"
|
||||||
|
|
||||||
|
# Check for deprecation warning
|
||||||
|
assert (
|
||||||
|
"tests.test_data_entry_flow::TestFlow calls async_show_progress without passing"
|
||||||
|
" a progress task, this is not valid and will break in Home Assistant "
|
||||||
|
"Core 2024.8."
|
||||||
|
) in caplog.text
|
||||||
|
|
||||||
|
|
||||||
async def test_show_progress_fires_only_when_changed(
|
async def test_show_progress_fires_only_when_changed(
|
||||||
hass: HomeAssistant, manager
|
hass: HomeAssistant, manager
|
||||||
|
|
Loading…
Add table
Reference in a new issue