Skip to content

Commit

Permalink
Rollup merge of rust-lang#117961 - Zalathar:suggest, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Add `x suggest` entries for testing `mir-opt` and `coverage`

The `x suggest` subcommand uses git to find paths that have been modified, and uses those paths to suggest relevant test suites to run.

This PR adds suggestions for `x test mir-opt` and `x test coverage` .
  • Loading branch information
TaKO8Ki committed Nov 18, 2023
2 parents b7bc073 + 0532216 commit 1a02061
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 17 deletions.
16 changes: 9 additions & 7 deletions src/tools/suggest-tests/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ pub fn get_suggestions<T: AsRef<str>>(modified_files: &[T]) -> Vec<Suggestion> {
let mut suggestions = Vec::new();

// static suggestions
for sug in STATIC_SUGGESTIONS.iter() {
let glob = Pattern::new(&sug.0).expect("Found invalid glob pattern!");

for file in modified_files {
if glob.matches(file.as_ref()) {
suggestions.extend_from_slice(&sug.1);
}
for (globs, sugs) in STATIC_SUGGESTIONS.iter() {
let globs = globs
.iter()
.map(|glob| Pattern::new(glob).expect("Found invalid glob pattern!"))
.collect::<Vec<_>>();
let matches_some_glob = |file: &str| globs.iter().any(|glob| glob.matches(file));

if modified_files.iter().map(AsRef::as_ref).any(matches_some_glob) {
suggestions.extend_from_slice(sugs);
}
}

Expand Down
31 changes: 21 additions & 10 deletions src/tools/suggest-tests/src/static_suggestions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,34 @@ use crate::{sug, Suggestion};

// FIXME: perhaps this could use `std::lazy` when it is stablizied
macro_rules! static_suggestions {
($( $glob:expr => [ $( $suggestion:expr ),* ] ),*) => {
pub(crate) const STATIC_SUGGESTIONS: ::once_cell::unsync::Lazy<Vec<(&'static str, Vec<Suggestion>)>>
= ::once_cell::unsync::Lazy::new(|| vec![ $( ($glob, vec![ $($suggestion),* ]) ),*]);
($( [ $( $glob:expr ),* $(,)? ] => [ $( $suggestion:expr ),* $(,)? ] ),* $(,)? ) => {
pub(crate) const STATIC_SUGGESTIONS: ::once_cell::unsync::Lazy<Vec<(Vec<&'static str>, Vec<Suggestion>)>>
= ::once_cell::unsync::Lazy::new(|| vec![ $( (vec![ $($glob),* ], vec![ $($suggestion),* ]) ),*]);
}
}

static_suggestions! {
"*.md" => [
sug!("test", 0, ["linkchecker"])
["*.md"] => [
sug!("test", 0, ["linkchecker"]),
],

"compiler/*" => [
["compiler/*"] => [
sug!("check"),
sug!("test", 1, ["tests/ui", "tests/run-make"])
sug!("test", 1, ["tests/ui", "tests/run-make"]),
],

"src/librustdoc/*" => [
sug!("test", 1, ["rustdoc"])
]
["compiler/rustc_mir_transform/*"] => [
sug!("test", 1, ["mir-opt"]),
],

[
"compiler/rustc_mir_transform/src/coverage/*",
"compiler/rustc_codegen_llvm/src/coverageinfo/*",
] => [
sug!("test", 1, ["coverage"]),
],

["src/librustdoc/*"] => [
sug!("test", 1, ["rustdoc"]),
],
}

0 comments on commit 1a02061

Please sign in to comment.