Browse Source

Merge branch 'tr/send-email-refuse-sending-unedited-cover-letter'

* tr/send-email-refuse-sending-unedited-cover-letter:
  send-email: Refuse to send cover-letter template subject
maint
Junio C Hamano 14 years ago
parent
commit
b886656403
  1. 13
      git-send-email.perl
  2. 36
      t/t9001-send-email.sh

13
git-send-email.perl

@ -86,6 +86,7 @@ git send-email [options] <file | directory | rev-list options > @@ -86,6 +86,7 @@ git send-email [options] <file | directory | rev-list options >
--[no-]validate * Perform patch sanity checks. Default on.
--[no-]format-patch * understand any non optional arguments as
`git format-patch` ones.
--force * Send even if safety checks would prevent it.

EOT
exit(1);
@ -163,6 +164,7 @@ if ($@) { @@ -163,6 +164,7 @@ if ($@) {
my ($quiet, $dry_run) = (0, 0);
my $format_patch;
my $compose_filename;
my $force = 0;

# Handle interactive edition of files.
my $multiedit;
@ -302,6 +304,7 @@ my $rc = GetOptions("sender|from=s" => \$sender, @@ -302,6 +304,7 @@ my $rc = GetOptions("sender|from=s" => \$sender,
"validate!" => \$validate,
"format-patch!" => \$format_patch,
"8bit-encoding=s" => \$auto_8bit_encoding,
"force" => \$force,
);

unless ($rc) {
@ -703,6 +706,16 @@ if (!defined $auto_8bit_encoding && scalar %broken_encoding) { @@ -703,6 +706,16 @@ if (!defined $auto_8bit_encoding && scalar %broken_encoding) {
default => "UTF-8");
}

if (!$force) {
for my $f (@files) {
if (get_patch_subject($f) =~ /\*\*\* SUBJECT HERE \*\*\*/) {
die "Refusing to send because the patch\n\t$f\n"
. "has the template subject '*** SUBJECT HERE ***'. "
. "Pass --force if you really want to send.\n";
}
}
}

my $prompting = 0;
if (!defined $sender) {
$sender = $repoauthor || $repocommitter || '';

36
t/t9001-send-email.sh

@ -1032,4 +1032,40 @@ test_expect_success $PREREQ '--8bit-encoding also treats subject' ' @@ -1032,4 +1032,40 @@ test_expect_success $PREREQ '--8bit-encoding also treats subject' '
test_cmp expected actual
'

# Note that the patches in this test are deliberately out of order; we
# want to make sure it works even if the cover-letter is not in the
# first mail.
test_expect_success 'refusing to send cover letter template' '
clean_fake_sendmail &&
rm -fr outdir &&
git format-patch --cover-letter -2 -o outdir &&
test_must_fail git send-email \
--from="Example <nobody@example.com>" \
--to=nobody@example.com \
--smtp-server="$(pwd)/fake.sendmail" \
outdir/0002-*.patch \
outdir/0000-*.patch \
outdir/0001-*.patch \
2>errors >out &&
grep "SUBJECT HERE" errors &&
test -z "$(ls msgtxt*)"
'

test_expect_success '--force sends cover letter template anyway' '
clean_fake_sendmail &&
rm -fr outdir &&
git format-patch --cover-letter -2 -o outdir &&
git send-email \
--force \
--from="Example <nobody@example.com>" \
--to=nobody@example.com \
--smtp-server="$(pwd)/fake.sendmail" \
outdir/0002-*.patch \
outdir/0000-*.patch \
outdir/0001-*.patch \
2>errors >out &&
! grep "SUBJECT HERE" errors &&
test -n "$(ls msgtxt*)"
'

test_done

Loading…
Cancel
Save