@@ -424,6 +424,27 @@ def service_cleanup():
424
424
log.info(f"service_cleanup seq_num = {seq_num}")
425
425
pyscript.done = [seq_num]
426
426
427
+ # tests for issues #512 and #516
428
+ @state_trigger("pyscript.f10var1 == '1'", kwargs=dict(var1=123, var2='a'))
429
+ def func10a(var_name=None, value=None, trigger_type=None, context=None, old_value=None, **kwargs):
430
+ log.info(f"func10a var = {var_name}, value = {value}, kwargs = {kwargs}")
431
+ pyscript.done = [seq_num, var_name, kwargs]
432
+
433
+ @state_trigger("pyscript.f10var1 == '1'", kwargs=dict(var3=124, var2='b'))
434
+ def func10b(var_name=None, value=None, trigger_type=None, context=None, old_value=None, **kwargs):
435
+ log.info(f"func10b var = {var_name}, value = {value}, kwargs = {kwargs}")
436
+ pyscript.done = [seq_num, var_name, kwargs]
437
+
438
+ @state_trigger("pyscript.f10var1 == '1'", state_hold=1e-6, kwargs=dict(var4=125, var2='c'))
439
+ def func10c(var_name=None, value=None, trigger_type=None, context=None, old_value=None, **kwargs):
440
+ log.info(f"func10c var = {var_name}, value = {value}, kwargs = {kwargs}")
441
+ pyscript.done = [seq_num, var_name, kwargs]
442
+
443
+ @state_trigger("pyscript.f10var1 == '1'", state_hold=1e-6, kwargs=dict(var5=126, var2='d'))
444
+ def func10d(var_name=None, value=None, trigger_type=None, context=None, old_value=None, **kwargs):
445
+ log.info(f"func10d var = {var_name}, value = {value}, kwargs = {kwargs}")
446
+ pyscript.done = [seq_num, var_name, kwargs]
447
+
427
448
""" ,
428
449
)
429
450
# initialize the trigger and active variables
@@ -721,6 +742,18 @@ def service_cleanup():
721
742
await hass .services .async_call ("pyscript" , "service_cleanup" , {})
722
743
assert literal_eval (await wait_until_done (notify_q )) == [seq_num ]
723
744
745
+ hass .states .async_set ("pyscript.f10var1" , 1 )
746
+ for _ in range (0 , 4 ):
747
+ res = literal_eval (await wait_until_done (notify_q ))
748
+ assert res [0 ] == seq_num
749
+ assert res [1 ] == "pyscript.f10var1"
750
+ assert (
751
+ res [2 ] == {"var1" : 123 , "var2" : "a" }
752
+ or res [2 ] == {"var3" : 124 , "var2" : "b" }
753
+ or res [2 ] == {"var4" : 125 , "var2" : "c" }
754
+ or res [2 ] == {"var5" : 126 , "var2" : "d" }
755
+ )
756
+
724
757
725
758
@pytest .mark .asyncio
726
759
async def test_state_trigger_time (hass , caplog ):
0 commit comments