Skip to content

Commit e5c002f

Browse files
committed
shorten generated test names
1 parent 69f702b commit e5c002f

File tree

3 files changed

+60
-35
lines changed

3 files changed

+60
-35
lines changed

tests/robotcode/language_server/robotframework/parts/test_goto.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,39 @@
99
RobotLanguageServerProtocol,
1010
)
1111

12-
from ..tools import generate_tests_from_source_document
12+
from ..tools import (
13+
GeneratedTestData,
14+
generate_test_id,
15+
generate_tests_from_source_document,
16+
)
1317

1418

1519
@pytest.mark.parametrize(
16-
("test_document", "name", "line", "character", "expression"),
17-
generate_tests_from_source_document(str(Path(Path(__file__).parent, "data/goto.robot"))),
20+
("test_document", "data"),
21+
generate_tests_from_source_document(Path(Path(__file__).parent, "data/goto.robot")),
1822
indirect=["test_document"],
23+
ids=generate_test_id,
1924
)
2025
@pytest.mark.asyncio
2126
@pytest.mark.usefixtures("protocol")
2227
async def test_goto(
2328
protocol: RobotLanguageServerProtocol,
2429
test_document: TextDocument,
25-
name: str,
26-
line: int,
27-
character: int,
28-
expression: str,
30+
data: GeneratedTestData,
2931
) -> None:
32+
3033
result = await protocol._robot_goto.collect(
31-
protocol._robot_goto, test_document, Position(line=line, character=character)
34+
protocol._robot_goto, test_document, Position(line=data.line, character=data.character)
3235
)
3336

3437
assert bool(
3538
eval(
36-
expression,
39+
data.expression,
3740
{"re": re},
3841
{
3942
"result": result,
40-
"line": line,
41-
"character": character,
43+
"line": data.line,
44+
"character": data.character,
4245
},
4346
)
44-
), f"{expression} {repr(result)}"
47+
), f"{data.expression} == {repr(result)}"

tests/robotcode/language_server/robotframework/parts/test_hover.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,41 @@
99
RobotLanguageServerProtocol,
1010
)
1111

12-
from ..tools import generate_tests_from_source_document
12+
from ..tools import (
13+
GeneratedTestData,
14+
generate_test_id,
15+
generate_tests_from_source_document,
16+
)
1317

1418

1519
@pytest.mark.parametrize(
16-
("test_document", "name", "line", "character", "expression"),
17-
generate_tests_from_source_document(str(Path(Path(__file__).parent, "data/hover.robot"))),
20+
("test_document", "data"),
21+
generate_tests_from_source_document(Path(Path(__file__).parent, "data/hover.robot")),
1822
indirect=["test_document"],
23+
ids=generate_test_id,
1924
)
2025
@pytest.mark.asyncio
2126
@pytest.mark.usefixtures("protocol")
2227
async def test_hover(
2328
protocol: RobotLanguageServerProtocol,
2429
test_document: TextDocument,
25-
name: str,
26-
line: int,
27-
character: int,
28-
expression: str,
30+
data: GeneratedTestData,
2931
) -> None:
3032
result = await protocol._robot_hover.collect(
31-
protocol.hover, test_document, Position(line=line, character=character)
33+
protocol.hover, test_document, Position(line=data.line, character=data.character)
3234
)
3335

3436
assert bool(
3537
eval(
36-
expression,
38+
data.expression,
3739
{"re": re},
3840
{
3941
"result": result,
4042
"value": result.contents.value
4143
if result is not None and isinstance(result.contents, MarkupContent)
4244
else None,
43-
"line": line,
44-
"character": character,
45+
"line": data.line,
46+
"character": data.character,
4547
},
4648
)
47-
), expression
49+
), f"{data.expression} == {repr(result)}"
Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import re
22
from pathlib import Path
3-
from typing import Any, Generator, Tuple, Union
3+
from typing import Any, Generator, NamedTuple, Tuple, Union
44

55
import pytest
66

@@ -9,13 +9,19 @@
99
)
1010

1111

12+
class GeneratedTestData(NamedTuple):
13+
name: str
14+
line: int
15+
character: int
16+
expression: str
17+
18+
1219
def generate_tests_from_source_document(
13-
path: str,
14-
) -> Generator[Union[Tuple[str, str, int, int, str], Any], None, None]:
15-
file = Path(path).relative_to(Path(".").parent.absolute())
16-
file_str = str(file).replace("\\", "/")
20+
path: Path,
21+
) -> Generator[Union[Tuple[Path, GeneratedTestData], Any], None, None]:
22+
1723
current_line = 0
18-
for line, text in enumerate(file.read_text().splitlines()):
24+
for line, text in enumerate(path.read_text().splitlines()):
1925

2026
match = TEST_EXPRESSION_LINE.match(text)
2127
if match:
@@ -26,16 +32,30 @@ def generate_tests_from_source_document(
2632
if name and expression:
2733
if skip:
2834
yield pytest.param(
29-
file_str, name, current_line, start, expression, marks=pytest.mark.skip(reason="TODO")
35+
path,
36+
GeneratedTestData(name, current_line, start, expression),
37+
marks=pytest.mark.skip(reason="TODO"),
3038
)
3139
else:
3240
if end - start == 1:
33-
yield file_str, name, current_line, start, expression
41+
yield path, GeneratedTestData(name, current_line, start, expression)
3442
else:
35-
yield file_str, name, current_line, start, expression
43+
yield path, GeneratedTestData(name, current_line, start, expression)
3644
if end - start > 2:
37-
yield file_str, name, current_line, int(start + (end - start) / 2), expression
45+
yield path, GeneratedTestData(
46+
name, current_line, int(start + (end - start) / 2), expression
47+
)
3848

39-
yield file_str, name, current_line, end - 1, expression
49+
yield path, GeneratedTestData(name, current_line, end - 1, expression)
4050
else:
4151
current_line = line
52+
53+
54+
def generate_test_id(params: Any) -> Any:
55+
if isinstance(params, GeneratedTestData):
56+
return f"{params.line}-{params.character}-{params.name}"
57+
58+
if isinstance(params, Path):
59+
return params.name
60+
61+
return params

0 commit comments

Comments
 (0)