Skip to content

Commit 84f2a5b

Browse files
Fix exporting to JSON does not honor score option #3504
1 parent 70cdb9d commit 84f2a5b

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

pylint/lint/pylinter.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,13 +1111,9 @@ def open(self):
11111111
self.stats[msg_cat] = 0
11121112

11131113
def generate_reports(self):
1114-
"""close the whole package /module, it's time to make reports !
1115-
1116-
if persistent run, pickle results for later comparison
1117-
"""
1118-
# Display whatever messages are left on the reporter.
1119-
self.reporter.display_messages(report_nodes.Section())
1114+
"""Close the whole package /module, it's time to make reports !
11201115
1116+
if persistent run, pickle results for later comparison."""
11211117
if self.file_state.base_name is not None:
11221118
# load previous results if any
11231119
previous_stats = config.load_results(self.file_state.base_name)
@@ -1136,6 +1132,8 @@ def generate_reports(self):
11361132
else:
11371133
self.reporter.on_close(self.stats, {})
11381134
score_value = None
1135+
# Display whatever messages are left on the reporter.
1136+
self.reporter.display_messages(report_nodes.Section())
11391137
return score_value
11401138

11411139
def _report_evaluation(self):

pylint/reporters/json_reporter.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
# For details: https://github.com/PyCQA/pylint/blob/master/COPYING
1212

1313
"""JSON reporter"""
14+
import io
1415
import json
1516
import sys
1617

1718
from pylint.interfaces import IReporter
1819
from pylint.reporters.base_reporter import BaseReporter
20+
from pylint.reporters.ureports.text_writer import TextWriter
1921

2022

2123
class JSONReporter(BaseReporter):
@@ -50,7 +52,10 @@ def display_messages(self, layout):
5052
print(json.dumps(self.messages, indent=4), file=self.out)
5153

5254
def display_reports(self, layout):
53-
"""Don't do anything in this reporter."""
55+
output = io.StringIO()
56+
TextWriter().format(layout, output)
57+
score = output.getvalue().split("\n")[1]
58+
self.messages.append({"score": score})
5459

5560
def _display(self, layout):
5661
"""Do nothing."""

tests/test_self.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ def test_json_report_does_not_escape_quotes(self):
392392
self._runtest([module], code=4, reporter=JSONReporter(out))
393393
output = json.loads(out.getvalue())
394394
assert isinstance(output, list)
395-
assert len(output) == 1
395+
assert len(output) == 2
396396
assert isinstance(output[0], dict)
397397
expected = {
398398
"symbol": "unused-variable",
@@ -403,10 +403,13 @@ def test_json_report_does_not_escape_quotes(self):
403403
"line": 4,
404404
"type": "warning",
405405
}
406+
406407
message = output[0]
407408
for key, value in expected.items():
408409
assert key in message
409410
assert message[key] == value
411+
expected = {"score": "Your code has been rated at 7.50/10"}
412+
assert output[-1] == expected
410413

411414
def test_information_category_disabled_by_default(self):
412415
expected = "Your code has been rated at 10.00/10"

0 commit comments

Comments
 (0)