forked from Proxmox/proxmox
tests: factor out directory cleanup+creation
This moves the clean-up to happen up-front. That way one can still inspect the test data after, e.g., a failed test. Originally done almost like this in a patch from Fiona [0] that I just overlooked, but now also factored out, avoid crowding the test code to much with duplicate code. [0]: https://lists.proxmox.com/pipermail/pve-devel/2023-June/057136.html Suggested-by: Fiona Ebner <f.ebner@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
195e9e1cdf
commit
4e2cc6fd53
@ -9,6 +9,16 @@ use proxmox_apt::repositories::{
|
||||
APTRepositoryHandle, APTRepositoryInfo, APTStandardRepository, DebianCodename,
|
||||
};
|
||||
|
||||
fn create_clean_directory(path: &PathBuf) -> Result<(), Error> {
|
||||
match std::fs::remove_dir_all(path) {
|
||||
Err(err) if err.kind() == std::io::ErrorKind::NotFound => (),
|
||||
Err(err) => bail!("unable to remove dir {path:?} - {err}"),
|
||||
Ok(_) => (),
|
||||
}
|
||||
std::fs::create_dir_all(path)
|
||||
.map_err(|err| format_err!("unable to create dir {path:?} - {err}"))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_parse_write() -> Result<(), Error> {
|
||||
test_parse_write_dir("sources.list.d")?;
|
||||
@ -24,8 +34,7 @@ fn test_parse_write_dir(read_dir: &str) -> Result<(), Error> {
|
||||
let write_dir = tmp_dir.join("sources.list.d.actual");
|
||||
let expected_dir = test_dir.join("sources.list.d.expected");
|
||||
|
||||
std::fs::create_dir_all(&write_dir)
|
||||
.map_err(|err| format_err!("unable to create dir {:?} - {}", write_dir, err))?;
|
||||
create_clean_directory(&write_dir)?;
|
||||
|
||||
let mut files = vec![];
|
||||
let mut errors = vec![];
|
||||
@ -66,10 +75,10 @@ fn test_parse_write_dir(read_dir: &str) -> Result<(), Error> {
|
||||
let actual_path = write_dir.join(expected_path.file_name().unwrap());
|
||||
|
||||
let expected_contents = std::fs::read(&expected_path)
|
||||
.map_err(|err| format_err!("unable to read {:?} - {}", expected_path, err))?;
|
||||
.map_err(|err| format_err!("unable to read {expected_path:?} - {err}"))?;
|
||||
|
||||
let actual_contents = std::fs::read(&actual_path)
|
||||
.map_err(|err| format_err!("unable to read {:?} - {}", actual_path, err))?;
|
||||
.map_err(|err| format_err!("unable to read {actual_path:?} - {err}"))?;
|
||||
|
||||
assert_eq!(
|
||||
expected_contents, actual_contents,
|
||||
@ -92,8 +101,7 @@ fn test_digest() -> Result<(), Error> {
|
||||
let read_dir = test_dir.join("sources.list.d");
|
||||
let write_dir = tmp_dir.join("sources.list.d.digest");
|
||||
|
||||
std::fs::create_dir_all(&write_dir)
|
||||
.map_err(|err| format_err!("unable to create dir {:?} - {}", write_dir, err))?;
|
||||
create_clean_directory(&write_dir)?;
|
||||
|
||||
let path = read_dir.join("standard.list");
|
||||
|
||||
@ -130,9 +138,6 @@ fn test_digest() -> Result<(), Error> {
|
||||
|
||||
assert!(file.write().is_err());
|
||||
|
||||
// best-effort cleanup for re-builds without a `cargo clean` in between
|
||||
let _ = std::fs::remove_dir_all(&write_dir);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@ -142,13 +147,7 @@ fn test_empty_write() -> Result<(), Error> {
|
||||
let read_dir = test_dir.join("sources.list.d");
|
||||
let write_dir = test_dir.join("sources.list.d.remove");
|
||||
|
||||
if write_dir.is_dir() {
|
||||
std::fs::remove_dir_all(&write_dir)
|
||||
.map_err(|err| format_err!("unable to remove dir {:?} - {}", write_dir, err))?;
|
||||
}
|
||||
|
||||
std::fs::create_dir_all(&write_dir)
|
||||
.map_err(|err| format_err!("unable to create dir {:?} - {}", write_dir, err))?;
|
||||
create_clean_directory(&write_dir)?;
|
||||
|
||||
let path = read_dir.join("standard.list");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user