diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-04-14 09:01:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-14 09:01:59 +0200 |
| commit | d1782dba49af35b92ece906ccbe467181f4ecf42 (patch) | |
| tree | ade8b7b45c03ca8cb35f8fc273a9eb011857e6b9 | |
| parent | 2ba0c627dee4dc32b451e542c7b274e382a781a0 (diff) | |
| parent | c6002f171d2cf766c33024f11b8fa880c3fed211 (diff) | |
| download | rust-d1782dba49af35b92ece906ccbe467181f4ecf42.tar.gz rust-d1782dba49af35b92ece906ccbe467181f4ecf42.zip | |
Rollup merge of #123889 - onur-ozkan:improve-tidy, r=Mark-Simulacrum
reduce tidy overheads in run-make checks This change makes tidy to handle run-make checks with a single iteration, avoiding the need for multiple iterations and copying.
| -rw-r--r-- | src/tools/tidy/src/run_make_tests.rs | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/tools/tidy/src/run_make_tests.rs b/src/tools/tidy/src/run_make_tests.rs index 98021cec130..2d9f8448a35 100644 --- a/src/tools/tidy/src/run_make_tests.rs +++ b/src/tools/tidy/src/run_make_tests.rs @@ -6,10 +6,26 @@ use std::io::Write; use std::path::{Path, PathBuf}; pub fn check(tests_path: &Path, src_path: &Path, bless: bool, bad: &mut bool) { + let mut is_sorted = true; + let allowed_makefiles = { - let allowed_makefiles = include_str!("allowed_run_make_makefiles.txt"); - let allowed_makefiles = allowed_makefiles.lines().collect::<Vec<_>>(); - let is_sorted = allowed_makefiles.windows(2).all(|w| w[0] < w[1]); + let mut total_lines = 0; + let mut prev_line = ""; + let allowed_makefiles: BTreeSet<&str> = include_str!("allowed_run_make_makefiles.txt") + .lines() + .map(|line| { + total_lines += 1; + + if prev_line > line { + is_sorted = false; + } + + prev_line = line; + + line + }) + .collect(); + if !is_sorted && !bless { tidy_error!( bad, @@ -18,9 +34,7 @@ pub fn check(tests_path: &Path, src_path: &Path, bless: bool, bad: &mut bool) { `x test tidy --bless`" ); } - let allowed_makefiles_unique = - allowed_makefiles.iter().map(ToString::to_string).collect::<BTreeSet<String>>(); - if allowed_makefiles_unique.len() != allowed_makefiles.len() { + if allowed_makefiles.len() != total_lines { tidy_error!( bad, "`src/tools/tidy/src/allowed_run_make_makefiles.txt` contains duplicate entries, \ @@ -28,7 +42,8 @@ pub fn check(tests_path: &Path, src_path: &Path, bless: bool, bad: &mut bool) { `x test tidy --bless`" ); } - allowed_makefiles_unique + + allowed_makefiles }; let mut remaining_makefiles = allowed_makefiles.clone(); @@ -48,7 +63,7 @@ pub fn check(tests_path: &Path, src_path: &Path, bless: bool, bad: &mut bool) { let makefile_path = entry.path().strip_prefix(&tests_path).unwrap(); let makefile_path = makefile_path.to_str().unwrap().replace('\\', "/"); - if !remaining_makefiles.remove(&makefile_path) { + if !remaining_makefiles.remove(makefile_path.as_str()) { tidy_error!( bad, "found run-make Makefile not permitted in \ @@ -64,7 +79,7 @@ pub fn check(tests_path: &Path, src_path: &Path, bless: bool, bad: &mut bool) { // Our data must remain up to date, so they must be removed from // `src/tools/tidy/src/allowed_run_make_makefiles.txt`. // This can be done automatically on --bless, or else a tidy error will be issued. - if bless && !remaining_makefiles.is_empty() { + if bless && (!remaining_makefiles.is_empty() || !is_sorted) { let tidy_src = src_path.join("tools").join("tidy").join("src"); let org_file_path = tidy_src.join("allowed_run_make_makefiles.txt"); let temp_file_path = tidy_src.join("blessed_allowed_run_make_makefiles.txt"); |
