use super::TestError;
use rstest::fixture;
use std::fs::remove_file;
use std::path::PathBuf;
pub fn remove_files(files: &[&str]) -> Result<(), std::io::Error> {
for file in files {
if let Err(error) = remove_file(file) {
eprintln!("Unable to remove {}: {}", file, error);
};
}
Ok(())
}
#[fixture]
pub fn input_path_ovmf_code() -> Result<PathBuf, TestError> {
let candidates = [PathBuf::from("/usr/share/edk2/x64/OVMF_CODE.4m.fd")];
match candidates.iter().find(|&candidate| candidate.exists()) {
Some(candidate) => Ok(candidate.clone()),
None => return Err(TestError::Missing("OVMF code".to_string())),
}
}
#[fixture]
pub fn input_path_ovmf_vars() -> Result<PathBuf, TestError> {
let candidates = [PathBuf::from("/usr/share/edk2/x64/OVMF_VARS.4m.fd")];
match candidates.iter().find(|&candidate| candidate.exists()) {
Some(candidate) => Ok(candidate.clone()),
None => return Err(TestError::Missing("OVMF code".to_string())),
}
}
#[fixture]
pub fn output_dir() -> PathBuf {
PathBuf::from(env!("CARGO_TARGET_TMPDIR"))
}
#[fixture]
pub fn output_path_base_image(output_dir: PathBuf) -> PathBuf {
PathBuf::from(&output_dir).join("base")
}
#[fixture]
pub fn output_path_single_image(output_dir: PathBuf) -> PathBuf {
PathBuf::from(&output_dir).join("single")
}
#[fixture]
pub fn output_path_ab_image(output_dir: PathBuf) -> PathBuf {
PathBuf::from(&output_dir).join("ab")
}
#[fixture]
pub fn output_dir_ab_override(output_dir: PathBuf) -> PathBuf {
PathBuf::from(&output_dir).join("override_for_ab")
}
#[fixture]
pub fn output_path_ovmf_vars(output_dir: PathBuf) -> PathBuf {
PathBuf::from(&output_dir).join("ovmf_vars.fd")
}
#[fixture]
fn tests_dir() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests")
}
#[fixture]
pub fn mkosi_dir_base_image(tests_dir: PathBuf) -> PathBuf {
PathBuf::from(tests_dir).join("mkosi").join("base_image")
}
#[fixture]
pub fn mkosi_dir_single_image(tests_dir: PathBuf) -> PathBuf {
PathBuf::from(tests_dir).join("mkosi").join("single_image")
}
#[fixture]
pub fn mkosi_dir_ab_image(tests_dir: PathBuf) -> PathBuf {
PathBuf::from(tests_dir).join("mkosi").join("ab_image")
}
#[fixture]
pub fn mkosi_dir_bundle_image(tests_dir: PathBuf) -> PathBuf {
PathBuf::from(tests_dir).join("mkosi").join("bundle_image")
}