send-email: do not barf when Term::ReadLine does not like your terminal
As long as we do not need to readline from the terminal, we should not barf when starting up the program. Without this patch, t9001 test on Cygwin occasionally died with the following error message: Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work. The COLUMNS and LINES environment variables didn't work. The resize program didn't work. at /usr/lib/perl5/vendor_perl/5.8/cygwin/Term/ReadKey.pm line 362. Compilation failed in require at /usr/lib/perl5/vendor_perl/5.8/Term/ReadLine/Perl.pm line 58. Acked-by: Ryan Anderson <ryan@michonline.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
624314fda7
commit
280242d1cc
@ -22,6 +22,17 @@ use Term::ReadLine;
|
|||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
|
|
||||||
|
package FakeTerm;
|
||||||
|
sub new {
|
||||||
|
my ($class, $reason) = @_;
|
||||||
|
return bless \$reason, shift;
|
||||||
|
}
|
||||||
|
sub readline {
|
||||||
|
my $self = shift;
|
||||||
|
die "Cannot use readline on FakeTerm: $$self";
|
||||||
|
}
|
||||||
|
package main;
|
||||||
|
|
||||||
# most mail servers generate the Date: header, but not all...
|
# most mail servers generate the Date: header, but not all...
|
||||||
$ENV{LC_ALL} = 'C';
|
$ENV{LC_ALL} = 'C';
|
||||||
use POSIX qw/strftime/;
|
use POSIX qw/strftime/;
|
||||||
@ -46,7 +57,12 @@ my $smtp_server;
|
|||||||
# Example reply to:
|
# Example reply to:
|
||||||
#$initial_reply_to = ''; #<20050203173208.GA23964@foobar.com>';
|
#$initial_reply_to = ''; #<20050203173208.GA23964@foobar.com>';
|
||||||
|
|
||||||
my $term = new Term::ReadLine 'git-send-email';
|
my $term = eval {
|
||||||
|
new Term::ReadLine 'git-send-email';
|
||||||
|
};
|
||||||
|
if ($@) {
|
||||||
|
$term = new FakeTerm "$@: going non-interactive";
|
||||||
|
}
|
||||||
|
|
||||||
# Begin by accumulating all the variables (defined above), that we will end up
|
# Begin by accumulating all the variables (defined above), that we will end up
|
||||||
# needing, first, from the command line:
|
# needing, first, from the command line:
|
||||||
|
@ -25,10 +25,13 @@ test_expect_success \
|
|||||||
git add fake.sendmail
|
git add fake.sendmail
|
||||||
GIT_AUTHOR_NAME="A" git commit -a -m "Second."'
|
GIT_AUTHOR_NAME="A" git commit -a -m "Second."'
|
||||||
|
|
||||||
test_expect_success \
|
test_expect_success 'Extract patches' '
|
||||||
'Extract patches and send' \
|
patches=`git format-patch -n HEAD^1`
|
||||||
'git format-patch -n HEAD^1
|
'
|
||||||
git send-email -from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" ./0001*txt'
|
|
||||||
|
test_expect_success 'Send patches' '
|
||||||
|
git send-email -from="Example <nobody@example.com>" --to=nobody@example.com --smtp-server="$(pwd)/fake.sendmail" $patches 2>errors
|
||||||
|
'
|
||||||
|
|
||||||
cat >expected <<\EOF
|
cat >expected <<\EOF
|
||||||
!nobody@example.com!
|
!nobody@example.com!
|
||||||
|
Loading…
Reference in New Issue
Block a user