Extract duplicated logic into method (#1428)

This commit is contained in:
Hannes Käufler 2022-12-28 22:10:53 +01:00 committed by GitHub
parent d16ba890ae
commit 79ba420faa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 20 deletions

View File

@ -135,17 +135,8 @@ impl<'a> Printer<'a> {
SerializationFormat::Junit => { SerializationFormat::Junit => {
use quick_junit::{NonSuccessKind, Report, TestCase, TestCaseStatus, TestSuite}; use quick_junit::{NonSuccessKind, Report, TestCase, TestCaseStatus, TestSuite};
// Group by filename.
let mut grouped_messages = BTreeMap::default();
for message in &diagnostics.messages {
grouped_messages
.entry(&message.filename)
.or_insert_with(Vec::new)
.push(message);
}
let mut report = Report::new("ruff"); let mut report = Report::new("ruff");
for (filename, messages) in grouped_messages { for (filename, messages) in group_messages_by_filename(&diagnostics.messages) {
let mut test_suite = TestSuite::new(filename); let mut test_suite = TestSuite::new(filename);
test_suite test_suite
.extra .extra
@ -184,16 +175,7 @@ impl<'a> Printer<'a> {
self.post_text(diagnostics); self.post_text(diagnostics);
} }
SerializationFormat::Grouped => { SerializationFormat::Grouped => {
// Group by filename. for (filename, messages) in group_messages_by_filename(&diagnostics.messages) {
let mut grouped_messages = BTreeMap::default();
for message in &diagnostics.messages {
grouped_messages
.entry(&message.filename)
.or_insert_with(Vec::new)
.push(message);
}
for (filename, messages) in grouped_messages {
// Compute the maximum number of digits in the row and column, for messages in // Compute the maximum number of digits in the row and column, for messages in
// this file. // this file.
let row_length = num_digits( let row_length = num_digits(
@ -304,6 +286,17 @@ impl<'a> Printer<'a> {
} }
} }
fn group_messages_by_filename(messages: &Vec<Message>) -> BTreeMap<&String, Vec<&Message>> {
let mut grouped_messages = BTreeMap::default();
for message in messages {
grouped_messages
.entry(&message.filename)
.or_insert_with(Vec::new)
.push(message);
}
grouped_messages
}
fn num_digits(n: usize) -> usize { fn num_digits(n: usize) -> usize {
iterate(n, |&n| n / 10) iterate(n, |&n| n / 10)
.take_while(|&n| n > 0) .take_while(|&n| n > 0)