Skip to content

Commit f784613

Browse files
committed
fix(debugger): hide uncaught exceptions now also works correctly for RF >=5 and < 6.1
1 parent 6b1ffb6 commit f784613

File tree

1 file changed

+36
-9
lines changed

1 file changed

+36
-9
lines changed

packages/debugger/src/robotcode/debugger/debugger.py

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,17 @@ class PathMapping(NamedTuple):
216216
remote_root: Optional[str]
217217

218218

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+
219230
class Debugger:
220231
__instance: ClassVar[Optional[Debugger]] = None
221232
__lock: ClassVar = threading.RLock()
@@ -285,6 +296,9 @@ def __init__(self) -> None:
285296
self._after_evaluate_keyword_event.set()
286297
self.expression_mode = False
287298

299+
self.debug_logger: Optional[DebugLogger] = None
300+
self.run_started = False
301+
288302
@property
289303
def state(self) -> State:
290304
return self._state
@@ -785,6 +799,11 @@ def remove_stackframe_entry(
785799
self.stack_frames[0].stack_frames.popleft()
786800

787801
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+
788807
source = attributes.get("source", None)
789808
line_no = attributes.get("lineno", 1)
790809
longname = attributes.get("longname", "")
@@ -956,18 +975,17 @@ def _should_run_except(self, branch: Any, error: str) -> bool:
956975
return False
957976

958977
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
961980

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
964983

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)]:
967986
for except_branch in branch.except_branches:
968987
if self._should_run_except(except_branch, message):
969988
return False
970-
971989
return True
972990

973991
def end_keyword(self, name: str, attributes: Dict[str, Any]) -> None:
@@ -1541,7 +1559,7 @@ def completions(
15411559
CompletionItem(
15421560
label=library.name,
15431561
text=library.name,
1544-
sort_text=f"010_{library.name}",
1562+
sort_text=f"020_{library.name}",
15451563
type=CompletionItemType.MODULE,
15461564
)
15471565
)
@@ -1561,7 +1579,7 @@ def completions(
15611579
CompletionItem(
15621580
label=resource.name,
15631581
text=resource.name,
1564-
sort_text=f"010_{resource.name}",
1582+
sort_text=f"020_{resource.name}",
15651583
type=CompletionItemType.MODULE,
15661584
)
15671585
)
@@ -1576,4 +1594,13 @@ def completions(
15761594
)
15771595
)
15781596

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+
)
15791606
return result

0 commit comments

Comments
 (0)