1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Fix inner callback decorators with partials (#102873)

This commit is contained in:
J. Nick Koston
2023-10-28 08:38:42 -05:00
committed by GitHub
parent 524e20536d
commit 009dc91b97
4 changed files with 68 additions and 21 deletions

View File

@@ -2498,3 +2498,39 @@ async def test_get_release_channel(version: str, release_channel: str) -> None:
"""Test if release channel detection works from Home Assistant version number."""
with patch("homeassistant.core.__version__", f"{version}"):
assert get_release_channel() == release_channel
def test_is_callback_check_partial():
"""Test is_callback_check_partial matches HassJob."""
@ha.callback
def callback_func():
pass
def not_callback_func():
pass
assert ha.is_callback(callback_func)
assert HassJob(callback_func).job_type == ha.HassJobType.Callback
assert ha.is_callback_check_partial(functools.partial(callback_func))
assert HassJob(functools.partial(callback_func)).job_type == ha.HassJobType.Callback
assert ha.is_callback_check_partial(
functools.partial(functools.partial(callback_func))
)
assert HassJob(functools.partial(functools.partial(callback_func))).job_type == (
ha.HassJobType.Callback
)
assert not ha.is_callback_check_partial(not_callback_func)
assert HassJob(not_callback_func).job_type == ha.HassJobType.Executor
assert not ha.is_callback_check_partial(functools.partial(not_callback_func))
assert HassJob(functools.partial(not_callback_func)).job_type == (
ha.HassJobType.Executor
)
# We check the inner function, not the outer one
assert not ha.is_callback_check_partial(
ha.callback(functools.partial(not_callback_func))
)
assert HassJob(ha.callback(functools.partial(not_callback_func))).job_type == (
ha.HassJobType.Executor
)