Rollup merge of #137147 - Shourya742:2025-02-16-support-exclude-in-config.toml, r=onur-ozkan

Add exclude to config.toml

Closes: https://github.com/rust-lang/rust/issues/35678

r? `@onur-ozkan`

try-job: x86_64-msvc-2
This commit is contained in:
许杰友 Jieyou Xu (Joe)
2025-03-16 09:40:02 +08:00
committed by GitHub
4 changed files with 46 additions and 16 deletions
+22 -16
View File
@@ -959,6 +959,7 @@ struct Build {
jobs: Option<u32> = "jobs",
compiletest_diff_tool: Option<String> = "compiletest-diff-tool",
ccache: Option<StringOrBool> = "ccache",
exclude: Option<Vec<PathBuf>> = "exclude",
}
}
@@ -1397,22 +1398,6 @@ pub(crate) fn parse_inner(
"flags.exclude" = ?flags.exclude
);
config.skip = flags
.skip
.into_iter()
.chain(flags.exclude)
.map(|p| {
// Never return top-level path here as it would break `--skip`
// logic on rustc's internal test framework which is utilized
// by compiletest.
if cfg!(windows) {
PathBuf::from(p.to_str().unwrap().replace('/', "\\"))
} else {
p
}
})
.collect();
#[cfg(feature = "tracing")]
span!(
target: "CONFIG_HANDLING",
@@ -1658,8 +1643,29 @@ fn get_table(option: &str) -> Result<TomlConfig, toml::de::Error> {
jobs,
compiletest_diff_tool,
mut ccache,
exclude,
} = toml.build.unwrap_or_default();
let mut paths: Vec<PathBuf> = flags.skip.into_iter().chain(flags.exclude).collect();
if let Some(exclude) = exclude {
paths.extend(exclude);
}
config.skip = paths
.into_iter()
.map(|p| {
// Never return top-level path here as it would break `--skip`
// logic on rustc's internal test framework which is utilized
// by compiletest.
if cfg!(windows) {
PathBuf::from(p.to_str().unwrap().replace('/', "\\"))
} else {
p
}
})
.collect();
config.jobs = Some(threads_from_config(flags.jobs.unwrap_or(jobs.unwrap_or(0))));
if let Some(file_build) = build {
+15
View File
@@ -515,3 +515,18 @@ fn test_explicit_stage() {
assert!(!config.explicit_stage_from_config);
assert!(!config.is_explicit_stage());
}
#[test]
fn test_exclude() {
let exclude_path = "compiler";
let config = parse(&format!("build.exclude=[\"{}\"]", exclude_path));
let first_excluded = config
.skip
.first()
.expect("Expected at least one excluded path")
.to_str()
.expect("Failed to convert excluded path to string");
assert_eq!(first_excluded, exclude_path);
}
@@ -380,4 +380,9 @@ pub fn human_readable_changes(changes: &[ChangeInfo]) -> String {
severity: ChangeSeverity::Warning,
summary: "Removed `src/tools/rls` tool as it was deprecated long time ago.",
},
ChangeInfo {
change_id: 137147,
severity: ChangeSeverity::Info,
summary: "New option `build.exclude` that adds support for excluding test.",
},
];