forked from lix-project/lix-installer
BUGFIX: CreateDirectory now properly prunes when it should (#181)
* BUGFIX: CreateDirectory now properly prunes when it should * in a module
This commit is contained in:
parent
7ce0ae5391
commit
11e4d64c76
|
@ -173,7 +173,8 @@ impl Action for CreateDirectory {
|
||||||
.read_dir()
|
.read_dir()
|
||||||
.map_err(|e| ActionError::Read(path.clone(), e))?
|
.map_err(|e| ActionError::Read(path.clone(), e))?
|
||||||
.next()
|
.next()
|
||||||
.is_some();
|
.is_none();
|
||||||
|
|
||||||
match (is_empty, force_prune_on_revert) {
|
match (is_empty, force_prune_on_revert) {
|
||||||
(true, _) | (false, true) => remove_dir_all(path.clone())
|
(true, _) | (false, true) => remove_dir_all(path.clone())
|
||||||
.await
|
.await
|
||||||
|
@ -186,3 +187,64 @@ impl Action for CreateDirectory {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn creates_and_deletes_empty_directory() -> eyre::Result<()> {
|
||||||
|
let temp_dir = tempdir::TempDir::new("nix_installer_tests_create_file")?;
|
||||||
|
let test_dir = temp_dir.path().join("creates_and_deletes_empty_directory");
|
||||||
|
let mut action = CreateDirectory::plan(test_dir.clone(), None, None, None, false).await?;
|
||||||
|
|
||||||
|
action.try_execute().await?;
|
||||||
|
|
||||||
|
action.try_revert().await?;
|
||||||
|
|
||||||
|
assert!(!test_dir.exists(), "Folder should have been deleted");
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn creates_and_deletes_populated_directory_if_prune_true() -> eyre::Result<()> {
|
||||||
|
let temp_dir = tempdir::TempDir::new("nix_installer_tests_create_file")?;
|
||||||
|
let test_dir = temp_dir
|
||||||
|
.path()
|
||||||
|
.join("creates_and_deletes_populated_directory_if_prune_true");
|
||||||
|
let mut action = CreateDirectory::plan(test_dir.clone(), None, None, None, true).await?;
|
||||||
|
|
||||||
|
action.try_execute().await?;
|
||||||
|
|
||||||
|
let stub_file = test_dir.as_path().join("stub");
|
||||||
|
tokio::fs::write(stub_file, "More content").await?;
|
||||||
|
|
||||||
|
action.try_revert().await?;
|
||||||
|
|
||||||
|
assert!(!test_dir.exists(), "Folder should have been deleted");
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn creates_and_leaves_populated_directory_if_prune_false() -> eyre::Result<()> {
|
||||||
|
let temp_dir = tempdir::TempDir::new("nix_installer_tests_create_file")?;
|
||||||
|
let test_dir = temp_dir
|
||||||
|
.path()
|
||||||
|
.join("creates_and_leaves_populated_directory_if_prune_false");
|
||||||
|
let mut action = CreateDirectory::plan(test_dir.clone(), None, None, None, false).await?;
|
||||||
|
|
||||||
|
action.try_execute().await?;
|
||||||
|
|
||||||
|
let stub_file = test_dir.as_path().join("stub");
|
||||||
|
tokio::fs::write(&stub_file, "More content").await?;
|
||||||
|
|
||||||
|
action.try_revert().await?;
|
||||||
|
|
||||||
|
assert!(test_dir.exists(), "Folder should not have been deleted");
|
||||||
|
assert!(stub_file.exists(), "Folder should not have been deleted");
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue