extern crate codex_execpolicy; use std::vec; use codex_execpolicy::Error; use codex_execpolicy::ExecCall; use codex_execpolicy::MatchedExec; use codex_execpolicy::MatchedFlag; use codex_execpolicy::Policy; use codex_execpolicy::PositionalArg; use codex_execpolicy::ValidExec; use codex_execpolicy::get_default_policy; fn setup() -> Policy { get_default_policy().expect("failed to load default policy") } #[test] fn test_pwd_no_args() { let policy = setup(); let pwd = ExecCall::new("pwd", &[]); assert_eq!( Ok(MatchedExec::Match { exec: ValidExec { program: "pwd".into(), ..Default::default() } }), policy.check(&pwd) ); } #[test] fn test_pwd_capital_l() { let policy = setup(); let pwd = ExecCall::new("pwd", &["-L"]); assert_eq!( Ok(MatchedExec::Match { exec: ValidExec { program: "pwd".into(), flags: vec![MatchedFlag::new("-L")], ..Default::default() } }), policy.check(&pwd) ); } #[test] fn test_pwd_capital_p() { let policy = setup(); let pwd = ExecCall::new("pwd", &["-P"]); assert_eq!( Ok(MatchedExec::Match { exec: ValidExec { program: "pwd".into(), flags: vec![MatchedFlag::new("-P")], ..Default::default() } }), policy.check(&pwd) ); } #[test] fn test_pwd_extra_args() { let policy = setup(); let pwd = ExecCall::new("pwd", &["foo", "bar"]); assert_eq!( Err(Error::UnexpectedArguments { program: "pwd".to_string(), args: vec![ PositionalArg { index: 0, value: "foo".to_string() }, PositionalArg { index: 1, value: "bar".to_string() }, ], }), policy.check(&pwd) ); }