#![cfg(feature = "_containerized-integration-test")]
use std::{
collections::BTreeMap,
fs::{File, create_dir_all},
io::Write,
os::unix::fs::symlink,
path::{Path, PathBuf},
};
use log::debug;
use simplelog::{ColorChoice, Config, LevelFilter, TermLogger, TerminalMode};
use voa_core::Verifier;
mod system;
mod user;
pub fn init_logger() {
if TermLogger::init(
LevelFilter::Debug,
Config::default(),
TerminalMode::Stderr,
ColorChoice::Auto,
)
.is_err()
{
debug!("Not initializing another logger, as one is initialized already.");
}
}
#[derive(Debug)]
pub enum TestObject {
Path(&'static str),
File(&'static str),
FileWithContent(&'static str, &'static [u8]),
SymLink(&'static str, &'static str),
}
pub fn setup(objects: &[TestObject]) -> std::io::Result<()> {
for object in objects {
match object {
TestObject::Path(p) => create_dir_all(p)?,
TestObject::File(f) => {
File::create(f)?;
}
TestObject::FileWithContent(f, data) => {
let mut f = File::create(f)?;
f.write_all(data)?;
}
TestObject::SymLink(orig, link) => symlink(orig, link)?,
}
}
Ok(())
}
fn compare_expected(verifiers: &BTreeMap<PathBuf, Vec<Verifier>>, expected: &[&str]) {
let paths: Vec<_> = verifiers.keys().collect();
let expected: Vec<_> = expected.iter().map(Path::new).collect();
assert_eq!(paths, expected);
}