8
8
from robotcode .robot .diagnostics .diagnostics_modifier import (
9
9
DiagnosticModifiersConfig ,
10
10
DiagnosticsModifier ,
11
- DisablersVisitor ,
11
+ ModifierAction ,
12
+ ModifiersVisitor ,
12
13
)
13
14
14
15
15
16
@pytest .mark .parametrize (
16
17
("text" , "expected_action_and_codes" ),
17
18
[
18
- ("ignore" , {"ignore" : ["*" ]}),
19
- ("warn" , {"warn" : ["*" ]}),
20
- ("error" , {"error" : ["*" ]}),
21
- ("hint" , {"hint" : ["*" ]}),
19
+ ("ignore" , {ModifierAction .IGNORE : ["*" ]}),
20
+ ("warn" , {ModifierAction .WARNING : ["*" ]}),
21
+ ("warning" , {ModifierAction .WARNING : ["*" ]}),
22
+ ("info" , {ModifierAction .INFORMATION : ["*" ]}),
23
+ ("information" , {ModifierAction .INFORMATION : ["*" ]}),
24
+ ("error" , {ModifierAction .ERROR : ["*" ]}),
25
+ ("hint" , {ModifierAction .HINT : ["*" ]}),
22
26
("garbage" , {}),
23
- ("ignore[message]" , {"ignore" : ["message" ]}),
24
- ("ignore[message1, message2]" , {"ignore" : ["message1" , "message2" ]}),
27
+ ("ignore[message]" , {ModifierAction . IGNORE : ["message" ]}),
28
+ ("ignore[message1, message2]" , {ModifierAction . IGNORE : ["message1" , "message2" ]}),
25
29
(
26
30
"ignore[message1, message2] hint[message3, message4]" ,
27
- {"ignore" : ["message1" , "message2" ], "hint" : ["message3" , "message4" ]},
31
+ {ModifierAction . IGNORE : ["message1" , "message2" ], ModifierAction . HINT : ["message3" , "message4" ]},
28
32
),
29
33
(
30
34
" ignore[message1, message2] hint[message3, message4] garbage " ,
31
- {"ignore" : ["message1" , "message2" ], "hint" : ["message3" , "message4" ]},
35
+ {ModifierAction . IGNORE : ["message1" , "message2" ], ModifierAction . HINT : ["message3" , "message4" ]},
32
36
),
33
37
],
34
38
)
35
- def test_disabler_parser_should_work (text : str , expected_action_and_codes : Dict [str , List [str ]]) -> None :
36
- visitor = DisablersVisitor ()
39
+ def test_disabler_parser_should_work (text : str , expected_action_and_codes : Dict [ModifierAction , List [str ]]) -> None :
40
+ visitor = ModifiersVisitor ()
37
41
assert dict (visitor ._parse_robotcode_disabler (text )) == expected_action_and_codes
38
42
39
43
@@ -49,7 +53,7 @@ def test_find_disablers_at_line_end() -> None:
49
53
"""
50
54
51
55
model = get_model (io .StringIO (file ))
52
- visitor = DisablersVisitor ()
56
+ visitor = ModifiersVisitor ()
53
57
visitor .visit (model )
54
58
assert visitor .rules_and_codes .codes == {
55
59
"*" : {2 , 3 },
@@ -60,14 +64,14 @@ def test_find_disablers_at_line_end() -> None:
60
64
"message4" : {6 },
61
65
}
62
66
assert visitor .rules_and_codes .actions == {
63
- 2 : {"*" : "ignore" },
64
- 3 : {"*" : "warn" },
65
- 5 : {"unknownvariable" : "ignore" },
67
+ 2 : {"*" : ModifierAction . IGNORE },
68
+ 3 : {"*" : ModifierAction . WARNING },
69
+ 5 : {"unknownvariable" : ModifierAction . IGNORE },
66
70
6 : {
67
- "message1" : "ignore" ,
68
- "message2" : "ignore" ,
69
- "message3" : "hint" ,
70
- "message4" : "hint" ,
71
+ "message1" : ModifierAction . IGNORE ,
72
+ "message2" : ModifierAction . IGNORE ,
73
+ "message3" : ModifierAction . HINT ,
74
+ "message4" : ModifierAction . HINT ,
71
75
},
72
76
}
73
77
@@ -361,3 +365,53 @@ def test_diagnostics_modifier_should_be_configurable() -> None:
361
365
severity = DiagnosticSeverity .HINT ,
362
366
)
363
367
]
368
+
369
+
370
+ def test_diagnostics_modifier_should_work_as_option_in_implicit_comment () -> None :
371
+ file = """\
372
+ language: en
373
+ robotcode: ignore[unknown-variable]
374
+ *** Test Cases ***
375
+ first
376
+ # robotcode: ignore[message_1, message_2] hint[message 3, message 4]
377
+
378
+ unknown keyword
379
+ unknown keyword1
380
+ log ${unknown}
381
+ log hello
382
+
383
+ """
384
+ model = get_model (io .StringIO (file ))
385
+ modifier = DiagnosticsModifier (model )
386
+
387
+ diagnostics = [
388
+ Diagnostic (
389
+ range = Range (start = Position (line = 5 , character = 4 ), end = Position (line = 5 , character = 12 )),
390
+ message = "UnknownVariable" ,
391
+ code = "UnknownVariable" ,
392
+ severity = DiagnosticSeverity .INFORMATION ,
393
+ ),
394
+ Diagnostic (
395
+ range = Range (start = Position (line = 6 , character = 4 ), end = Position (line = 6 , character = 12 )),
396
+ message = "Message1" ,
397
+ code = "message1" ,
398
+ severity = DiagnosticSeverity .ERROR ,
399
+ ),
400
+ Diagnostic (
401
+ range = Range (start = Position (line = 6 , character = 4 ), end = Position (line = 6 , character = 12 )),
402
+ message = "Message3" ,
403
+ code = "Message3" ,
404
+ severity = DiagnosticSeverity .ERROR ,
405
+ ),
406
+ ]
407
+
408
+ result = modifier .modify_diagnostics (diagnostics )
409
+
410
+ assert result == [
411
+ Diagnostic (
412
+ range = Range (start = Position (line = 6 , character = 4 ), end = Position (line = 6 , character = 12 )),
413
+ message = "Message3" ,
414
+ code = "Message3" ,
415
+ severity = DiagnosticSeverity .HINT ,
416
+ )
417
+ ]
0 commit comments