[−][src]Struct figment::Jail
test only.A "sandboxed" environment with isolated env and file system namespace.
Jail creates a pseudo-sandboxed (not actually sandboxed) environment for
testing configurations. Specifically, Jail:
- Synchronizes all calls to
Jail::expect_with()andJail::try_with()to prevent environment variables races. - Switches into a fresh temporary directory (
Jail::directory()) where files can be created withJail::create_file(). - Keeps track of environment variables created with
Jail::set_env()and clears them when theJailexits. - Deletes the temporary directory and all of its contents when exiting.
Additionally, because Jail expects functions that return a Result,
the ? operator can be used liberally in a jail:
use figment::{Figment, Jail, providers::{Format, Toml, Env}}; figment::Jail::expect_with(|jail| { jail.create_file("Cargo.toml", r#" name = "test" authors = ["bob"] publish = false "#)?; jail.set_env("CARGO_NAME", "env-test"); let config: Config = Figment::new() .merge(Toml::file("Cargo.toml")) .merge(Env::prefixed("CARGO_")) .extract()?; Ok(()) });
Implementations
impl Jail[src]
pub fn expect_with<F: FnOnce(&mut Jail) -> Result<()>>(f: F)[src]
Creates a new jail that calls f, passing itself to f.
Panics
Panics if f returns an Err; prints the error message.
Example
figment::Jail::expect_with(|jail| { /* in the jail */ Ok(()) });
pub fn try_with<F: FnOnce(&mut Jail) -> Result<()>>(f: F) -> Result<()>[src]
Creates a new jail that calls f, passing itself to f. Does not panic;
returns the result from f.
Example
let result = figment::Jail::try_with(|jail| { /* in the jail */ Ok(()) });
pub fn directory(&self) -> &Path[src]
Returns the directory the jail has switched into. The contents of this
directory will be cleared when Jail is dropped.
Example
figment::Jail::expect_with(|jail| { let tmp_directory = jail.directory(); Ok(()) });
pub fn create_file<P: AsRef<Path>>(
&self,
path: P,
contents: &str
) -> Result<File>[src]
&self,
path: P,
contents: &str
) -> Result<File>
Creates a file with contents contents in the jail's directory. The
file will be deleted with the jail is dropped.
Example
figment::Jail::expect_with(|jail| { jail.create_file("MyConfig.json", "contents..."); Ok(()) });
pub fn set_env<K: AsRef<str>, V: Display>(&mut self, k: K, v: V)[src]
Set the environment variable k to value v. The variable will be
removed when the jail is dropped.
Example
const VAR_NAME: &str = "my-very-special-figment-var"; assert!(std::env::var(VAR_NAME).is_err()); figment::Jail::expect_with(|jail| { jail.set_env(VAR_NAME, "value"); assert!(std::env::var(VAR_NAME).is_ok()); Ok(()) }); assert!(std::env::var(VAR_NAME).is_err());
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Jail[src]
impl Send for Jail[src]
impl Sync for Jail[src]
impl Unpin for Jail[src]
impl UnwindSafe for Jail[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,