From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 3E0A31F487 for ; Sat, 11 Nov 2023 09:05:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1699693500; bh=tibvSMlcXzL1rRBTghiRnILTToX+JUUwEG/bonuSTW0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=n3tnloWoIYfZydbft62OhBYondkOSyJEmADoHIaJbDc2dnTKNB79KACygqeoME3KN tx/b3Ukw7392IzQpgRdCebiNqMtoWKtDDJ1VR4be0f76+bICPr5nT19k7jc9isMpOS n0fDG5F2wBj0UYL4T5SmSGvKUjSfVCvwATsq2VEk= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 3/4] mda: fix and test some usage problems Date: Sat, 11 Nov 2023 09:04:58 +0000 Message-Id: <20231111090459.605791-4-e@80x24.org> In-Reply-To: <20231111090459.605791-1-e@80x24.org> References: <20231111090459.605791-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: -mda now honors `--help' properly and invocations missing ORIGINAL_RECIPIENT now fail with EX_NOUSER. Helped-by: Leah Neukirchen Link: https://public-inbox.org/meta/87msvlguqu.fsf@vuxu.org/ --- script/public-inbox-mda | 7 ++++++- t/mda.t | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/script/public-inbox-mda b/script/public-inbox-mda index 04fd8aad..b2e0908d 100755 --- a/script/public-inbox-mda +++ b/script/public-inbox-mda @@ -20,6 +20,10 @@ use PublicInbox::Import; local $PublicInbox::Import::DROP_UNIQUE_UNSUB; # does this need a CLI switch? GetOptions('precheck!' => \$precheck, 'help|h' => \$show_help) or do { print STDERR $help; exit 1 }; +if ($show_help) { + print $help; + exit; +} my $do_exit = sub { my ($code) = shift; @@ -59,7 +63,8 @@ if (defined $recipient) { if (!scalar(@$dests)) { $dests = PublicInbox::MDA->inboxes_for_list_id($cfg, $eml); if (!scalar(@$dests) && !defined($recipient)) { - die "ORIGINAL_RECIPIENT not defined in ENV\n"; + warn "ORIGINAL_RECIPIENT not defined in ENV\n"; + $do_exit->(67); # EX_NOUSER } scalar(@$dests) or $do_exit->(67); # EX_NOUSER 5.1.1 user unknown } diff --git a/t/mda.t b/t/mda.t index 5144f3ca..1d9e237b 100644 --- a/t/mda.t +++ b/t/mda.t @@ -82,6 +82,13 @@ die $@ if $@; local $ENV{PI_EMERGENCY} = $faildir; local $ENV{HOME} = $home; local $ENV{ORIGINAL_RECIPIENT} = $addr; + ok(run_script([qw(-mda --help)], undef, + { 1 => \my $out, 2 => \my $err }), '-mda --help'); + like $out, qr/usage:/, 'usage shown w/ --help'; + ok(!run_script([qw(-mda --bogus)], undef, + { 1 => \$out, 2 => \$err }), '-mda --bogus fails'); + like $err, qr/usage:/, 'usage shown on bogus switch'; + my $in = < To: You @@ -91,6 +98,17 @@ Subject: hihi Date: Thu, 01 Jan 1970 00:00:00 +0000 EOF + { + local $ENV{PATH} = $main_path; + ok(!run_script(['-mda'], { ORIGINAL_RECIPIENT => undef }, + { 0 => \$in, 2 => \$err }), + 'missing ORIGINAL_RECIPIENT fails'); + is($? >> 8, 67, 'got EX_NOUSER'); + like $err, qr/\bORIGINAL_RECIPIENT\b/, + 'ORIGINAL_RECIPIENT noted in stderr'; + is unlink(glob("$faildir/*/*")), 1, 'unlinked failed message'; + } + # ensure successful message delivery { local $ENV{PATH} = $main_path;