@@ -77,13 +77,11 @@ async def test_decorator_errors(hass, caplog):
77
77
"""
78
78
seq_num = 0
79
79
80
- @time_trigger("startup")
81
- def func_startup_sync(trigger_type=None, trigger_time=None):
82
- global seq_num
83
-
84
- seq_num += 1
85
- log.info(f"func_startup_sync setting pyscript.done = {seq_num}, trigger_type = {trigger_type}, trigger_time = {trigger_time}")
86
- pyscript.done = seq_num
80
+ def add_startup_trig(func):
81
+ @time_trigger("startup")
82
+ def dec_add_startup_wrapper(*args, **kwargs):
83
+ return func(*args, **kwargs)
84
+ return dec_add_startup_wrapper
87
85
88
86
def once(func):
89
87
def once_func(*args, **kwargs):
@@ -96,6 +94,16 @@ def twice_func(*args, **kwargs):
96
94
return func(*args, **kwargs)
97
95
return twice_func
98
96
97
+ @twice
98
+ @add_startup_trig
99
+ @twice
100
+ def func_startup_sync(trigger_type=None, trigger_time=None):
101
+ global seq_num
102
+
103
+ seq_num += 1
104
+ log.info(f"func_startup_sync setting pyscript.done = {seq_num}, trigger_type = {trigger_type}, trigger_time = {trigger_time}")
105
+ pyscript.done = seq_num
106
+
99
107
@state_trigger("pyscript.var1 == '1'")
100
108
@once
101
109
def func1():
@@ -143,6 +151,23 @@ def func4():
143
151
seq_num += 1
144
152
pyscript.done = seq_num
145
153
154
+ @state_trigger("pyscript.var1 == '5'")
155
+ def func5(value=None):
156
+ global seq_num
157
+ global startup_test_save
158
+
159
+ seq_num += 1
160
+ pyscript.done = [seq_num, int(value)]
161
+
162
+ @add_startup_trig
163
+ def startup_test():
164
+ global seq_num
165
+
166
+ seq_num += 1
167
+ pyscript.done = [seq_num, int(value)]
168
+
169
+ startup_test_save = startup_test
170
+
146
171
def add_state_trig(value):
147
172
def dec_add_state_trig(func):
148
173
nonlocal value
@@ -153,24 +178,24 @@ def dec_add_state_wrapper(*args, **kwargs):
153
178
return dec_add_state_wrapper
154
179
return dec_add_state_trig
155
180
156
-
157
- @add_state_trig(5) # same as @state_trigger("pyscript.var1 == '5'")
158
- @add_state_trig(7) # same as @state_trigger("pyscript.var1 == '7'")
159
- @state_trigger("pyscript.var1 == '9'")
160
- def func5():
181
+ @add_state_trig(6) # same as @state_trigger("pyscript.var1 == '6'")
182
+ @add_state_trig(8) # same as @state_trigger("pyscript.var1 == '8'")
183
+ @state_trigger("pyscript.var1 == '10'")
184
+ def func6(value):
161
185
global seq_num
162
186
163
187
seq_num += 1
164
- pyscript.done = seq_num
188
+ pyscript.done = [ seq_num, int(value)]
165
189
166
190
""" ,
167
191
)
168
192
seq_num = 0
169
193
170
- seq_num += 1
171
194
# fire event to start triggers, and handshake when they are running
172
195
hass .bus .async_fire (EVENT_HOMEASSISTANT_STARTED )
173
- assert literal_eval (await wait_until_done (notify_q )) == seq_num
196
+ for _ in range (4 ):
197
+ seq_num += 1
198
+ assert literal_eval (await wait_until_done (notify_q )) == seq_num
174
199
175
200
hass .states .async_set ("pyscript.var1" , 0 )
176
201
hass .states .async_set ("pyscript.var1" , 1 )
@@ -192,7 +217,12 @@ def func5():
192
217
seq_num += 1
193
218
assert literal_eval (await wait_until_done (notify_q )) == seq_num
194
219
220
+ hass .states .async_set ("pyscript.var1" , 5 )
221
+ for _ in range (2 ):
222
+ seq_num += 1
223
+ assert literal_eval (await wait_until_done (notify_q )) == [seq_num , 5 ]
224
+
195
225
for i in range (3 ):
196
- hass .states .async_set ("pyscript.var1" , 5 + 2 * i )
226
+ hass .states .async_set ("pyscript.var1" , 6 + 2 * i )
197
227
seq_num += 1
198
- assert literal_eval (await wait_until_done (notify_q )) == seq_num
228
+ assert literal_eval (await wait_until_done (notify_q )) == [ seq_num , 6 + 2 * i ]
0 commit comments