未验证 提交 2a409118 编写于 作者: M Matthias Krüger 提交者: GitHub

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
......@@ -96,9 +96,25 @@ fn check_dir(dir: &Path) -> FilesystemSupport {
#[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 @@ pub fn check(path: &Path, bad: &mut bool) {
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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册