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:
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user