use std::ops::{Deref, DerefMut};
use std::os::unix::fs::PermissionsExt;
use crate::TariaLayer;
pub(crate) struct TestLayer {
layer: TariaLayer,
_dir: tempfile::TempDir,
}
pub(crate) fn bind_test_layer(prefix: &str, label: &str) -> TestLayer {
let dir = tempfile::Builder::new()
.prefix(prefix)
.permissions(std::fs::Permissions::from_mode(0o700))
.tempdir()
.expect("create test socket dir");
let layer = TariaLayer::bind_at(label, dir.path().join(format!("{label}.sock")))
.expect("bind test layer");
TestLayer { layer, _dir: dir }
}
impl Deref for TestLayer {
type Target = TariaLayer;
fn deref(&self) -> &TariaLayer {
&self.layer
}
}
impl DerefMut for TestLayer {
fn deref_mut(&mut self) -> &mut TariaLayer {
&mut self.layer
}
}