From 456ab2c0a30a490e3324d0376cd7fe651a1c2c4a Mon Sep 17 00:00:00 2001 From: Daniel Biehl Date: Sun, 11 Feb 2024 15:06:49 +0100 Subject: [PATCH 1/6] fix(debugger): filling zeros are now added to the name of an element so that elements are sorted correctly in the variable view at debugging time --- packages/debugger/src/robotcode/debugger/debugger.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/debugger/src/robotcode/debugger/debugger.py b/packages/debugger/src/robotcode/debugger/debugger.py index 433d1ff6d..195b81188 100644 --- a/packages/debugger/src/robotcode/debugger/debugger.py +++ b/packages/debugger/src/robotcode/debugger/debugger.py @@ -1508,8 +1508,11 @@ def get_variables( if value is not None: c = 0 + + padding = len(str(len(value))) + for i, v in enumerate(value, start or 0): - result[str(i)] = self._create_variable(str(i), v) + result[str(i)] = self._create_variable(str(i).zfill(padding), v) c += 1 if count is not None and c >= count: break From add8297e851f1226dd980fa543bb4c9f124ad441 Mon Sep 17 00:00:00 2001 From: Daniel Biehl Date: Mon, 12 Feb 2024 13:57:04 +0100 Subject: [PATCH 2/6] fix(debugger): add `BuiltIn.Run Keyword And Return Status` to the list of keywords that caught exceptions on inner keywords --- packages/debugger/src/robotcode/debugger/debugger.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/debugger/src/robotcode/debugger/debugger.py b/packages/debugger/src/robotcode/debugger/debugger.py index 195b81188..f688071fc 100644 --- a/packages/debugger/src/robotcode/debugger/debugger.py +++ b/packages/debugger/src/robotcode/debugger/debugger.py @@ -1022,6 +1022,7 @@ def start_keyword(self, name: str, attributes: Dict[str, Any]) -> None: "BuiltIn.Run Keyword And Warn On Failure", "BuiltIn.Wait Until Keyword Succeeds", "BuiltIn.Run Keyword And Continue On Failure", + "BuiltIn.Run Keyword And Return Status", ] def is_not_caughted_by_keyword(self) -> bool: From 9bbe68bcd9ba718d8293c27ee3e64a6d9cd792a4 Mon Sep 17 00:00:00 2001 From: Daniel Biehl Date: Mon, 12 Feb 2024 14:14:18 +0100 Subject: [PATCH 3/6] feat(vscode): Organize vscode settings in groups --- package.json | 358 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 209 insertions(+), 149 deletions(-) diff --git a/package.json b/package.json index e6f861fd7..5bbb1e464 100644 --- a/package.json +++ b/package.json @@ -351,7 +351,7 @@ ], "configuration": [ { - "title": "RobotCode", + "title": "General", "type": "object", "properties": { "robotcode.extraArgs": { @@ -377,39 +377,70 @@ "default": "", "description": "Specifies the python executable to be used for RobotCode. If no path is specified, try to get it from \"python\" extension.", "scope": "resource" - }, + } + } + }, + { + "title": "Editing", + "type": "object", + "properties": { "robotcode.editor.4SpacesTab": { "type": "boolean", "default": true, "description": "If actived insert 4 spaces if TAB is pressed." }, - "robotcode.languageServer.mode": { - "type": "string", - "default": "pipe", - "description": "Specifies the mode the language server is started.", - "enum": [ - "stdio", - "pipe", - "socket", - "tcp" - ], + "robotcode.completion.filterDefaultLanguage": { + "type": "boolean", + "default": false, + "markdownDescription": "Filter default language (English) for completion if there is another language defined.", "scope": "resource" }, - "robotcode.languageServer.tcpPort": { - "type": "number", - "default": 0, - "description": "If the port is specified, connect to the language server previously started at the given port.", + "robotcode.completion.headerStyle": { + "type": "string", + "default": null, + "markdownDescription": "Defines the header style format. If not defined ```*** {name} ***``` is used.", "scope": "resource" }, - "robotcode.languageServer.extraArgs": { - "type": "array", - "default": [], - "items": { - "type": "string" - }, - "markdownDescription": "Specifies extra arguments to be passed to the `robotcode language-server` command line tool (i.e.: [`--log`, `--log-level=TRACE`, `--log-calls`]).", + "robotcode.inlayHints.parameterNames": { + "type": "boolean", + "default": true, + "markdownDescription": "Enable/disable inlay hints for parameter names.", "scope": "resource" }, + "robotcode.inlayHints.namespaces": { + "type": "boolean", + "default": true, + "markdownDescription": "Enable/disable inlay hints for namespaces.", + "scope": "resource" + } + } + }, + { + "title": "Run", + "type": "object", + "properties": { + "robotcode.run.openOutputAfterRun": { + "type": "string", + "enum": [ + "none", + "report", + "log" + ], + "enumDescriptions": [ + "Do not open anyting", + "Open the report html file.", + "Open the log.html file." + ], + "default": "none", + "description": "Defines if the report or log file should be opened after a run.", + "scope": "resource" + } + } + }, + { + "title": "Debug", + "type": "object", + "properties": { "robotcode.debugLauncher.mode": { "type": "string", "default": "stdio", @@ -447,6 +478,70 @@ "markdownDescription": "Specifies the arguments to be passed to the debug adapter.", "scope": "resource" }, + "robotcode.debug.defaultConfiguration": { + "type": "object", + "default": {}, + "description": "Specifies the default configuration to run or debug robot tests.", + "scope": "resource" + }, + "robotcode.debug.attachPython": { + "type": "boolean", + "description": "Attach also the python debugger if a robot test starts.", + "default": false, + "scope": "resource" + }, + "robotcode.debug.outputMessages": { + "type": "boolean", + "description": "Output messages from robotframework in debug console.", + "default": false, + "scope": "resource" + }, + "robotcode.debug.outputLog": { + "type": "boolean", + "description": "Output log messages from robotframework in debug console.", + "default": true, + "scope": "resource" + }, + "robotcode.debug.outputTimestamps": { + "type": "boolean", + "description": "Include timestamps in log and output messages.", + "default": false, + "scope": "resource" + }, + "robotcode.debug.groupOutput": { + "type": "boolean", + "description": "Group start and stop suite/test/keyword messages in debug console.", + "default": false, + "scope": "resource" + }, + "robotcode.debug.useExternalDebugpy": { + "type": "boolean", + "description": "Use the debugpy in python environment, not from the python extension.", + "default": false, + "scope": "resource" + }, + "robotcode.debug.defaultConsole": { + "type": "string", + "enum": [ + "internalConsole", + "integratedTerminal", + "externalTerminal" + ], + "default": "integratedTerminal", + "enumDescriptions": [ + "No terminal (pipes the output to the client debug console).", + "Use terminal integrated in client.", + "External terminal (configured in user settings)." + ], + "description": "Default setting for where to launch the debug target: internal console, integrated terminal, or external terminal.", + "scope": "resource" + } + } + }, + { + "title": "Robot", + "type": "object", + "properties": { "robotcode.robot.args": { "type": "array", "default": [], @@ -531,7 +626,13 @@ "markdownDescription": "Specifies robot execution mode. Corresponds to the `--rpa` or `--norpa` option of __robot__.", "default": "default", "scope": "resource" - }, + } + } + }, + { + "title": "Analysis", + "type": "object", + "properties": { "robotcode.analysis.cache.saveLocation": { "type": "string", "enum": [ @@ -573,80 +674,52 @@ "markdownDescription": "Specifies a global [search order](https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#specifying-explicit-priority-between-libraries-and-resources) for libraries and resources. This is handy when you have libraries containing keywords with the same name. RobotCode is unable to analyze the library search order in a file specified with [`Set Library Search Order`](https://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Set%20Library%20Search%20Order), so you can define a global order here. Just make sure to call the `Set Library Search Order` keyword somewhere in your robot file or internally in your library.", "scope": "resource" }, - "robotcode.run.openOutputAfterRun": { + "robotcode.analysis.findUnusedReferences": { + "type": "boolean", + "default": false, + "markdownDescription": "Find and reports unused keyword and variable references.", + "scope": "resource" + }, + "robotcode.analysis.diagnosticMode": { "type": "string", "enum": [ - "none", - "report", - "log" + "openFilesOnly", + "workspace" ], + "default": "openFilesOnly", "enumDescriptions": [ - "Do not open anyting", - "Open the report html file.", - "Open the log.html file." + "Analyzes and reports problems only on open files.", + "Analyzes and reports problems on all files in the workspace." ], - "default": "none", - "description": "Defines if the report or log file should be opened after a run.", - "scope": "resource" - }, - "robotcode.debug.defaultConfiguration": { - "type": "object", - "default": {}, - "description": "Specifies the default configuration to run or debug robot tests.", - "scope": "resource" - }, - "robotcode.debug.attachPython": { - "type": "boolean", - "description": "Attach also the python debugger if a robot test starts.", - "default": false, - "scope": "resource" - }, - "robotcode.debug.outputMessages": { - "type": "boolean", - "description": "Output messages from robotframework in debug console.", - "default": false, - "scope": "resource" - }, - "robotcode.debug.outputLog": { - "type": "boolean", - "description": "Output log messages from robotframework in debug console.", - "default": true, - "scope": "resource" - }, - "robotcode.debug.outputTimestamps": { - "type": "boolean", - "description": "Include timestamps in log and output messages.", - "default": false, - "scope": "resource" - }, - "robotcode.debug.groupOutput": { - "type": "boolean", - "description": "Group start and stop suite/test/keyword messages in debug console.", - "default": false, - "scope": "resource" - }, - "robotcode.debug.useExternalDebugpy": { - "type": "boolean", - "description": "Use the debugpy in python environment, not from the python extension.", - "default": false, + "description": "Analysis mode for diagnostics.", "scope": "resource" }, - "robotcode.debug.defaultConsole": { + "robotcode.analysis.progressMode": { "type": "string", "enum": [ - "internalConsole", - "integratedTerminal", - "externalTerminal" + "off", + "simple", + "detailed" ], - "default": "integratedTerminal", + "default": "off", "enumDescriptions": [ - "No terminal (pipes the output to the client debug console).", - "Use terminal integrated in client.", - "External terminal (configured in user settings)." + "Show only simple progress messages.", + "Show detailed progress messages. Displays the filenames that are currently being analyzed." ], - "description": "Default setting for where to launch the debug target: internal console, integrated terminal, or external terminal.", + "description": "Progress mode for diagnostics.", "scope": "resource" }, + "robotcode.analysis.referencesCodeLens": { + "type": "boolean", + "default": false, + "description": "Enable/disable references CodeLens for RobotFramework files." + } + } + }, + { + "title": "Linting - Robocop", + "type": "object", + "properties": { "robotcode.robocop.enabled": { "type": "boolean", "default": true, @@ -679,7 +752,13 @@ }, "description": "Configure 'robocop' checker with parameter value.", "scope": "resource" - }, + } + } + }, + { + "title": "Formatting - Tidy", + "type": "object", + "properties": { "robotcode.robotidy.enabled": { "type": "boolean", "default": true, @@ -697,42 +776,13 @@ "default": "", "markdownDescription": "Read configuration from FILE path. Corresponds to the `--config` of _robotidy_ See [robotidy](https://github.com/MarketSquare/robotframework-tidy)", "scope": "resource" - }, - "robotcode.analysis.findUnusedReferences": { - "type": "boolean", - "default": false, - "markdownDescription": "Find and reports unused keyword and variable references.", - "scope": "resource" - }, - "robotcode.analysis.diagnosticMode": { - "type": "string", - "enum": [ - "openFilesOnly", - "workspace" - ], - "default": "openFilesOnly", - "enumDescriptions": [ - "Analyzes and reports problems only on open files.", - "Analyzes and reports problems on all files in the workspace." - ], - "description": "Analysis mode for diagnostics.", - "scope": "resource" - }, - "robotcode.analysis.progressMode": { - "type": "string", - "enum": [ - "off", - "simple", - "detailed" - ], - "default": "off", - "enumDescriptions": [ - "Show only simple progress messages.", - "Show detailed progress messages. Displays the filenames that are currently being analyzed." - ], - "description": "Progress mode for diagnostics.", - "scope": "resource" - }, + } + } + }, + { + "title": "Workspace", + "type": "object", + "properties": { "robotcode.workspace.excludePatterns": { "type": "array", "default": [ @@ -750,12 +800,46 @@ }, "description": "Specifies glob patterns for excluding files and folders from analysing by the language server.", "scope": "resource" + } + } + }, + { + "title": "Language Server", + "type": "object", + "properties": { + "robotcode.languageServer.mode": { + "type": "string", + "default": "pipe", + "description": "Specifies the mode the language server is started.", + "enum": [ + "stdio", + "pipe", + "socket", + "tcp" + ], + "scope": "resource" }, - "robotcode.analysis.referencesCodeLens": { - "type": "boolean", - "default": false, - "description": "Enable/disable references CodeLens for RobotFramework files." + "robotcode.languageServer.tcpPort": { + "type": "number", + "default": 0, + "description": "If the port is specified, connect to the language server previously started at the given port.", + "scope": "resource" }, + "robotcode.languageServer.extraArgs": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "Specifies extra arguments to be passed to the `robotcode language-server` command line tool (i.e.: [`--log`, `--log-level=TRACE`, `--log-calls`]).", + "scope": "resource" + } + } + }, + { + "title": "Documentation", + "type": "object", + "properties": { "robotcode.documentationServer.startPort": { "type": "integer", "default": 3100, @@ -770,30 +854,6 @@ "type": "boolean", "default": true, "description": "Starts the internal HTTP server only if needed." - }, - "robotcode.completion.filterDefaultLanguage": { - "type": "boolean", - "default": false, - "markdownDescription": "Filter default language (English) for completion if there is another language defined.", - "scope": "resource" - }, - "robotcode.completion.headerStyle": { - "type": "string", - "default": null, - "markdownDescription": "Defines the header style format. If not defined ```*** {name} ***``` is used.", - "scope": "resource" - }, - "robotcode.inlayHints.parameterNames": { - "type": "boolean", - "default": true, - "markdownDescription": "Enable/disable inlay hints for parameter names.", - "scope": "resource" - }, - "robotcode.inlayHints.namespaces": { - "type": "boolean", - "default": true, - "markdownDescription": "Enable/disable inlay hints for namespaces.", - "scope": "resource" } } } From e1ac0cb5ed439fce3e8c9c2dad19ded4c1726eb4 Mon Sep 17 00:00:00 2001 From: Daniel Biehl Date: Mon, 12 Feb 2024 21:08:37 +0100 Subject: [PATCH 4/6] fix(langserver): correct importing variables with the same filename closes [BUG] Variables from variable files are often displayed as not found #214 --- .../language_server/robotframework/parts/references.py | 2 +- .../robot/src/robotcode/robot/diagnostics/library_doc.py | 5 +++++ .../robot/src/robotcode/robot/diagnostics/namespace.py | 4 ++-- ...s.test[references.robot-006-033-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-040-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-046-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-033-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-040-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-046-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-033-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-040-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-046-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-033-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-040-a_variable_import].out | 8 ++++---- ...s.test[references.robot-006-046-a_variable_import].out | 8 ++++---- 15 files changed, 56 insertions(+), 51 deletions(-) diff --git a/packages/language_server/src/robotcode/language_server/robotframework/parts/references.py b/packages/language_server/src/robotcode/language_server/robotframework/parts/references.py index d75c0623f..9f9f75f38 100644 --- a/packages/language_server/src/robotcode/language_server/robotframework/parts/references.py +++ b/packages/language_server/src/robotcode/language_server/robotframework/parts/references.py @@ -543,7 +543,7 @@ def _find_variables_import_references_in_file(self, doc: TextDocument, library_d namespace = self.parent.documents_cache.get_namespace(doc) result: List[Location] = [] - for lib_entry in (namespace.get_imported_variables()).values(): + for lib_entry in namespace.get_imported_variables().values(): if lib_entry.import_source == str(doc.uri.to_path()) and lib_entry.library_doc.source == library_doc.source: result.append(Location(str(doc.uri), lib_entry.import_range)) diff --git a/packages/robot/src/robotcode/robot/diagnostics/library_doc.py b/packages/robot/src/robotcode/robot/diagnostics/library_doc.py index 7431f1f8e..20b9f1a35 100644 --- a/packages/robot/src/robotcode/robot/diagnostics/library_doc.py +++ b/packages/robot/src/robotcode/robot/diagnostics/library_doc.py @@ -2118,14 +2118,19 @@ def get_variables_doc( if import_name.lower().endswith((".yaml", ".yml")): source = import_name importer = YamlImporter() + stem = Path(import_name).stem elif get_robot_version() >= (6, 1) and import_name.lower().endswith(".json"): source = import_name importer = JsonImporter() + stem = Path(import_name).stem else: python_import = True if not is_variables_by_path(import_name): + stem = import_name module_spec = get_module_spec(import_name) + else: + stem = Path(import_name).stem # skip antigravity easter egg # see https://python-history.blogspot.com/2010/06/import-antigravity.html diff --git a/packages/robot/src/robotcode/robot/diagnostics/namespace.py b/packages/robot/src/robotcode/robot/diagnostics/namespace.py index f8d5069ec..d2608ae89 100644 --- a/packages/robot/src/robotcode/robot/diagnostics/namespace.py +++ b/packages/robot/src/robotcode/robot/diagnostics/namespace.py @@ -1292,8 +1292,8 @@ def _import( code=Error.VARIABLES_ALREADY_IMPORTED, ) - if (entry.alias or entry.name or entry.import_name) not in self._variables: - self._variables[entry.alias or entry.name or entry.import_name] = entry + if entry.library_doc is not None and entry.library_doc.source_or_origin: + self._variables[entry.library_doc.source_or_origin] = entry elif isinstance(entry, LibraryEntry): if top_level and entry.name == BUILTIN_LIBRARY_NAME and entry.alias is None: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-033-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-033-a_variable_import].out index 650748f44..066c2d8c1 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-033-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-033-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-040-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-040-a_variable_import].out index 270c93292..420860e06 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-040-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-040-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-046-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-046-a_variable_import].out index 23b7180f8..39787b154 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-046-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf50/test_references.test[references.robot-006-046-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-033-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-033-a_variable_import].out index 650748f44..066c2d8c1 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-033-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-033-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-040-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-040-a_variable_import].out index 270c93292..420860e06 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-040-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-040-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-046-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-046-a_variable_import].out index 23b7180f8..39787b154 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-046-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf60/test_references.test[references.robot-006-046-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-033-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-033-a_variable_import].out index 650748f44..066c2d8c1 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-033-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-033-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-040-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-040-a_variable_import].out index 270c93292..420860e06 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-040-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-040-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-046-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-046-a_variable_import].out index 23b7180f8..39787b154 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-046-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf61/test_references.test[references.robot-006-046-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-033-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-033-a_variable_import].out index 650748f44..066c2d8c1 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-033-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-033-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-040-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-040-a_variable_import].out index 270c93292..420860e06 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-040-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-040-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: diff --git a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-046-a_variable_import].out b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-046-a_variable_import].out index 23b7180f8..39787b154 100644 --- a/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-046-a_variable_import].out +++ b/tests/robotcode/language_server/robotframework/parts/_regtest_outputs/rf70/test_references.test[references.robot-006-046-a_variable_import].out @@ -24,11 +24,11 @@ result: - !Location range: end: - character: 24 - line: 9 + character: 26 + line: 10 start: - character: 13 - line: 9 + character: 12 + line: 10 uri: tests/duplicated_resources.robot - !Location range: From 470b438778f2c82c31de08e39b75d7663a5fe504 Mon Sep 17 00:00:00 2001 From: Daniel Biehl Date: Mon, 12 Feb 2024 22:12:38 +0100 Subject: [PATCH 5/6] fix(robot): handle OSErrors if creating/reading user robot.toml should fix: #187 --- .../src/robotcode/robot/config/loader.py | 7 ++++ .../robot/src/robotcode/robot/config/utils.py | 33 +++++++++++-------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/packages/robot/src/robotcode/robot/config/loader.py b/packages/robot/src/robotcode/robot/config/loader.py index 9611e23e8..ffe8f327d 100644 --- a/packages/robot/src/robotcode/robot/config/loader.py +++ b/packages/robot/src/robotcode/robot/config/loader.py @@ -34,6 +34,7 @@ class ConfigType(str, Enum): ROBOT_TOML = "robot.toml (project file)" LOCAL_ROBOT_TOML = ".robot.toml (local file)" USER_DEFAULT_CONFIG_TOML = "robot.toml (user default config)" + DEFAULT_CONFIG_TOML = "(default config)" CUSTOM_TOML = ".toml (custom file)" @@ -118,6 +119,12 @@ def load_config_from_path( result = config_type() for __path in __paths: + if isinstance(__path, tuple): + path, c_type = __path + if path.name == "__no_user_config__.toml" and c_type == ConfigType.DEFAULT_CONFIG_TOML: + result.add_options(get_default_config()) + continue + result.add_options( _load_config_data_from_path( config_type, diff --git a/packages/robot/src/robotcode/robot/config/utils.py b/packages/robot/src/robotcode/robot/config/utils.py index 14c5d9598..e16b7ae47 100644 --- a/packages/robot/src/robotcode/robot/config/utils.py +++ b/packages/robot/src/robotcode/robot/config/utils.py @@ -16,28 +16,29 @@ def get_user_config_file( create: bool = True, verbose_callback: Optional[Callable[[str], None]] = None, ) -> Optional[Path]: - result = Path(platformdirs.user_config_dir("robotcode", appauthor=False), "robot.toml") - if result.is_file(): - if verbose_callback: - verbose_callback(f"Found user configuration file:\n {result}") - return result + try: + result = Path(platformdirs.user_config_dir("robotcode", appauthor=False), "robot.toml") + if result.is_file(): + if verbose_callback: + verbose_callback(f"Found user configuration file:\n {result}") + return result + + if not create: + if verbose_callback: + verbose_callback("User configuration file not found, but create is set to False.") + return None - if not create: if verbose_callback: - verbose_callback("User configuration file not found, but create is set to False.") - return None + verbose_callback(f"User configuration file not found, try to create it at:\n {result}") - if verbose_callback: - verbose_callback(f"User configuration file not found, try to create it at:\n {result}") - try: get_default_config().save(result) + + return result except OSError as e: if verbose_callback: verbose_callback(f"Cannot create user configuration file `{result}`:\n {e}") return None - return result - def get_config_files( paths: Optional[Sequence[Union[str, Path]]] = None, @@ -73,7 +74,11 @@ def get_config_files( return ( [ - *([(user_config, ConfigType.USER_DEFAULT_CONFIG_TOML)] if user_config else []), + *( + [(user_config, ConfigType.USER_DEFAULT_CONFIG_TOML)] + if user_config + else [(Path("__no_user_config__.toml"), ConfigType.DEFAULT_CONFIG_TOML)] + ), *result, ], root_folder, From 377d9c50336ee0bc2cdbe2bc413c7b9ee512a9c9 Mon Sep 17 00:00:00 2001 From: Daniel Biehl Date: Mon, 12 Feb 2024 22:16:45 +0100 Subject: [PATCH 6/6] =?UTF-8?q?chore(release):=20bump=20version=200.73.3?= =?UTF-8?q?=20=E2=86=92=200.74.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/launch.json | 24 +++++++++---------- CHANGELOG.md | 21 ++++++++++++++++ package.json | 2 +- packages/analyze/pyproject.toml | 6 ++--- .../src/robotcode/analyze/__version__.py | 2 +- .../core/src/robotcode/core/__version__.py | 2 +- packages/debugger/pyproject.toml | 4 ++-- .../src/robotcode/debugger/__version__.py | 2 +- packages/jsonrpc2/pyproject.toml | 2 +- .../src/robotcode/jsonrpc2/__version__.py | 2 +- packages/language_server/pyproject.toml | 4 ++-- .../robotcode/language_server/__version__.py | 2 +- .../src/robotcode/modifiers/__version__.py | 2 +- .../src/robotcode/plugin/__version__.py | 2 +- packages/robot/pyproject.toml | 2 +- .../robot/src/robotcode/robot/__version__.py | 2 +- packages/runner/pyproject.toml | 8 +++---- .../src/robotcode/runner/__version__.py | 2 +- pyproject.toml | 18 +++++++------- src/robotcode/cli/__version__.py | 2 +- 20 files changed, 66 insertions(+), 45 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index b72b28606..430c64464 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,7 +7,7 @@ "configurations": [ { "name": "Python: Debug in terminal", - "type": "python", + "type": "debugpy", "request": "launch", "purpose": [ "debug-in-terminal" @@ -16,7 +16,7 @@ }, { "name": "Python: RobotCode", - "type": "python", + "type": "debugpy", "request": "launch", "module": "robotcode.cli", "justMyCode": false, @@ -56,14 +56,14 @@ }, { "name": "Python: Attach using Process Id", - "type": "python", + "type": "debugpy", "request": "attach", "processId": "${command:pickProcess}", "justMyCode": false }, { "name": "Python: Current File", - "type": "python", + "type": "debugpy", "request": "launch", "program": "${file}", "console": "integratedTerminal", @@ -72,7 +72,7 @@ }, { "name": "Python: Attach to 5678", - "type": "python", + "type": "debugpy", "request": "attach", "connect": { "host": "localhost", @@ -84,7 +84,7 @@ }, { "name": "Python: Attach Prompt", - "type": "python", + "type": "debugpy", "request": "attach", "connect": { "host": "localhost", @@ -93,7 +93,7 @@ }, { "name": "Python: Pytest All Test", - "type": "python", + "type": "debugpy", "request": "launch", "module": "pytest", "args": [ @@ -105,7 +105,7 @@ }, { "name": "Python: Pytest Some Test", - "type": "python", + "type": "debugpy", "request": "launch", "module": "pytest", "args": [ @@ -127,7 +127,7 @@ }, { "name": "Python: Pytest Current File", - "type": "python", + "type": "debugpy", "request": "launch", "module": "pytest", "args": [ @@ -139,7 +139,7 @@ }, { "name": "Python: robotcode language_server", - "type": "python", + "type": "debugpy", "request": "launch", "module": "robotcode.cli", "justMyCode": false, @@ -190,7 +190,7 @@ }, { "name": "Python: Debug Tests", - "type": "python", + "type": "debugpy", "request": "launch", "program": "${file}", "purpose": [ @@ -201,7 +201,7 @@ }, { "name": "Python: Remote-Attach", - "type": "python", + "type": "debugpy", "request": "attach", "connect": { "host": "localhost", diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d221a94d..ed78876c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,27 @@ All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines. +## [0.74.0](https://github.com/d-biehl/robotcode/compare/v0.73.3..v0.74.0) - 2024-02-12 + +### Bug Fixes + +- **debugger:** Filling zeros are now added to the name of an element so that elements are sorted correctly in the variable view at debugging time ([456ab2c](https://github.com/d-biehl/robotcode/commit/456ab2c0a30a490e3324d0376cd7fe651a1c2c4a)) +- **debugger:** Add `BuiltIn.Run Keyword And Return Status` to the list of keywords that caught exceptions on inner keywords ([add8297](https://github.com/d-biehl/robotcode/commit/add8297e851f1226dd980fa543bb4c9f124ad441)) +- **langserver:** Correct importing variables with the same filename ([e1ac0cb](https://github.com/d-biehl/robotcode/commit/e1ac0cb5ed439fce3e8c9c2dad19ded4c1726eb4)) + + closes [BUG] Variables from variable files are often displayed as not found #214 + +- **robot:** Handle OSErrors if creating/reading user robot.toml ([470b438](https://github.com/d-biehl/robotcode/commit/470b438778f2c82c31de08e39b75d7663a5fe504)) + + should fix: #187 + + + +### Features + +- **vscode:** Organize vscode settings in groups ([9bbe68b](https://github.com/d-biehl/robotcode/commit/9bbe68bcd9ba718d8293c27ee3e64a6d9cd792a4)) + + ## [0.73.3](https://github.com/d-biehl/robotcode/compare/v0.73.2..v0.73.3) - 2024-02-07 ### Bug Fixes diff --git a/package.json b/package.json index 5bbb1e464..becc594bb 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Robot Framework IntelliSense, linting, test execution and debugging, code formatting, refactoring, and many more", "icon": "images/icon.png", "publisher": "d-biehl", - "version": "0.73.3", + "version": "0.74.0", "author": { "name": "Daniel Biehl", "url": "https://github.com/d-biehl/" diff --git a/packages/analyze/pyproject.toml b/packages/analyze/pyproject.toml index 8ab494377..60b7f6062 100644 --- a/packages/analyze/pyproject.toml +++ b/packages/analyze/pyproject.toml @@ -27,9 +27,9 @@ classifiers = [ ] dependencies = [ "robotframework>=4.1.0", - "robotcode-plugin==0.73.3", - "robotcode-robot==0.73.3", - "robotcode==0.73.3", + "robotcode-plugin==0.74.0", + "robotcode-robot==0.74.0", + "robotcode==0.74.0", ] dynamic = ["version"] diff --git a/packages/analyze/src/robotcode/analyze/__version__.py b/packages/analyze/src/robotcode/analyze/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/analyze/src/robotcode/analyze/__version__.py +++ b/packages/analyze/src/robotcode/analyze/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/packages/core/src/robotcode/core/__version__.py b/packages/core/src/robotcode/core/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/core/src/robotcode/core/__version__.py +++ b/packages/core/src/robotcode/core/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/packages/debugger/pyproject.toml b/packages/debugger/pyproject.toml index e02b14fd7..4ee3174f1 100644 --- a/packages/debugger/pyproject.toml +++ b/packages/debugger/pyproject.toml @@ -28,8 +28,8 @@ classifiers = [ dynamic = ["version"] dependencies = [ "robotframework>=4.1.0", - "robotcode-jsonrpc2==0.73.3", - "robotcode-runner==0.73.3", + "robotcode-jsonrpc2==0.74.0", + "robotcode-runner==0.74.0", ] [project.optional-dependencies] diff --git a/packages/debugger/src/robotcode/debugger/__version__.py b/packages/debugger/src/robotcode/debugger/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/debugger/src/robotcode/debugger/__version__.py +++ b/packages/debugger/src/robotcode/debugger/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/packages/jsonrpc2/pyproject.toml b/packages/jsonrpc2/pyproject.toml index 1b5a6e63b..767418cb3 100644 --- a/packages/jsonrpc2/pyproject.toml +++ b/packages/jsonrpc2/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ "Framework :: Robot Framework", "Framework :: Robot Framework :: Tool", ] -dependencies = ["robotcode-core==0.73.3"] +dependencies = ["robotcode-core==0.74.0"] dynamic = ["version"] [project.urls] diff --git a/packages/jsonrpc2/src/robotcode/jsonrpc2/__version__.py b/packages/jsonrpc2/src/robotcode/jsonrpc2/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/jsonrpc2/src/robotcode/jsonrpc2/__version__.py +++ b/packages/jsonrpc2/src/robotcode/jsonrpc2/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/packages/language_server/pyproject.toml b/packages/language_server/pyproject.toml index 06efcee75..711417a90 100644 --- a/packages/language_server/pyproject.toml +++ b/packages/language_server/pyproject.toml @@ -27,8 +27,8 @@ classifiers = [ ] dependencies = [ "robotframework>=4.1.0", - "robotcode-jsonrpc2==0.73.3", - "robotcode==0.73.3", + "robotcode-jsonrpc2==0.74.0", + "robotcode==0.74.0", ] dynamic = ["version"] diff --git a/packages/language_server/src/robotcode/language_server/__version__.py b/packages/language_server/src/robotcode/language_server/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/language_server/src/robotcode/language_server/__version__.py +++ b/packages/language_server/src/robotcode/language_server/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/packages/modifiers/src/robotcode/modifiers/__version__.py b/packages/modifiers/src/robotcode/modifiers/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/modifiers/src/robotcode/modifiers/__version__.py +++ b/packages/modifiers/src/robotcode/modifiers/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/packages/plugin/src/robotcode/plugin/__version__.py b/packages/plugin/src/robotcode/plugin/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/plugin/src/robotcode/plugin/__version__.py +++ b/packages/plugin/src/robotcode/plugin/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/packages/robot/pyproject.toml b/packages/robot/pyproject.toml index 42590ee69..7be0eb77f 100644 --- a/packages/robot/pyproject.toml +++ b/packages/robot/pyproject.toml @@ -29,7 +29,7 @@ dependencies = [ "robotframework>=4.1.0", "tomli>=1.1.0; python_version < '3.11'", "platformdirs>=3.2.0,<4.2.0", - "robotcode-core==0.73.3", + "robotcode-core==0.74.0", ] dynamic = ["version"] diff --git a/packages/robot/src/robotcode/robot/__version__.py b/packages/robot/src/robotcode/robot/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/robot/src/robotcode/robot/__version__.py +++ b/packages/robot/src/robotcode/robot/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/packages/runner/pyproject.toml b/packages/runner/pyproject.toml index 50da79abd..455989a97 100644 --- a/packages/runner/pyproject.toml +++ b/packages/runner/pyproject.toml @@ -28,10 +28,10 @@ classifiers = [ dynamic = ["version"] dependencies = [ "robotframework>=4.1.0", - "robotcode-robot==0.73.3", - "robotcode-modifiers==0.73.3", - "robotcode-plugin==0.73.3", - "robotcode==0.73.3", + "robotcode-robot==0.74.0", + "robotcode-modifiers==0.74.0", + "robotcode-plugin==0.74.0", + "robotcode==0.74.0", ] [project.entry-points.robotcode] diff --git a/packages/runner/src/robotcode/runner/__version__.py b/packages/runner/src/robotcode/runner/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/packages/runner/src/robotcode/runner/__version__.py +++ b/packages/runner/src/robotcode/runner/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0" diff --git a/pyproject.toml b/pyproject.toml index 802e0a078..556906abd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,7 +49,7 @@ classifiers = [ "Framework :: Robot Framework :: Tool", ] requires-python = ">=3.8" -dependencies = ["robotcode-core==0.73.3"] +dependencies = ["robotcode-core==0.74.0"] dynamic = ["version"] @@ -66,20 +66,20 @@ robotcode = "robotcode.cli.__main__:main" [project.optional-dependencies] -debugger = ["robotcode-debugger==0.73.3"] -languageserver = ["robotcode-language-server==0.73.3"] -runner = ["robotcode-runner==0.73.3"] -analyze = ["robotcode-analyze==0.73.3"] +debugger = ["robotcode-debugger==0.74.0"] +languageserver = ["robotcode-language-server==0.74.0"] +runner = ["robotcode-runner==0.74.0"] +analyze = ["robotcode-analyze==0.74.0"] yaml = ["PyYAML>=5.4"] lint = ["robotframework-robocop>=2.0.0"] tidy = ["robotframework-tidy>=2.0.0"] rest = ["docutils"] colored = ["rich"] all = [ - "robotcode-debugger==0.73.3", - "robotcode-language-server==0.73.3", - "robotcode-runner==0.73.3", - "robotcode-analyze==0.73.3", + "robotcode-debugger==0.74.0", + "robotcode-language-server==0.74.0", + "robotcode-runner==0.74.0", + "robotcode-analyze==0.74.0", "PyYAML>=5.4", "robotframework-robocop>=2.0.0", "robotframework-tidy>=2.0.0", diff --git a/src/robotcode/cli/__version__.py b/src/robotcode/cli/__version__.py index 34ef8c9b8..f9ecadaa9 100644 --- a/src/robotcode/cli/__version__.py +++ b/src/robotcode/cli/__version__.py @@ -1 +1 @@ -__version__ = "0.73.3" +__version__ = "0.74.0"