35 lines
825 B
Rust
35 lines
825 B
Rust
use std::fs;
|
|
use std::ops::Deref;
|
|
use std::path::PathBuf;
|
|
|
|
use bds_core::db::Database;
|
|
use tempfile::TempDir;
|
|
|
|
pub struct FixtureDatabase {
|
|
database: Database,
|
|
_directory: TempDir,
|
|
}
|
|
|
|
impl Deref for FixtureDatabase {
|
|
type Target = Database;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
&self.database
|
|
}
|
|
}
|
|
|
|
pub fn fixture_database() -> FixtureDatabase {
|
|
let source = PathBuf::from(env!("CARGO_MANIFEST_DIR"))
|
|
.join("../../fixtures/compatibility-projects/rfc1437-sample");
|
|
let directory = TempDir::new().unwrap();
|
|
|
|
for name in ["bds.db", "bds.db-shm", "bds.db-wal"] {
|
|
fs::copy(source.join(name), directory.path().join(name)).unwrap();
|
|
}
|
|
|
|
FixtureDatabase {
|
|
database: Database::open(&directory.path().join("bds.db")).unwrap(),
|
|
_directory: directory,
|
|
}
|
|
}
|