Skip to content

Commit a7f8408

Browse files
committed
feat: select run profiles in test explorer
1 parent ba63abd commit a7f8408

File tree

96 files changed

+981
-424
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+981
-424
lines changed

.vscode/launch.json

+12-4
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@
4343
"request": "launch",
4444
"module": "robotcode.cli",
4545
"justMyCode": false,
46-
"cwd": "${workspaceFolder}/tests/robotcode/language_server/robotframework/parts/data",
46+
"cwd": "${workspaceFolder}/tests/robotcode/language_server/robotframework/parts/data/tests",
47+
//"cwd": "C:\\develop\\robot\\robotframework",
4748
// "env": {
4849
// "ROBOTCODE_COLOR": "1",
4950
// },
@@ -60,9 +61,16 @@
6061
// "--",
6162
// "--help"
6263
// "run"
63-
"debug-launch",
64-
"--pipe-server",
65-
"\\\\.\\pipe\\df1029c255ced57faea2f0227c1170365"
64+
"--format", "json",
65+
"--no-color",
66+
"config", "info", "desc",
67+
// "discover",
68+
// "all",
69+
// "--norpa",
70+
// "--by-longname", "asd:dasd",
71+
// "--suite",
72+
// "Robotframework.Atest.Testdata.Variables",
73+
//"."
6674
]
6775
},
6876
{

bundled/tool/utils/check_robot_version.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ def update_sys_path(path_to_add: str, strategy: str) -> None:
2222
os.getenv("LS_IMPORT_STRATEGY", "useBundled"),
2323
)
2424

25-
from robotcode.language_server.robotframework.utils.version import get_robot_version
25+
from robotcode.robot.utils import get_robot_version
2626

27-
print(get_robot_version() >= (4, 0))
27+
print(get_robot_version() >= (4, 1))

package.json

+9
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,15 @@
544544
"description": "Defines if the report or log file should be opened after a run.",
545545
"scope": "resource"
546546
},
547+
"robotcode.run.profiles": {
548+
"type": "array",
549+
"default": [],
550+
"items": {
551+
"type": "string"
552+
},
553+
"markdownDescription": "Specifies the profiles to be used for execution. Corresponds to the '--profile' option of __robotcode__.",
554+
"scope": "resource"
555+
},
547556
"robotcode.debug.defaultConfiguration": {
548557
"type": "object",
549558
"default": {},

packages/core/src/robotcode/core/dataclasses.py

+44-30
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# pyright: reportMissingTypeArgument=true, reportMissingParameterType=true
2-
import copy
32
import dataclasses
43
import enum
5-
import functools
64
import inspect
75
import itertools
86
import json
@@ -45,27 +43,42 @@
4543
_RE_SNAKE_CASE_2 = re.compile(r"[A-Z]")
4644

4745

48-
@functools.lru_cache(1024)
46+
__not_valid = object()
47+
48+
__to_snake_case_cache: Dict[str, str] = {}
49+
50+
4951
def to_snake_case(s: str) -> str:
50-
s = _RE_SNAKE_CASE_1.sub("_", s)
51-
if not s:
52-
return s
53-
return s[0].lower() + _RE_SNAKE_CASE_2.sub(lambda matched: "_" + matched.group(0).lower(), s[1:])
52+
result = __to_snake_case_cache.get(s, __not_valid)
53+
if result is __not_valid:
54+
s = _RE_SNAKE_CASE_1.sub("_", s)
55+
if not s:
56+
result = s
57+
else:
58+
result = s[0].lower() + _RE_SNAKE_CASE_2.sub(lambda matched: "_" + matched.group(0).lower(), s[1:])
59+
__to_snake_case_cache[s] = result
60+
return cast(str, result)
5461

5562

5663
_RE_CAMEL_CASE_1 = re.compile(r"^[\-_\.]")
5764
_RE_CAMEL_CASE_2 = re.compile(r"[\-_\.\s]([a-z])")
5865

66+
__to_snake_camel_cache: Dict[str, str] = {}
67+
5968

60-
@functools.lru_cache(1024)
6169
def to_camel_case(s: str) -> str:
62-
s = _RE_CAMEL_CASE_1.sub("", str(s))
63-
if not s:
64-
return s
65-
return str(s[0]).lower() + _RE_CAMEL_CASE_2.sub(
66-
lambda matched: str(matched.group(1)).upper(),
67-
s[1:],
68-
)
70+
result = __to_snake_camel_cache.get(s, __not_valid)
71+
if result is __not_valid:
72+
s = _RE_CAMEL_CASE_1.sub("", s)
73+
if not s:
74+
result = s
75+
else:
76+
result = str(s[0]).lower() + _RE_CAMEL_CASE_2.sub(
77+
lambda matched: str(matched.group(1)).upper(),
78+
s[1:],
79+
)
80+
__to_snake_camel_cache[s] = result
81+
return cast(str, result)
6982

7083

7184
class CamelSnakeMixin:
@@ -110,21 +123,13 @@ def _decode_case(cls, s: str) -> str:
110123
return s
111124

112125

113-
__default_config: Optional[DefaultConfig] = None
114-
115-
116-
def __get_default_config() -> DefaultConfig:
117-
global __default_config
118-
119-
if __default_config is None:
120-
__default_config = DefaultConfig()
121-
return __default_config
126+
__default_config = DefaultConfig()
122127

123128

124129
def __get_config(obj: Any, entry_protocol: Type[_T]) -> _T:
125130
if isinstance(obj, entry_protocol):
126131
return obj
127-
return cast(_T, __get_default_config())
132+
return cast(_T, __default_config)
128133

129134

130135
def encode_case(obj: Any, field: dataclasses.Field) -> str: # type: ignore
@@ -357,23 +362,32 @@ def from_json(
357362

358363

359364
def as_dict(
360-
value: Any, *, remove_defaults: bool = False, dict_factory: Callable[[Any], Dict[str, Any]] = dict
365+
value: Any,
366+
*,
367+
remove_defaults: bool = False,
368+
dict_factory: Callable[[Any], Dict[str, Any]] = dict,
369+
encode: bool = True,
361370
) -> Dict[str, Any]:
362371
if not dataclasses.is_dataclass(value):
363372
raise TypeError("as_dict() should be called on dataclass instances")
364373

365-
return cast(Dict[str, Any], _as_dict_inner(value, remove_defaults, dict_factory))
374+
return cast(Dict[str, Any], _as_dict_inner(value, remove_defaults, dict_factory, encode))
366375

367376

368-
def _as_dict_inner(value: Any, remove_defaults: bool, dict_factory: Callable[[Any], Dict[str, Any]]) -> Any:
377+
def _as_dict_inner(
378+
value: Any,
379+
remove_defaults: bool,
380+
dict_factory: Callable[[Any], Dict[str, Any]],
381+
encode: bool = True,
382+
) -> Any:
369383
if dataclasses.is_dataclass(value):
370384
result = []
371385
for f in dataclasses.fields(value):
372386
v = _as_dict_inner(getattr(value, f.name), remove_defaults, dict_factory)
373387

374388
if remove_defaults and v == f.default:
375389
continue
376-
result.append((f.name, v))
390+
result.append((encode_case(value, f) if encode else f.name, v))
377391
return dict_factory(result)
378392

379393
if isinstance(value, tuple) and hasattr(value, "_fields"):
@@ -388,7 +402,7 @@ def _as_dict_inner(value: Any, remove_defaults: bool, dict_factory: Callable[[An
388402
for k, v in value.items()
389403
)
390404

391-
return copy.deepcopy(value)
405+
return value
392406

393407

394408
class TypeValidationError(Exception):

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import click
55
from robotcode.core.types import ServerMode
66
from robotcode.plugin import Application, UnknownError, pass_application
7-
from robotcode.plugin.click_helper.server_options import resolve_server_options, server_options
7+
from robotcode.plugin.click_helper.options import resolve_server_options, server_options
88
from robotcode.plugin.click_helper.types import (
99
AddressesPort,
1010
add_options,

packages/debugger/src/robotcode/debugger/launcher/cli.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import click
44
from robotcode.core.types import ServerMode
55
from robotcode.plugin import Application, UnknownError, pass_application
6-
from robotcode.plugin.click_helper.server_options import resolve_server_options, server_options
6+
from robotcode.plugin.click_helper.options import resolve_server_options, server_options
77
from robotcode.plugin.click_helper.types import (
88
AddressesPort,
99
add_options,

packages/language_server/src/robotcode/language_server/common/has_extend_capabilities.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Protocol, runtime_checkable
22

3-
from .lsp_types import ServerCapabilities
3+
from robotcode.core.lsp.types import ServerCapabilities
44

55
__all__ = ["HasExtendCapabilities"]
66

packages/language_server/src/robotcode/language_server/common/parts/code_action.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66

77
from robotcode.core.async_tools import async_tasking_event, threaded
88
from robotcode.core.logging import LoggingDescriptor
9-
from robotcode.jsonrpc2.protocol import rpc_method
10-
from robotcode.language_server.common.decorators import HasCodeActionKinds, language_id_filter
11-
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
12-
from robotcode.language_server.common.lsp_types import (
9+
from robotcode.core.lsp.types import (
1310
CodeAction,
1411
CodeActionContext,
1512
CodeActionOptions,
@@ -19,6 +16,9 @@
1916
ServerCapabilities,
2017
TextDocumentIdentifier,
2118
)
19+
from robotcode.jsonrpc2.protocol import rpc_method
20+
from robotcode.language_server.common.decorators import HasCodeActionKinds, language_id_filter
21+
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
2222
from robotcode.language_server.common.parts.protocol_part import LanguageServerProtocolPart
2323
from robotcode.language_server.common.text_document import TextDocument
2424

packages/language_server/src/robotcode/language_server/common/parts/code_lens.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66

77
from robotcode.core.async_tools import async_tasking_event, create_sub_task, threaded
88
from robotcode.core.logging import LoggingDescriptor
9-
from robotcode.jsonrpc2.protocol import rpc_method
10-
from robotcode.language_server.common.decorators import language_id_filter
11-
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
12-
from robotcode.language_server.common.lsp_types import (
9+
from robotcode.core.lsp.types import (
1310
CodeLens,
1411
CodeLensOptions,
1512
CodeLensParams,
1613
ServerCapabilities,
1714
TextDocumentIdentifier,
1815
)
16+
from robotcode.jsonrpc2.protocol import rpc_method
17+
from robotcode.language_server.common.decorators import language_id_filter
18+
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
1919
from robotcode.language_server.common.text_document import TextDocument
2020

2121
from .protocol_part import LanguageServerProtocolPart

packages/language_server/src/robotcode/language_server/common/parts/commands.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,16 @@
99
from robotcode.core.async_tools import threaded
1010
from robotcode.core.dataclasses import from_dict
1111
from robotcode.core.logging import LoggingDescriptor
12-
from robotcode.jsonrpc2.protocol import JsonRPCErrorException, rpc_method
13-
from robotcode.language_server.common.decorators import IsCommand, get_command_name
14-
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
15-
from robotcode.language_server.common.lsp_types import (
12+
from robotcode.core.lsp.types import (
1613
ErrorCodes,
1714
ExecuteCommandOptions,
1815
ExecuteCommandParams,
1916
LSPAny,
2017
ServerCapabilities,
2118
)
19+
from robotcode.jsonrpc2.protocol import JsonRPCErrorException, rpc_method
20+
from robotcode.language_server.common.decorators import IsCommand, get_command_name
21+
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
2222
from robotcode.language_server.common.parts.protocol_part import LanguageServerProtocolPart
2323

2424
if TYPE_CHECKING:

packages/language_server/src/robotcode/language_server/common/parts/completion.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66

77
from robotcode.core.async_tools import async_tasking_event, threaded
88
from robotcode.core.logging import LoggingDescriptor
9-
from robotcode.jsonrpc2.protocol import rpc_method
10-
from robotcode.language_server.common.decorators import HasAllCommitCharacters, HasTriggerCharacters, language_id_filter
11-
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
12-
from robotcode.language_server.common.lsp_types import (
9+
from robotcode.core.lsp.types import (
1310
CompletionContext,
1411
CompletionItem,
1512
CompletionList,
@@ -21,6 +18,9 @@
2118
TextDocumentIdentifier,
2219
TextEdit,
2320
)
21+
from robotcode.jsonrpc2.protocol import rpc_method
22+
from robotcode.language_server.common.decorators import HasAllCommitCharacters, HasTriggerCharacters, language_id_filter
23+
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
2424
from robotcode.language_server.common.parts.protocol_part import LanguageServerProtocolPart
2525
from robotcode.language_server.common.text_document import TextDocument
2626

packages/language_server/src/robotcode/language_server/common/parts/declaration.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55

66
from robotcode.core.async_tools import async_tasking_event, threaded
77
from robotcode.core.logging import LoggingDescriptor
8-
from robotcode.jsonrpc2.protocol import rpc_method
9-
from robotcode.language_server.common.decorators import language_id_filter
10-
from robotcode.language_server.common.has_extend_capabilities import (
11-
HasExtendCapabilities,
12-
)
13-
from robotcode.language_server.common.lsp_types import (
8+
from robotcode.core.lsp.types import (
149
DeclarationParams,
1510
Location,
1611
LocationLink,
1712
Position,
1813
ServerCapabilities,
1914
TextDocumentIdentifier,
2015
)
16+
from robotcode.jsonrpc2.protocol import rpc_method
17+
from robotcode.language_server.common.decorators import language_id_filter
18+
from robotcode.language_server.common.has_extend_capabilities import (
19+
HasExtendCapabilities,
20+
)
2121
from robotcode.language_server.common.parts.protocol_part import LanguageServerProtocolPart
2222
from robotcode.language_server.common.text_document import TextDocument
2323

packages/language_server/src/robotcode/language_server/common/parts/definition.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55

66
from robotcode.core.async_tools import async_tasking_event, threaded
77
from robotcode.core.logging import LoggingDescriptor
8-
from robotcode.jsonrpc2.protocol import rpc_method
9-
from robotcode.language_server.common.decorators import language_id_filter
10-
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
11-
from robotcode.language_server.common.lsp_types import (
8+
from robotcode.core.lsp.types import (
129
DefinitionParams,
1310
Location,
1411
LocationLink,
1512
Position,
1613
ServerCapabilities,
1714
TextDocumentIdentifier,
1815
)
16+
from robotcode.jsonrpc2.protocol import rpc_method
17+
from robotcode.language_server.common.decorators import language_id_filter
18+
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
1919
from robotcode.language_server.common.parts.protocol_part import LanguageServerProtocolPart
2020
from robotcode.language_server.common.text_document import TextDocument
2121

packages/language_server/src/robotcode/language_server/common/parts/diagnostics.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,7 @@
2020
threaded,
2121
)
2222
from robotcode.core.logging import LoggingDescriptor
23-
from robotcode.core.uri import Uri
24-
from robotcode.jsonrpc2.protocol import JsonRPCErrorException, rpc_method
25-
from robotcode.language_server.common.decorators import language_id_filter
26-
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
27-
from robotcode.language_server.common.lsp_types import (
23+
from robotcode.core.lsp.types import (
2824
Diagnostic,
2925
DiagnosticOptions,
3026
DiagnosticServerCancellationData,
@@ -40,6 +36,10 @@
4036
WorkspaceDiagnosticParams,
4137
WorkspaceDiagnosticReport,
4238
)
39+
from robotcode.core.uri import Uri
40+
from robotcode.jsonrpc2.protocol import JsonRPCErrorException, rpc_method
41+
from robotcode.language_server.common.decorators import language_id_filter
42+
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
4343
from robotcode.language_server.common.parts.protocol_part import LanguageServerProtocolPart
4444
from robotcode.language_server.common.text_document import TextDocument
4545

packages/language_server/src/robotcode/language_server/common/parts/document_highlight.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55

66
from robotcode.core.async_tools import async_tasking_event, threaded
77
from robotcode.core.logging import LoggingDescriptor
8-
from robotcode.jsonrpc2.protocol import rpc_method
9-
from robotcode.language_server.common.decorators import language_id_filter
10-
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
11-
from robotcode.language_server.common.lsp_types import (
8+
from robotcode.core.lsp.types import (
129
DocumentHighlight,
1310
DocumentHighlightOptions,
1411
DocumentHighlightParams,
1512
Position,
1613
ServerCapabilities,
1714
TextDocumentIdentifier,
1815
)
16+
from robotcode.jsonrpc2.protocol import rpc_method
17+
from robotcode.language_server.common.decorators import language_id_filter
18+
from robotcode.language_server.common.has_extend_capabilities import HasExtendCapabilities
1919
from robotcode.language_server.common.parts.protocol_part import LanguageServerProtocolPart
2020
from robotcode.language_server.common.text_document import TextDocument
2121

0 commit comments

Comments
 (0)