From 77430f9b0c34932ca5a6242d8ab3f23cb86ff2e3 Mon Sep 17 00:00:00 2001 From: quambene Date: Thu, 2 May 2024 23:45:26 +0200 Subject: [PATCH 1/6] Improve tests --- src/lib.rs | 221 +++++++++++++++++++++++++++++------------------------ 1 file changed, 122 insertions(+), 99 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 642f547..87925b9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -21,18 +21,16 @@ pub fn app() -> Command { Command::new(crate_name!()) .version(crate_version!()) .arg( - clap::Arg::new(arg::VERBOSE) + Arg::new(arg::VERBOSE) .long(arg::VERBOSE) + .num_args(0) .required(false) .help("Shows what is going on"), ) .subcommand( Command::new(cmd::INIT) .about("Create template files in current directory") - .args(&[Arg::new(arg::VERBOSE) - .long(arg::VERBOSE) - .required(false) - .help("Shows what is going on for subcommand")]), + .args(&[verbose()]), ) .subcommand( Command::new(cmd::CONNECT) @@ -43,10 +41,7 @@ pub fn app() -> Command { .value_parser([val::SMTP, val::AWS]) .default_value(val::SMTP) .help("Check connection to SMTP server."), - Arg::new(arg::VERBOSE) - .long(arg::VERBOSE) - .required(false) - .help("Shows what is going on for subcommand"), + verbose(), ]), ) .subcommand( @@ -93,16 +88,8 @@ pub fn app() -> Command { .required(false) .required_if_eq_any([(arg::FILE_TYPE, "jpg"), (arg::FILE_TYPE, "png")]) .help("Specifies the column used for the image name"), - Arg::new(arg::DISPLAY) - .long(arg::DISPLAY) - .num_args(0) - .required(false) - .help("Print query result to terminal"), - Arg::new(arg::VERBOSE) - .long(arg::VERBOSE) - .num_args(1) - .required(false) - .help("Shows what is going on for subcommand"), + display().help("Print query result to terminal"), + verbose(), ]), ) .subcommand( @@ -113,11 +100,7 @@ pub fn app() -> Command { .index(1) .required(true) .help("Takes a sql query"), - Arg::new(arg::VERBOSE) - .long(arg::VERBOSE) - .num_args(0) - .required(false) - .help("Shows what is going on for subcommand"), + verbose(), ]), ) .subcommand( @@ -125,16 +108,8 @@ pub fn app() -> Command { .about("Read csv file and display results in terminal") .args(&[ Arg::new(cmd::READ).num_args(1).required(true), - Arg::new(arg::VERBOSE) - .long(arg::VERBOSE) - .num_args(0) - .required(false) - .help("Shows what is going on for subcommand"), - Arg::new(arg::DISPLAY) - .long(arg::DISPLAY) - .num_args(0) - .required(false) - .help("Display csv file in terminal"), + verbose(), + display().help("Display csv file in terminal"), ]), ) .subcommand( @@ -202,32 +177,11 @@ pub fn app() -> Command { .num_args(1) .required(false) .help("Path of attachment"), - Arg::new(arg::ARCHIVE) - .long(arg::ARCHIVE) - .num_args(0) - .required(false) - .help("Archive sent emails"), - Arg::new(arg::ARCHIVE_DIR) - .long(arg::ARCHIVE_DIR) - .num_args(1) - .required(false) - .default_value("./sent_emails") - .help("Path of sent emails"), - Arg::new(arg::DISPLAY) - .long(arg::DISPLAY) - .num_args(0) - .required(false) - .help("Display email in terminal"), - Arg::new(arg::DRY_RUN) - .long(arg::DRY_RUN) - .num_args(0) - .required(false) - .help("Prepare email but do not send email"), - Arg::new(arg::ASSUME_YES) - .long(arg::ASSUME_YES) - .num_args(0) - .required(false) - .help("Send email without confirmation"), + archive(), + archive_dir(), + display().help("Display email in terminal"), + dry_run().help("Prepare email but do not send email"), + assume_yes().help("Send email without confirmation"), Arg::new(arg::CONNECTION) .long(arg::CONNECTION) .num_args(1) @@ -235,11 +189,7 @@ pub fn app() -> Command { .value_parser([val::SMTP, val::AWS]) .default_value(val::SMTP) .help("Send emails via SMTP or AWS API"), - Arg::new(arg::VERBOSE) - .long(arg::VERBOSE) - .num_args(0) - .required(false) - .help("Shows what is going on for subcommand"), + verbose(), ]), ) .subcommand( @@ -314,17 +264,8 @@ pub fn app() -> Command { .num_args(1) .required(false) .help("Path of attachment"), - Arg::new(arg::ARCHIVE) - .long(arg::ARCHIVE) - .num_args(0) - .required(false) - .help("Archive sent emails"), - Arg::new(arg::ARCHIVE_DIR) - .long(arg::ARCHIVE_DIR) - .num_args(1) - .required(false) - .default_value("./sent_emails") - .help("Path of sent emails"), + archive(), + archive_dir(), Arg::new(arg::RECEIVER_COLUMN) .long(arg::RECEIVER_COLUMN) .num_args(1) @@ -336,21 +277,9 @@ pub fn app() -> Command { .num_args(0..100) .required(false) .help("Personalizes email for variables defined in the message template"), - Arg::new(arg::DISPLAY) - .long(arg::DISPLAY) - .num_args(0) - .required(false) - .help("Print emails to terminal"), - Arg::new(arg::DRY_RUN) - .long(arg::DRY_RUN) - .num_args(0) - .required(false) - .help("Prepare emails but do not send emails"), - Arg::new(arg::ASSUME_YES) - .long(arg::ASSUME_YES) - .num_args(0) - .required(false) - .help("Send emails without confirmation"), + display().help("Print emails to terminal"), + dry_run().help("Prepare emails but do not send emails"), + assume_yes().help("Send emails without confirmation"), Arg::new(arg::SSH_TUNNEL) .long(arg::SSH_TUNNEL) .value_name("port") @@ -364,15 +293,57 @@ pub fn app() -> Command { .value_parser([val::SMTP, val::AWS]) .default_value(val::SMTP) .help("Send emails via SMTP or AWS API"), - Arg::new(arg::VERBOSE) - .long(arg::VERBOSE) - .num_args(0) - .required(false) - .help("Shows what is going on for subcommand"), + verbose(), ]), ) } +fn verbose() -> Arg { + Arg::new(arg::VERBOSE) + .long(arg::VERBOSE) + .num_args(0) + .required(false) + .help("Shows what is going on for subcommand") +} + +fn display() -> Arg { + Arg::new(arg::DISPLAY) + .long(arg::DISPLAY) + .num_args(0) + .required(false) +} + +fn dry_run() -> Arg { + Arg::new(arg::DRY_RUN) + .long(arg::DRY_RUN) + .num_args(0) + .required(false) +} + +fn assume_yes() -> Arg { + Arg::new(arg::ASSUME_YES) + .long(arg::ASSUME_YES) + .num_args(0) + .required(false) +} + +fn archive() -> Arg { + Arg::new(arg::ARCHIVE) + .long(arg::ARCHIVE) + .num_args(0) + .required(false) + .help("Archive sent emails") +} + +fn archive_dir() -> Arg { + Arg::new(arg::ARCHIVE_DIR) + .long(arg::ARCHIVE_DIR) + .num_args(1) + .required(false) + .default_value("./sent_emails") + .help("Path of sent emails") +} + #[cfg(test)] mod tests { use super::*; @@ -391,8 +362,26 @@ mod tests { ]; let app = app(); let matches = app.get_matches_from(args); - let subcommand_matches = matches.subcommand_matches("send"); + let subcommand_matches = matches.subcommand_matches(cmd::SEND); + dbg!(&subcommand_matches); assert!(subcommand_matches.is_some()); + + let subcommand_matches = subcommand_matches.unwrap(); + assert!(subcommand_matches.contains_id(arg::SUBJECT)); + assert!(subcommand_matches.contains_id(arg::CONTENT)); + assert!(!subcommand_matches.contains_id(arg::ATTACHMENT)); + assert!(!subcommand_matches.get_flag(arg::VERBOSE)); + assert!(!subcommand_matches.get_flag(arg::DRY_RUN)); + assert!(!subcommand_matches.get_flag(arg::DISPLAY)); + assert!(!subcommand_matches.get_flag(arg::ASSUME_YES)); + assert!(!subcommand_matches.get_flag(arg::ARCHIVE)); + assert!(subcommand_matches.contains_id(arg::ARCHIVE_DIR)); + assert_eq!( + subcommand_matches + .get_one::(arg::ARCHIVE_DIR) + .unwrap(), + "./sent_emails" + ); } #[test] @@ -411,8 +400,26 @@ mod tests { ]; let app = app(); let matches = app.get_matches_from(args); - let subcommand_matches = matches.subcommand_matches("send"); + let subcommand_matches = matches.subcommand_matches(cmd::SEND); assert!(subcommand_matches.is_some()); + + let subcommand_matches = subcommand_matches.unwrap(); + assert!(subcommand_matches.contains_id(arg::SUBJECT)); + assert!(subcommand_matches.contains_id(arg::TEXT_FILE)); + assert!(subcommand_matches.contains_id(arg::HTML_FILE)); + assert!(!subcommand_matches.contains_id(arg::ATTACHMENT)); + assert!(!subcommand_matches.get_flag(arg::VERBOSE)); + assert!(!subcommand_matches.get_flag(arg::DRY_RUN)); + assert!(!subcommand_matches.get_flag(arg::DISPLAY)); + assert!(!subcommand_matches.get_flag(arg::ASSUME_YES)); + assert!(!subcommand_matches.get_flag(arg::ARCHIVE)); + assert!(subcommand_matches.contains_id(arg::ARCHIVE_DIR)); + assert_eq!( + subcommand_matches + .get_one::(arg::ARCHIVE_DIR) + .unwrap(), + "./sent_emails" + ); } #[test] @@ -427,7 +434,23 @@ mod tests { ]; let app = app(); let matches = app.get_matches_from(args); - let subcommand_matches = matches.subcommand_matches("send"); + let subcommand_matches = matches.subcommand_matches(cmd::SEND); assert!(subcommand_matches.is_some()); + + let subcommand_matches = subcommand_matches.unwrap(); + assert!(subcommand_matches.contains_id(arg::MESSAGE_FILE)); + assert!(!subcommand_matches.contains_id(arg::ATTACHMENT)); + assert!(!subcommand_matches.get_flag(arg::VERBOSE)); + assert!(!subcommand_matches.get_flag(arg::DRY_RUN)); + assert!(!subcommand_matches.get_flag(arg::DISPLAY)); + assert!(!subcommand_matches.get_flag(arg::ASSUME_YES)); + assert!(!subcommand_matches.get_flag(arg::ARCHIVE)); + assert!(subcommand_matches.contains_id(arg::ARCHIVE_DIR)); + assert_eq!( + subcommand_matches + .get_one::(arg::ARCHIVE_DIR) + .unwrap(), + "./sent_emails" + ); } } From b8de1ee51020c41ada790d1a7ee72dce09cbd4ec Mon Sep 17 00:00:00 2001 From: quambene Date: Thu, 2 May 2024 23:46:14 +0200 Subject: [PATCH 2/6] Update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 925333b..7eddec7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ - changed - removed +### v0.4.2 (2024-05-03) + +- changed + - Fix flags + ### v0.4.1 (2024-04-06) - added From fed6cf09625705f329d2d82b838ac15c6fbafe5e Mon Sep 17 00:00:00 2001 From: quambene Date: Thu, 2 May 2024 23:46:42 +0200 Subject: [PATCH 3/6] Update version --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d1625b7..9160462 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1699,7 +1699,7 @@ dependencies = [ [[package]] name = "pigeon-rs" -version = "0.4.1" +version = "0.4.2" dependencies = [ "anyhow", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index 37a6cfa..1626e3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pigeon-rs" -version = "0.4.1" +version = "0.4.2" authors = ["quambene "] description = "Command line tool for cheap and efficient email automation" edition = "2021" From c260fd3b753a7eb0f412b2dd9574f7368defd239 Mon Sep 17 00:00:00 2001 From: quambene Date: Thu, 2 May 2024 23:54:15 +0200 Subject: [PATCH 4/6] Fix flags --- src/cmd/connect.rs | 2 +- src/cmd/init.rs | 2 +- src/cmd/query.rs | 4 ++-- src/cmd/read.rs | 4 ++-- src/cmd/send.rs | 12 ++++++------ src/cmd/send_bulk.rs | 10 +++++----- src/cmd/simple_query.rs | 2 +- src/email_builder/message.rs | 2 +- src/email_builder/receiver.rs | 4 ++-- src/email_provider/aws.rs | 2 +- src/email_transmission/client.rs | 2 +- src/main.rs | 2 +- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/cmd/connect.rs b/src/cmd/connect.rs index db0de80..6c2993a 100644 --- a/src/cmd/connect.rs +++ b/src/cmd/connect.rs @@ -8,7 +8,7 @@ use anyhow::{anyhow, Result}; use clap::ArgMatches; pub fn connect(matches: &ArgMatches) -> Result<(), anyhow::Error> { - if matches.contains_id(arg::VERBOSE) { + if matches.get_flag(arg::VERBOSE) { println!("matches: {:#?}", matches); } diff --git a/src/cmd/init.rs b/src/cmd/init.rs index 0dc8656..5c60593 100644 --- a/src/cmd/init.rs +++ b/src/cmd/init.rs @@ -4,7 +4,7 @@ use clap::ArgMatches; use std::{env, io}; pub fn init(matches: &ArgMatches) -> Result<(), anyhow::Error> { - if matches.contains_id(arg::VERBOSE) { + if matches.get_flag(arg::VERBOSE) { println!("matches: {:#?}", matches); } diff --git a/src/cmd/query.rs b/src/cmd/query.rs index a52c539..b21d5ff 100644 --- a/src/cmd/query.rs +++ b/src/cmd/query.rs @@ -8,7 +8,7 @@ use clap::ArgMatches; use std::path::Path; pub fn query(matches: &ArgMatches) -> Result<(), anyhow::Error> { - if matches.contains_id(arg::VERBOSE) { + if matches.get_flag(arg::VERBOSE) { println!("matches: {:#?}", matches); } @@ -23,7 +23,7 @@ pub fn query(matches: &ArgMatches) -> Result<(), anyhow::Error> { let connection = DbConnection::new(&conn_vars, ssh_tunnel)?; let mut df_query = sources::query_postgres(&connection, query)?; - if matches.contains_id(arg::DISPLAY) { + if matches.get_flag(arg::DISPLAY) { println!("Display query result: {}", df_query); } diff --git a/src/cmd/read.rs b/src/cmd/read.rs index 0713a96..a78b381 100644 --- a/src/cmd/read.rs +++ b/src/cmd/read.rs @@ -4,7 +4,7 @@ use clap::ArgMatches; use std::path::PathBuf; pub fn read(matches: &ArgMatches) -> Result<(), anyhow::Error> { - if matches.contains_id(arg::VERBOSE) { + if matches.get_flag(arg::VERBOSE) { println!("matches: {:#?}", matches); } @@ -14,7 +14,7 @@ pub fn read(matches: &ArgMatches) -> Result<(), anyhow::Error> { let path = PathBuf::from(csv_file); let csv = sources::read_csv(&path)?; - if matches.contains_id(arg::DISPLAY) { + if matches.get_flag(arg::DISPLAY) { println!("Display csv file: {}", csv); } diff --git a/src/cmd/send.rs b/src/cmd/send.rs index 323ebd4..04462ea 100644 --- a/src/cmd/send.rs +++ b/src/cmd/send.rs @@ -11,13 +11,13 @@ use clap::ArgMatches; use std::{io, path::Path, time::SystemTime}; pub fn send(matches: &ArgMatches) -> Result<(), anyhow::Error> { - if matches.contains_id(arg::VERBOSE) { + if matches.get_flag(arg::VERBOSE) { println!("matches: {:#?}", matches); } let now = SystemTime::now(); - let dry_run = matches.contains_id(arg::DRY_RUN); - let is_archived = matches.contains_id(arg::ARCHIVE); + let dry_run = matches.get_flag(arg::DRY_RUN); + let is_archived = matches.get_flag(arg::ARCHIVE); let archive_dir = Path::new(arg::value(arg::ARCHIVE_DIR, matches)?); let sender = Sender(arg::value(arg::SENDER, matches)?); let receiver = Receiver(arg::value(arg::RECEIVER, matches)?); @@ -26,7 +26,7 @@ pub fn send(matches: &ArgMatches) -> Result<(), anyhow::Error> { let mime_format = MimeFormat::new(sender, receiver, &message, attachment, now)?; let email = Email::new(sender, receiver, &message, &mime_format)?; - if matches.contains_id(arg::DISPLAY) { + if matches.get_flag(arg::DISPLAY) { println!("Display email: {:#?}", email); } @@ -40,7 +40,7 @@ pub fn send(matches: &ArgMatches) -> Result<(), anyhow::Error> { println!("Sending email to 1 receiver ..."); - if matches.contains_id(arg::ASSUME_YES) { + if matches.get_flag(arg::ASSUME_YES) { let sent_email = client.send(&email)?; sent_email.display_status(); @@ -62,7 +62,7 @@ pub fn send(matches: &ArgMatches) -> Result<(), anyhow::Error> { } } - if matches.contains_id(arg::DRY_RUN) { + if matches.get_flag(arg::DRY_RUN) { println!("Email sent (dry run)"); } else { println!("Email sent"); diff --git a/src/cmd/send_bulk.rs b/src/cmd/send_bulk.rs index 42953fd..24faeb7 100644 --- a/src/cmd/send_bulk.rs +++ b/src/cmd/send_bulk.rs @@ -11,12 +11,12 @@ use clap::ArgMatches; use std::{io, path::Path}; pub fn send_bulk(matches: &ArgMatches) -> Result<(), anyhow::Error> { - if matches.contains_id(arg::VERBOSE) { + if matches.get_flag(arg::VERBOSE) { println!("matches: {:#?}", matches); } - let dry_run = matches.contains_id(arg::DRY_RUN); - let is_archived = matches.contains_id(arg::ARCHIVE); + let dry_run = matches.get_flag(arg::DRY_RUN); + let is_archived = matches.get_flag(arg::ARCHIVE); let archive_dir = Path::new(arg::value(arg::ARCHIVE_DIR, matches)?); let sender = Sender(arg::value(arg::SENDER, matches)?); let receivers = BulkReceiver::from_args(matches)?; @@ -44,7 +44,7 @@ pub fn send_bulk(matches: &ArgMatches) -> Result<(), anyhow::Error> { let client = Client::from_args(matches)?; let eml_formatter = EmlFormatter::new(archive_dir)?; - if matches.contains_id(arg::DISPLAY) { + if matches.get_flag(arg::DISPLAY) { println!("Display emails: {:#?}", bulk_email); } @@ -52,7 +52,7 @@ pub fn send_bulk(matches: &ArgMatches) -> Result<(), anyhow::Error> { println!("Dry run: {}", format_green("activated")); } - if matches.contains_id(arg::ASSUME_YES) { + if matches.get_flag(arg::ASSUME_YES) { process_emails( &client, &eml_formatter, diff --git a/src/cmd/simple_query.rs b/src/cmd/simple_query.rs index 0a1b6b4..9670c31 100644 --- a/src/cmd/simple_query.rs +++ b/src/cmd/simple_query.rs @@ -4,7 +4,7 @@ use clap::ArgMatches; use postgres::{Client, NoTls, SimpleQueryMessage}; pub fn simple_query(matches: &ArgMatches) -> Result<(), anyhow::Error> { - if matches.contains_id(arg::VERBOSE) { + if matches.get_flag(arg::VERBOSE) { println!("matches: {:#?}", matches); } diff --git a/src/email_builder/message.rs b/src/email_builder/message.rs index 2fce0bc..a33825a 100644 --- a/src/email_builder/message.rs +++ b/src/email_builder/message.rs @@ -63,7 +63,7 @@ impl Message { let message_path = Path::new(message_file); let message = Message::read_yaml(message_path)?; - if matches.contains_id(arg::DISPLAY) { + if matches.get_flag(arg::DISPLAY) { println!("Display message file: {:#?}", message); } diff --git a/src/email_builder/receiver.rs b/src/email_builder/receiver.rs index 0dabe68..4941555 100644 --- a/src/email_builder/receiver.rs +++ b/src/email_builder/receiver.rs @@ -46,7 +46,7 @@ impl BulkReceiver { let connection = DbConnection::new(&conn_vars, ssh_tunnel)?; let df_receiver = sources::query_postgres(&connection, query)?; - if matches.contains_id(arg::DISPLAY) { + if matches.get_flag(arg::DISPLAY) { println!("Display query result: {}", df_receiver); } @@ -58,7 +58,7 @@ impl BulkReceiver { (None, Some(path)) => { let df_receiver = sources::read_csv(path)?; - if matches.contains_id(arg::DISPLAY) { + if matches.get_flag(arg::DISPLAY) { println!("Display csv file: {}", df_receiver); } diff --git a/src/email_provider/aws.rs b/src/email_provider/aws.rs index 6708047..e7b63e9 100644 --- a/src/email_provider/aws.rs +++ b/src/email_provider/aws.rs @@ -29,7 +29,7 @@ impl AwsSesClient { let region_name = region.name().to_string(); // Check if AWS access keys are set in environment - if matches.contains_id(arg::DRY_RUN) { + if matches.get_flag(arg::DRY_RUN) { AwsSesClient::get_credentials(&provider).context( "Missing environment variable 'AWS_ACCESS_KEY_ID' and/or 'AWS_SECRET_ACCESS_KEY'", )?; diff --git a/src/email_transmission/client.rs b/src/email_transmission/client.rs index 81cbfee..5b5bdc2 100644 --- a/src/email_transmission/client.rs +++ b/src/email_transmission/client.rs @@ -42,7 +42,7 @@ impl<'a> Client<'a> { } pub fn from_args(matches: &ArgMatches) -> Result { - if matches.contains_id(arg::DRY_RUN) { + if matches.get_flag(arg::DRY_RUN) { let client = MockClient; return Ok(Client::new(TransmissionType::Dry, Box::new(client))); } diff --git a/src/main.rs b/src/main.rs index 609f636..d0000e6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,7 +5,7 @@ fn main() -> Result<(), anyhow::Error> { let app = app(); let matches = app.get_matches(); - if matches.contains_id(arg::VERBOSE) { + if matches.get_flag(arg::VERBOSE) { println!("matches: {:#?}", matches); } From f9a183e084247c981ee6e16095e7ac74de92d3b0 Mon Sep 17 00:00:00 2001 From: quambene Date: Fri, 3 May 2024 00:14:43 +0200 Subject: [PATCH 5/6] Fix test --- tests/cmd/test_send.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/cmd/test_send.rs b/tests/cmd/test_send.rs index c55e219..060d0fc 100644 --- a/tests/cmd/test_send.rs +++ b/tests/cmd/test_send.rs @@ -42,8 +42,13 @@ fn test_send_smtp() { "smtp", ]); cmd.assert().success().stdout( - str::contains("Reading csv file './receiver.csv' ...") - .and(str::contains("Display csv file:").and(str::contains("Display emails:"))), + str::contains("Reading message file './message.yaml' ...") + .and(str::contains("Display message file:")) + .and(str::contains("Display email:")) + .and(str::contains("Sending email to 1 receiver ...")) + .and(str::contains("Email sent")) + .and(str::contains("Archiving")) + .and(str::contains("Dry run:").not()), ); assert!(temp_path.join("my-sent-emails").exists()); @@ -88,8 +93,13 @@ fn test_send_aws() { "aws", ]); cmd.assert().success().stdout( - str::contains("Reading csv file './receiver.csv' ...") - .and(str::contains("Display csv file:").and(str::contains("Display email:"))), + str::contains("Reading message file './message.yaml' ...") + .and(str::contains("Display message file:")) + .and(str::contains("Display email:")) + .and(str::contains("Sending email to 1 receiver ...")) + .and(str::contains("Email sent")) + .and(str::contains("Archiving")) + .and(str::contains("Dry run:").not()), ); assert!(temp_path.join("my-sent-emails").exists()); From 88cdeeeade563a2bb7e2cfb949cb4891ba77c780 Mon Sep 17 00:00:00 2001 From: quambene Date: Fri, 3 May 2024 00:36:52 +0200 Subject: [PATCH 6/6] Fix test --- src/cmd/query.rs | 2 +- tests/cmd/test_query.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cmd/query.rs b/src/cmd/query.rs index b21d5ff..ff789e8 100644 --- a/src/cmd/query.rs +++ b/src/cmd/query.rs @@ -27,7 +27,7 @@ pub fn query(matches: &ArgMatches) -> Result<(), anyhow::Error> { println!("Display query result: {}", df_query); } - if matches.contains_id(arg::SAVE) { + if matches.get_flag(arg::SAVE) { let save_dir = Path::new(arg::value(arg::SAVE_DIR, matches)?); // If argument 'FILE_TYPE' is not present the default value 'csv' will be used diff --git a/tests/cmd/test_query.rs b/tests/cmd/test_query.rs index 149bab2..266de16 100644 --- a/tests/cmd/test_query.rs +++ b/tests/cmd/test_query.rs @@ -80,6 +80,7 @@ fn test_query_save_png() { cmd.args([ "query", test_query, + "--display", "--save", "--save-dir", save_dir,