use lex_extension::schema::Capabilities;
use super::{Sandbox, SandboxError};
#[derive(Debug, Default, Clone, Copy)]
pub struct NullSandbox;
impl Sandbox for NullSandbox {
fn apply_to(
&self,
_cmd: &mut std::process::Command,
_caps: Capabilities,
) -> Result<(), SandboxError> {
Ok(())
}
fn supports(&self, _caps: Capabilities) -> bool {
false
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn null_sandbox_reports_unsupported_for_every_capability_shape() {
let s = NullSandbox;
assert!(!s.supports(Capabilities::default()));
assert!(!s.supports(Capabilities {
fs: true,
net: false
}));
assert!(!s.supports(Capabilities {
fs: true,
net: true
}));
}
#[test]
fn null_sandbox_apply_is_a_no_op() {
let s = NullSandbox;
let mut cmd = std::process::Command::new("true");
s.apply_to(&mut cmd, Capabilities::default()).unwrap();
s.apply_to(
&mut cmd,
Capabilities {
fs: true,
net: true,
},
)
.unwrap();
}
}