mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-01 23:12:02 +00:00
Rollup merge of #98793 - Mark-Simulacrum:fix-tidy-bins, r=jyn514
Lint against executable files in the root directory This avoids accidental introduction (such as in #97488) of executable files into the root directory, not just under library/, src/ or compiler/. Resolves #98792
This commit is contained in:
commit
2a4091187a
@ -96,9 +96,25 @@ mod os_impl {
|
||||
|
||||
#[cfg(unix)]
|
||||
pub fn check(path: &Path, bad: &mut bool) {
|
||||
const ALLOWED: &[&str] = &["configure"];
|
||||
|
||||
crate::walk_no_read(
|
||||
path,
|
||||
&mut |path| crate::filter_dirs(path) || path.ends_with("src/etc"),
|
||||
&mut |path| {
|
||||
crate::filter_dirs(path)
|
||||
|| path.ends_with("src/etc")
|
||||
// This is a list of directories that we almost certainly
|
||||
// don't need to walk. A future PR will likely want to
|
||||
// remove these in favor of crate::walk_no_read using git
|
||||
// ls-files to discover the paths we should check, which
|
||||
// would naturally ignore all of these directories. It's
|
||||
// also likely faster than walking the directory tree
|
||||
// directly (since git is just reading from a couple files
|
||||
// to produce the results).
|
||||
|| path.ends_with("target")
|
||||
|| path.ends_with("build")
|
||||
|| path.ends_with(".git")
|
||||
},
|
||||
&mut |entry| {
|
||||
let file = entry.path();
|
||||
let filename = file.file_name().unwrap().to_string_lossy();
|
||||
@ -110,6 +126,11 @@ mod os_impl {
|
||||
if t!(is_executable(&file), file) {
|
||||
let rel_path = file.strip_prefix(path).unwrap();
|
||||
let git_friendly_path = rel_path.to_str().unwrap().replace("\\", "/");
|
||||
|
||||
if ALLOWED.contains(&git_friendly_path.as_str()) {
|
||||
return;
|
||||
}
|
||||
|
||||
let output = Command::new("git")
|
||||
.arg("ls-files")
|
||||
.arg(&git_friendly_path)
|
||||
|
@ -78,13 +78,8 @@ fn main() {
|
||||
check!(unit_tests, &compiler_path);
|
||||
check!(unit_tests, &library_path);
|
||||
|
||||
if bins::check_filesystem_support(
|
||||
&[&src_path, &compiler_path, &library_path],
|
||||
&output_directory,
|
||||
) {
|
||||
check!(bins, &src_path);
|
||||
check!(bins, &compiler_path);
|
||||
check!(bins, &library_path);
|
||||
if bins::check_filesystem_support(&[&root_path], &output_directory) {
|
||||
check!(bins, &root_path);
|
||||
}
|
||||
|
||||
check!(style, &src_path);
|
||||
|
Loading…
Reference in New Issue
Block a user