@@ -216,6 +216,17 @@ class PathMapping(NamedTuple):
216
216
remote_root : Optional [str ]
217
217
218
218
219
+ class DebugLogger :
220
+ def __init__ (self ) -> None :
221
+ self .steps : List [Any ] = []
222
+
223
+ def start_keyword (self , kw : Any ) -> None :
224
+ self .steps .append (kw )
225
+
226
+ def end_keyword (self , kw : Any ) -> None :
227
+ self .steps .pop ()
228
+
229
+
219
230
class Debugger :
220
231
__instance : ClassVar [Optional [Debugger ]] = None
221
232
__lock : ClassVar = threading .RLock ()
@@ -285,6 +296,9 @@ def __init__(self) -> None:
285
296
self ._after_evaluate_keyword_event .set ()
286
297
self .expression_mode = False
287
298
299
+ self .debug_logger : Optional [DebugLogger ] = None
300
+ self .run_started = False
301
+
288
302
@property
289
303
def state (self ) -> State :
290
304
return self ._state
@@ -785,6 +799,11 @@ def remove_stackframe_entry(
785
799
self .stack_frames [0 ].stack_frames .popleft ()
786
800
787
801
def start_suite (self , name : str , attributes : Dict [str , Any ]) -> None :
802
+ if not self .run_started :
803
+ self .run_started = True
804
+ self .debug_logger = DebugLogger ()
805
+ LOGGER .register_logger (self .debug_logger )
806
+
788
807
source = attributes .get ("source" , None )
789
808
line_no = attributes .get ("lineno" , 1 )
790
809
longname = attributes .get ("longname" , "" )
@@ -956,18 +975,17 @@ def _should_run_except(self, branch: Any, error: str) -> bool:
956
975
return False
957
976
958
977
def is_not_caugthed_by_except (self , message : Optional [str ]) -> bool :
959
- if get_robot_version () >= ( 5 , 0 ) :
960
- from robot . running . model import Try
978
+ if not message :
979
+ return True
961
980
962
- if not message :
963
- return True
981
+ if get_robot_version () >= ( 5 , 0 ) and self . debug_logger :
982
+ from robot . running . model import Try
964
983
965
- if EXECUTION_CONTEXTS . current .steps :
966
- for branch in [f .data for f in reversed (EXECUTION_CONTEXTS . current .steps ) if isinstance (f .data , Try )]:
984
+ if self . debug_logger .steps :
985
+ for branch in [f .data for f in reversed (self . debug_logger .steps ) if isinstance (f .data , Try )]:
967
986
for except_branch in branch .except_branches :
968
987
if self ._should_run_except (except_branch , message ):
969
988
return False
970
-
971
989
return True
972
990
973
991
def end_keyword (self , name : str , attributes : Dict [str , Any ]) -> None :
@@ -1541,7 +1559,7 @@ def completions(
1541
1559
CompletionItem (
1542
1560
label = library .name ,
1543
1561
text = library .name ,
1544
- sort_text = f"010_ { library .name } " ,
1562
+ sort_text = f"020_ { library .name } " ,
1545
1563
type = CompletionItemType .MODULE ,
1546
1564
)
1547
1565
)
@@ -1561,7 +1579,7 @@ def completions(
1561
1579
CompletionItem (
1562
1580
label = resource .name ,
1563
1581
text = resource .name ,
1564
- sort_text = f"010_ { resource .name } " ,
1582
+ sort_text = f"020_ { resource .name } " ,
1565
1583
type = CompletionItemType .MODULE ,
1566
1584
)
1567
1585
)
@@ -1576,4 +1594,13 @@ def completions(
1576
1594
)
1577
1595
)
1578
1596
1597
+ for var in evaluate_context .variables .as_dict ().keys ():
1598
+ result .append (
1599
+ CompletionItem (
1600
+ label = var ,
1601
+ text = var ,
1602
+ sort_text = f"010_{ var } " ,
1603
+ type = CompletionItemType .VARIABLE ,
1604
+ )
1605
+ )
1579
1606
return result
0 commit comments