Skip to content

Commit aa03611

Browse files
Add test for add_message module/filepath override
Covers the new `module` and `filepath` parameters that allow overriding the reported message location. Refs #10880 Co-Authored-By: Claude Opus 4.6 <[email protected]>
1 parent cd3e51f commit aa03611

2 files changed

Lines changed: 42 additions & 1 deletion

File tree

pylint/lint/pylinter.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1341,7 +1341,9 @@ def add_message(
13411341
must provide the line argument.
13421342
13431343
The module and filepath parameters allow overriding the module name
1344-
and file path reported in the message location.
1344+
and file path reported in the message location. When used with a node,
1345+
line/column are still derived from the node but the reported
1346+
module/filepath are overridden.
13451347
"""
13461348
if confidence is None:
13471349
confidence = interfaces.UNDEFINED

tests/lint/unittest_lint.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,45 @@ def test_addmessage(linter: PyLinter) -> None:
515515
)
516516

517517

518+
def test_addmessage_module_and_filepath_override(linter: PyLinter) -> None:
519+
"""Module and filepath override current_name/current_file when node is None."""
520+
linter.set_reporter(testutils.GenericTestReporter())
521+
linter.open()
522+
linter.set_current_module("current_module")
523+
linter.add_message(
524+
"C0301",
525+
line=1,
526+
args=(1, 2),
527+
module="overridden_module",
528+
filepath="/fake/path.py",
529+
)
530+
assert len(linter.reporter.messages) == 1
531+
msg = linter.reporter.messages[0]
532+
assert msg.location.module == "overridden_module"
533+
assert msg.location.abspath == "/fake/path.py"
534+
assert msg.location.path == "/fake/path.py"
535+
536+
537+
def test_addmessage_module_and_filepath_override_with_node(linter: PyLinter) -> None:
538+
"""Module and filepath override node-derived values; line/col still come from node."""
539+
linter.set_reporter(testutils.GenericTestReporter())
540+
linter.open()
541+
linter.set_current_module("current_module")
542+
module_node = astroid.parse("x = 1")
543+
node = module_node.body[0]
544+
linter.add_message(
545+
"C0321",
546+
node=node,
547+
module="overridden_module",
548+
filepath="/fake/path.py",
549+
)
550+
assert len(linter.reporter.messages) == 1
551+
msg = linter.reporter.messages[0]
552+
assert msg.location.module == "overridden_module"
553+
assert msg.location.abspath == "/fake/path.py"
554+
assert msg.location.line == node.fromlineno
555+
556+
518557
def test_addmessage_invalid(linter: PyLinter) -> None:
519558
linter.set_reporter(testutils.GenericTestReporter())
520559
linter.open()

0 commit comments

Comments
 (0)