[functional-tests (rust)] factor out TestDir
This commit is contained in:
@@ -12,13 +12,6 @@ use crate::common::xml_generator::{write_xml, FragmentedS, SingleThinS};
|
||||
|
||||
//------------------------------------------
|
||||
|
||||
pub fn mk_path(dir: &Path, file: &str) -> PathBuf {
|
||||
let mut p = PathBuf::new();
|
||||
p.push(dir);
|
||||
p.push(PathBuf::from(file));
|
||||
p
|
||||
}
|
||||
|
||||
// FIXME: write a macro to generate these commands
|
||||
#[macro_export]
|
||||
macro_rules! thin_check {
|
||||
@@ -53,6 +46,27 @@ macro_rules! thin_dump {
|
||||
};
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
|
||||
pub struct TestDir {
|
||||
dir: TempDir,
|
||||
file_count: usize,
|
||||
}
|
||||
|
||||
impl TestDir {
|
||||
pub fn new() -> Result<TestDir> {
|
||||
let dir = tempdir()?;
|
||||
Ok(TestDir {dir, file_count: 0})
|
||||
}
|
||||
|
||||
pub fn mk_path(&mut self, file: &str) -> PathBuf {
|
||||
let mut p = PathBuf::new();
|
||||
p.push(&self.dir);
|
||||
p.push(PathBuf::from(format!("{:02}_{}", self.file_count, file)));
|
||||
self.file_count += 1;
|
||||
p
|
||||
}
|
||||
}
|
||||
|
||||
// Returns stderr, a non zero status must be returned
|
||||
pub fn run_fail(command: Expression) -> Result<String> {
|
||||
@@ -61,16 +75,16 @@ pub fn run_fail(command: Expression) -> Result<String> {
|
||||
Ok(from_utf8(&output.stderr[0..]).unwrap().to_string())
|
||||
}
|
||||
|
||||
pub fn mk_valid_xml(dir: &TempDir) -> Result<PathBuf> {
|
||||
let xml = mk_path(dir.path(), "meta.xml");
|
||||
pub fn mk_valid_xml(td: &mut TestDir) -> Result<PathBuf> {
|
||||
let xml = td.mk_path("meta.xml");
|
||||
let mut gen = SingleThinS::new(0, 1024, 2048, 2048);
|
||||
write_xml(&xml, &mut gen)?;
|
||||
Ok(xml)
|
||||
}
|
||||
|
||||
pub fn mk_valid_md(dir: &TempDir) -> Result<PathBuf> {
|
||||
let xml = mk_path(dir.path(), "meta.xml");
|
||||
let md = mk_path(dir.path(), "meta.bin");
|
||||
pub fn mk_valid_md(td: &mut TestDir) -> Result<PathBuf> {
|
||||
let xml = td.mk_path("meta.xml");
|
||||
let md = td.mk_path("meta.bin");
|
||||
|
||||
let mut gen = SingleThinS::new(0, 1024, 2048, 2048);
|
||||
write_xml(&xml, &mut gen)?;
|
||||
@@ -80,15 +94,15 @@ pub fn mk_valid_md(dir: &TempDir) -> Result<PathBuf> {
|
||||
Ok(md)
|
||||
}
|
||||
|
||||
pub fn mk_zeroed_md(dir: &TempDir) -> Result<PathBuf> {
|
||||
let md = mk_path(dir.path(), "meta.bin");
|
||||
pub fn mk_zeroed_md(td: &mut TestDir) -> Result<PathBuf> {
|
||||
let md = td.mk_path("meta.bin");
|
||||
let _file = file_utils::create_sized_file(&md, 4096 * 4096);
|
||||
Ok(md)
|
||||
}
|
||||
|
||||
pub fn accepts_flag(flag: &str) -> Result<()> {
|
||||
let dir = tempdir()?;
|
||||
let md = mk_valid_md(&dir)?;
|
||||
let mut td = TestDir::new()?;
|
||||
let md = mk_valid_md(&mut td)?;
|
||||
thin_check!(flag, &md).run()?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user