comtrya_lib/steps/finalizers/
env_vars_remove.rs

1use crate::atoms::Atom;
2use crate::steps::finalizers::Finalizer;
3use std::collections::HashMap;
4
5#[derive(Clone, Debug)]
6pub struct RemoveEnvVars(pub HashMap<String, String>);
7
8impl Finalizer for RemoveEnvVars {
9    fn finalize(&self, _atom: &dyn Atom) -> anyhow::Result<bool> {
10        for (key, _value) in self.0.iter() {
11            std::env::remove_var(key);
12        }
13
14        Ok(true)
15    }
16}
17
18#[cfg(test)]
19mod tests {
20    use super::*;
21    use crate::atoms::Echo;
22    use std::env;
23
24    #[test]
25    fn test_env_vars() {
26        let atom = Echo("goodbye-world");
27        env::set_var("FOO", "bar");
28
29        let map = HashMap::from([("FOO".to_string(), "bar".to_string())]);
30        let finalizer = RemoveEnvVars(map);
31        let result = finalizer.finalize(&atom);
32
33        pretty_assertions::assert_eq!(true, result.is_ok());
34        pretty_assertions::assert_eq!(true, result.unwrap());
35        pretty_assertions::assert_eq!(true, std::env::var("FOO").is_err());
36    }
37}