Skip to content

Commit

Permalink
send-email: do not barf when Term::ReadLine does not like your terminal
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Jul 4, 2006
1 parent 624314f commit 280242d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
18 changes: 17 additions & 1 deletion git-send-email.perl
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,17 @@
use Getopt::Long;
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...
$ENV{LC_ALL} = 'C';
use POSIX qw/strftime/;
Expand All @@ -46,7 +57,12 @@
# Example reply to:
#$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
# needing, first, from the command line:
Expand Down
11 changes: 7 additions & 4 deletions t/t9001-send-email.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,13 @@ test_expect_success \
git add fake.sendmail
GIT_AUTHOR_NAME="A" git commit -a -m "Second."'

test_expect_success \
'Extract patches and send' \
'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 'Extract patches' '
patches=`git format-patch -n HEAD^1`
'

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
!nobody@example.com!
Expand Down

0 comments on commit 280242d

Please sign in to comment.