use super::*; fn parse(args: &[&str]) -> Result, String> { parse_options(args.iter().map(std::ffi::OsString::from)) } #[test] fn review_commands_preserve_filenames_and_validate_arguments() { assert_eq!( parse(&["review"]).unwrap().unwrap().file, Some("review".into()) ); assert_eq!( parse(&["--", "--review"]).unwrap().unwrap().file, Some("--review".into()) ); assert!( parse(&["--no-config", "--review", "list", "--repo", ".", "--json"]) .unwrap() .unwrap() .review .is_some() ); assert!( parse(&["--review", "show", "1", "--all", "--no-config"]) .unwrap() .unwrap() .review .is_some() ); assert!( parse(&[ "--review", "delete", "1", "2", "--repo", ".", "--json", "--no-config" ]) .unwrap() .unwrap() .review .is_some() ); for args in [ vec!["--review"], vec!["--review", "show"], vec!["--review", "show", "0"], vec!["--review", "show", "-1"], vec!["--review", "show", "abc"], vec!["--review", "delete"], vec!["--review", "delete", "1"], vec!["--review", "delete", "0", "1"], vec!["--review", "delete", "9223372036854775808", "1"], vec!["--review", "delete", "1", "0"], vec!["--review", "delete", "1", "-1"], vec!["--review", "delete", "1", "abc"], vec!["--review", "delete", "1", "18446744073709551616"], vec!["--review", "delete", "1", "2", "--all"], vec!["--review", "delete", "1", "2", "3"], vec!["--review", "list", "--all"], vec!["--review", "list", "--repo"], vec!["--review", "list", "--repo", ".", "--repo", "."], vec!["--review", "list", "extra"], vec!["--review", "list", "--", "extra"], vec!["--review", "list", "--config", "x", "--no-config"], ] { assert!(parse(&args).is_err(), "{args:?}"); } }