mirror of
https://git.proxmox.com/git/proxmox
synced 2025-06-14 11:28:18 +00:00
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,
|
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]
|
#[test]
|
||||||
fn test_parse_write() -> Result<(), Error> {
|
fn test_parse_write() -> Result<(), Error> {
|
||||||
test_parse_write_dir("sources.list.d")?;
|
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 write_dir = tmp_dir.join("sources.list.d.actual");
|
||||||
let expected_dir = test_dir.join("sources.list.d.expected");
|
let expected_dir = test_dir.join("sources.list.d.expected");
|
||||||
|
|
||||||
std::fs::create_dir_all(&write_dir)
|
create_clean_directory(&write_dir)?;
|
||||||
.map_err(|err| format_err!("unable to create dir {:?} - {}", write_dir, err))?;
|
|
||||||
|
|
||||||
let mut files = vec![];
|
let mut files = vec![];
|
||||||
let mut errors = 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 actual_path = write_dir.join(expected_path.file_name().unwrap());
|
||||||
|
|
||||||
let expected_contents = std::fs::read(&expected_path)
|
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)
|
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!(
|
assert_eq!(
|
||||||
expected_contents, actual_contents,
|
expected_contents, actual_contents,
|
||||||
@ -92,8 +101,7 @@ fn test_digest() -> Result<(), Error> {
|
|||||||
let read_dir = test_dir.join("sources.list.d");
|
let read_dir = test_dir.join("sources.list.d");
|
||||||
let write_dir = tmp_dir.join("sources.list.d.digest");
|
let write_dir = tmp_dir.join("sources.list.d.digest");
|
||||||
|
|
||||||
std::fs::create_dir_all(&write_dir)
|
create_clean_directory(&write_dir)?;
|
||||||
.map_err(|err| format_err!("unable to create dir {:?} - {}", write_dir, err))?;
|
|
||||||
|
|
||||||
let path = read_dir.join("standard.list");
|
let path = read_dir.join("standard.list");
|
||||||
|
|
||||||
@ -130,9 +138,6 @@ fn test_digest() -> Result<(), Error> {
|
|||||||
|
|
||||||
assert!(file.write().is_err());
|
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(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,13 +147,7 @@ fn test_empty_write() -> Result<(), Error> {
|
|||||||
let read_dir = test_dir.join("sources.list.d");
|
let read_dir = test_dir.join("sources.list.d");
|
||||||
let write_dir = test_dir.join("sources.list.d.remove");
|
let write_dir = test_dir.join("sources.list.d.remove");
|
||||||
|
|
||||||
if write_dir.is_dir() {
|
create_clean_directory(&write_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))?;
|
|
||||||
|
|
||||||
let path = read_dir.join("standard.list");
|
let path = read_dir.join("standard.list");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user