use super::*; #[test] fn parses_server_selection_and_repository_scope() { let args = Args::parse( ["--server", "work", "repo", "show"].map(str::to_owned), None, ) .unwrap(); let repository = RepositoryScope::parse("alice/project").unwrap(); assert_eq!(args.server.as_deref(), Some("work")); assert_eq!(args.command, ["repo", "show"]); assert_eq!( (repository.owner.as_str(), repository.repository.as_str()), ("alice", "project") ); assert_eq!(requested_help(&[]).unwrap(), Some(ROOT_HELP)); assert_eq!(requested_help(&["repo".into()]).unwrap(), Some(REPO_HELP)); assert!( requested_help(&["repo".into(), "show".into(), "--help".into()]) .unwrap() .unwrap() .starts_with("Usage: gotcha repo show") ); assert_eq!( login_command(&["auth".into(), "login".into(), "code.example".into()]) .unwrap() .unwrap() .1, Provider::Gitea ); assert_eq!( login_command(&[ "auth".into(), "login".into(), "code.example".into(), "--provider".into(), "forgejo".into(), ]) .unwrap() .unwrap() .1, Provider::Forgejo ); } #[test] fn formats_bounded_aligned_tables_without_tabs() { let table = format_table( &[("INDEX", 8), ("STATE", 10), ("TITLE", 60)], &[vec![ "22".into(), "open".into(), "A deliberately long issue title that must be shortened".into(), ]], 40, ); assert!(!table.contains('\t')); assert!(table.contains('…')); assert_eq!(table.lines().count(), 3); assert!(table.lines().all(|line| line.chars().count() <= 40)); assert!(table.lines().next().unwrap().starts_with("INDEX STATE")); }