Skip to content

Commit

Permalink
Revert "compiletest: use std::fs::remove_dir_all now that it is ava…
Browse files Browse the repository at this point in the history
…ilable"

This reverts commit 75ed089.
  • Loading branch information
jieyouxu committed Aug 22, 2024
1 parent e0900a1 commit 3957f39
Showing 1 changed file with 25 additions and 2 deletions.
27 changes: 25 additions & 2 deletions src/tools/compiletest/src/runtest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3265,7 +3265,7 @@ impl<'test> TestCx<'test> {

let tmpdir = cwd.join(self.output_base_name());
if tmpdir.exists() {
fs::remove_dir_all(&tmpdir).unwrap();
self.aggressive_rm_rf(&tmpdir).unwrap();
}
create_dir_all(&tmpdir).unwrap();

Expand Down Expand Up @@ -3404,6 +3404,29 @@ impl<'test> TestCx<'test> {
}
}

fn aggressive_rm_rf(&self, path: &Path) -> io::Result<()> {
for e in path.read_dir()? {
let entry = e?;
let path = entry.path();
if entry.file_type()?.is_dir() {
self.aggressive_rm_rf(&path)?;
} else {
// Remove readonly files as well on windows (by default we can't)
fs::remove_file(&path).or_else(|e| {
if cfg!(windows) && e.kind() == io::ErrorKind::PermissionDenied {
let mut meta = entry.metadata()?.permissions();
meta.set_readonly(false);
fs::set_permissions(&path, meta)?;
fs::remove_file(&path)
} else {
Err(e)
}
})?;
}
}
fs::remove_dir(path)
}

fn run_rmake_v2_test(&self) {
// For `run-make` V2, we need to perform 2 steps to build and run a `run-make` V2 recipe
// (`rmake.rs`) to run the actual tests. The support library is already built as a tool rust
Expand Down Expand Up @@ -3452,7 +3475,7 @@ impl<'test> TestCx<'test> {
// This setup intentionally diverges from legacy Makefile run-make tests.
let base_dir = self.output_base_name();
if base_dir.exists() {
fs::remove_dir_all(&base_dir).unwrap();
self.aggressive_rm_rf(&base_dir).unwrap();
}
let rmake_out_dir = base_dir.join("rmake_out");
create_dir_all(&rmake_out_dir).unwrap();
Expand Down

0 comments on commit 3957f39

Please sign in to comment.