Skip to content

Commit 9e2c02c

Browse files
committed
enhance diagnostic message naming
1 parent 4d2951b commit 9e2c02c

File tree

5 files changed

+46
-49
lines changed

5 files changed

+46
-49
lines changed

robotcode/debugger/__main__.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ async def run_robot(
126126

127127
from ..utils.debugpy import enable_debugpy, wait_for_debugpy_connected
128128
from ..utils.net import check_free_port
129-
from .types import Event
130129
from .debugger import Debugger
130+
from .types import Event
131131

132132
@_logger.call
133133
async def start_debugpy_async() -> None:
@@ -271,7 +271,6 @@ def main() -> None:
271271
description="RobotCode Debugger",
272272
prog=__package__,
273273
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
274-
usage="%(prog)s [arguments]... -- [<robot arguments>]...",
275274
)
276275

277276
parser.add_argument("--version", action="store_true", help="shows the version and exits")
@@ -294,9 +293,7 @@ def main() -> None:
294293
help="timeout to wait for a configuration from client",
295294
)
296295
parser.add_argument("--log", action="store_true", help="enable logging")
297-
parser.add_argument(
298-
"--log-debugger", action="store_true", help="show debugger log messages"
299-
)
296+
parser.add_argument("--log-debugger", action="store_true", help="show debugger log messages")
300297
parser.add_argument("-n", "--no-debug", action="store_true", help="disable debugging")
301298
parser.add_argument("--debug-asyncio", action="store_true", help="enable async io debugging messages")
302299
parser.add_argument("--log-asyncio", action="store_true", help="show asyncio log messages")
@@ -326,6 +323,8 @@ def main() -> None:
326323
)
327324
parser.add_argument("-soe", "--stop-on-entry", action="store_true", help="Stops on entry.")
328325

326+
parser.add_argument("--", help="RobotFramework arguments. (see robot --help)", dest="robot args", nargs="*")
327+
329328
sys_args = sys.argv[1:]
330329

331330
split_index = sys_args.index("--") if "--" in sys_args else -1

robotcode/debugger/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from ..jsonrpc2.protocol import rpc_method
66
from ..jsonrpc2.server import JsonRPCServer, JsonRpcServerMode, TcpParams
77
from ..utils.logging import LoggingDescriptor
8+
from .debugger import Debugger
89
from .protocol import DebugAdapterProtocol
910
from .types import (
1011
ConfigurationDoneArguments,
@@ -39,7 +40,6 @@
3940
VariablesArguments,
4041
VariablesResponseBody,
4142
)
42-
from .debugger import Debugger
4343

4444
TCP_DEFAULT_PORT = 6612
4545

robotcode/language_server/robotframework/diagnostics/namespace.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
is_embedded_keyword,
4747
)
4848

49-
DIAGNOSTICS_SOURCE_NAME = "RobotCode"
49+
DIAGNOSTICS_SOURCE_NAME = "robotcode.namespace"
5050

5151

5252
class DiagnosticsError(Exception):

robotcode/language_server/robotframework/parts/diagnostics.py

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from ...common.parts.diagnostics import DiagnosticsResult
99
from ...common.text_document import TextDocument
1010
from ...common.types import Diagnostic, DiagnosticSeverity, Position, Range
11-
from ..utils.ast import range_from_token
11+
from ..utils.ast import Token, range_from_token
1212

1313
if TYPE_CHECKING:
1414
from ..protocol import RobotLanguageServerProtocol
@@ -22,7 +22,7 @@ class RobotDiagnosticsProtocolPart(RobotLanguageServerProtocolPart):
2222
def __init__(self, parent: RobotLanguageServerProtocol) -> None:
2323
super().__init__(parent)
2424

25-
self.source_name = "robotcode"
25+
self.source_name = "robotcode.diagnostics"
2626

2727
parent.diagnostics.collect.add(self.collect_token_errors)
2828
# parent.diagnostics.collect.add(self.collect_model_errors)
@@ -35,7 +35,7 @@ def __init__(self, parent: RobotLanguageServerProtocol) -> None:
3535
async def namespace_invalidated(self, sender: Any, document: TextDocument) -> None:
3636
await self.parent.diagnostics.start_publish_diagnostics_task(document)
3737

38-
def _create_error(self, node: ast.AST, msg: str, source: Optional[str] = None) -> Diagnostic:
38+
def _create_error_from_node(self, node: ast.AST, msg: str, source: Optional[str] = None) -> Diagnostic:
3939
return Diagnostic(
4040
range=Range(
4141
start=Position(line=node.lineno - 1, character=node.col_offset),
@@ -47,6 +47,15 @@ def _create_error(self, node: ast.AST, msg: str, source: Optional[str] = None) -
4747
code="ModelError",
4848
)
4949

50+
def _create_error_from_token(self, token: Token, source: Optional[str] = None) -> Diagnostic:
51+
return Diagnostic(
52+
range=range_from_token(token),
53+
message=token.error if token.error is not None else "Unknown Error.",
54+
severity=DiagnosticSeverity.ERROR,
55+
source=source if source is not None else self.source_name,
56+
code="TokenError",
57+
)
58+
5059
@language_id("robotframework")
5160
@_logger.call
5261
async def collect_token_errors(self, sender: Any, document: TextDocument) -> DiagnosticsResult:
@@ -57,38 +66,23 @@ async def collect_token_errors(self, sender: Any, document: TextDocument) -> Dia
5766

5867
for token in await self.parent.documents_cache.get_tokens(document):
5968
if token.type in [Token.ERROR, Token.FATAL_ERROR]:
60-
result.append(
61-
Diagnostic(
62-
range=range_from_token(token),
63-
message=token.error if token.error is not None else "Unknown Error.",
64-
severity=DiagnosticSeverity.ERROR,
65-
source="robot",
66-
code="TokenError",
67-
)
68-
)
69+
result.append(self._create_error_from_token(token))
6970

7071
try:
7172
for variable_token in token.tokenize_variables():
7273
if variable_token == token:
7374
break
7475

7576
if variable_token.type in [Token.ERROR, Token.FATAL_ERROR]:
76-
result.append(
77-
Diagnostic(
78-
range=range_from_token(variable_token),
79-
message=token.error if token.error is not None else "Unknown Error.",
80-
severity=DiagnosticSeverity.ERROR,
81-
source="robot",
82-
code="TokenError",
83-
)
84-
)
77+
result.append(self._create_error_from_token(variable_token))
78+
8579
except VariableError as e:
8680
result.append(
8781
Diagnostic(
8882
range=range_from_token(token),
8983
message=str(e),
9084
severity=DiagnosticSeverity.ERROR,
91-
source="robot",
85+
source=self.source_name,
9286
code=type(e).__qualname__,
9387
)
9488
)
@@ -115,11 +109,11 @@ async def find_from(cls, model: ast.AST, parent: RobotDiagnosticsProtocolPart) -
115109
async def generic_visit(self, node: ast.AST) -> None:
116110
error = getattr(node, "error", None)
117111
if error is not None:
118-
self.errors.append(self.parent._create_error(node, error, "robot.visitor"))
112+
self.errors.append(self.parent._create_error_from_node(node, error))
119113
errors = getattr(node, "errors", None)
120114
if errors is not None:
121115
for e in errors:
122-
self.errors.append(self.parent._create_error(node, e, "robot.visitor"))
116+
self.errors.append(self.parent._create_error_from_node(node, e))
123117
await super().generic_visit(node)
124118

125119
return DiagnosticsResult(
@@ -137,11 +131,11 @@ async def collect_walk_model_errors(self, sender: Any, document: TextDocument) -
137131
async for node in walk(await self.parent.documents_cache.get_model(document)):
138132
error = getattr(node, "error", None)
139133
if error is not None:
140-
result.append(self._create_error(node, error))
134+
result.append(self._create_error_from_node(node, error))
141135
errors = getattr(node, "errors", None)
142136
if errors is not None:
143137
for e in errors:
144-
result.append(self._create_error(node, e))
138+
result.append(self._create_error_from_node(node, e))
145139

146140
return DiagnosticsResult(self.collect_walk_model_errors, result)
147141

robotcode/language_server/robotframework/parts/discovering.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from __future__ import annotations
2+
23
from pathlib import Path
34
from typing import TYPE_CHECKING, Iterator, List, Optional
45

@@ -150,22 +151,25 @@ def nonexisting_paths(paths: List[str]) -> Iterator[str]:
150151

151152
@rpc_method(name="robot/discovering/getTestsFromDocument", param_type=GetTestsParams)
152153
async def get_tests_from_document(self, text_document: TextDocumentIdentifier, id: Optional[str]) -> List[TestItem]:
153-
154+
from robot.output.logger import LOGGER
154155
from robot.running import TestSuite
155156

156-
model = TestSuite.from_model(await self.parent.documents_cache.get_model(self.get_document(text_document.uri)))
157-
158-
return [
159-
TestItem(
160-
type="test",
161-
id=f"{id}.{v.longname}" if id else v.longname,
162-
label=v.name,
163-
uri=str(Uri.from_path(v.source)),
164-
range=Range(
165-
start=Position(line=v.lineno - 1, character=0),
166-
end=Position(line=v.lineno - 1, character=0),
167-
),
168-
tags=[t for t in v.tags],
157+
with LOGGER.cache_only:
158+
model = TestSuite.from_model(
159+
await self.parent.documents_cache.get_model(self.get_document(text_document.uri))
169160
)
170-
for v in model.tests
171-
]
161+
162+
return [
163+
TestItem(
164+
type="test",
165+
id=f"{id}.{v.longname}" if id else v.longname,
166+
label=v.name,
167+
uri=str(Uri.from_path(v.source)),
168+
range=Range(
169+
start=Position(line=v.lineno - 1, character=0),
170+
end=Position(line=v.lineno - 1, character=0),
171+
),
172+
tags=[t for t in v.tags],
173+
)
174+
for v in model.tests
175+
]

0 commit comments

Comments
 (0)