Skip to content

Commit

Permalink
Lint against executable files in the root directory
Browse files Browse the repository at this point in the history
This avoids accidental introduction (such as in #97488).
  • Loading branch information
Mark-Simulacrum committed Jul 2, 2022
1 parent 9a6fa4f commit 45b87fb
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 8 deletions.
23 changes: 22 additions & 1 deletion src/tools/tidy/src/bins.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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)
Expand Down
9 changes: 2 additions & 7 deletions src/tools/tidy/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Binary file removed suggest-blanket-impl-local-trait
Binary file not shown.

0 comments on commit 45b87fb

Please sign in to comment.