Skip to content

Commit 8fd1237

Browse files
committed
tests/run_test.py bugfix
Objects can be deleted when sending them events. Therefore, first collect all objects by tree_walk, then iterate the collected objects and send events to each Before sending event to an object check if it is valid. An invalid object would cast to None: lv.obj.__cast__(obj) is not None for a valid object
1 parent 98e6bdc commit 8fd1237

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

tests/run_test.py

+23-17
Original file line numberDiff line numberDiff line change
@@ -38,25 +38,30 @@ def __init__(self):
3838
self.lv.init()
3939
driver = display_driver_utils.driver()
4040
scr = self.lv.scr_act()
41+
self.objects = []
4142

42-
43-
def exec_actions(self, obj, user_data):
44-
if obj.get_child_id() <= self.MAX_CHILDREN:
45-
if hasattr(obj, 'lv_obj'):
46-
obj = obj.lv_obj
47-
obj_info = ''
48-
if hasattr(obj, 'get_text'):
49-
obj_info += ' text:"%s"' % obj.get_text()
50-
if hasattr(obj, 'get_value'):
51-
obj_info += ' value:"%s"' % obj.get_value()
52-
print('%s %s' % (obj, obj_info))
53-
for event in self.events:
54-
# print('\t%s' % get_member_name(lv.EVENT, event))
55-
self.lv.event_send(obj, event, None)
56-
self.time.sleep_ms(self.DELAY_MS)
57-
self.gc.collect()
43+
def collect_objects(self, obj, user_data):
44+
if hasattr(obj, 'lv_obj'):
45+
obj = obj.lv_obj
46+
self.objects.append(obj)
5847
return self.lv.obj.TREE_WALK.NEXT
5948

49+
def send_events(self):
50+
for obj in self.objects:
51+
if self.lv.obj.__cast__(obj): # skip deleted objects
52+
obj_info = ''
53+
if hasattr(obj, 'get_text'):
54+
obj_info += ' text:"%s"' % obj.get_text()
55+
if hasattr(obj, 'get_value'):
56+
obj_info += ' value:"%s"' % obj.get_value()
57+
print('%s %s' % (obj, obj_info))
58+
for event in self.events:
59+
if not self.lv.obj.__cast__(obj): # skip deleted objects
60+
continue
61+
# print('\t%s' % get_member_name(lv.EVENT, event))
62+
self.lv.event_send(obj, event, None)
63+
self.time.sleep_ms(self.DELAY_MS)
64+
self.gc.collect()
6065

6166
def run(self):
6267
try:
@@ -78,7 +83,8 @@ def run(self):
7883
exec(file_string)
7984
self.time.sleep_ms(self.DELAY_MS)
8085
self.gc.collect()
81-
self.lv.scr_act().tree_walk(self.exec_actions, None)
86+
self.lv.scr_act().tree_walk(self.collect_objects, None)
87+
self.send_events()
8288
self.time.sleep_ms(self.DELAY_MS)
8389
if lv_utils.event_loop.is_running():
8490
lv_utils.event_loop.current_instance().deinit()

0 commit comments

Comments
 (0)