Matthieu Moy <git@xxxxxxxxxxxxxxx> writes: > We now use Mail::Address unconditionaly, hence parse_mailboxes is now > dead code. Remove it and its tests. > > Signed-off-by: Matthieu Moy <git@xxxxxxxxxxxxxxx> > --- > perl/Git.pm | 71 ---------------------------------------------------- > t/t9000-addresses.sh | 27 -------------------- > t/t9000/test.pl | 67 ------------------------------------------------- > 3 files changed, 165 deletions(-) > delete mode 100755 t/t9000-addresses.sh > delete mode 100755 t/t9000/test.pl Should we add the tests for t9001-send-email.sh to guard against regressions? > > diff --git a/perl/Git.pm b/perl/Git.pm > index 02a3871..9d60d79 100644 > --- a/perl/Git.pm > +++ b/perl/Git.pm > @@ -880,77 +880,6 @@ sub ident_person { > return "$ident[0] <$ident[1]>"; > } > > -=item parse_mailboxes > - > -Return an array of mailboxes extracted from a string. > - > -=cut > - > -# Very close to Mail::Address's parser, but we still have minor > -# differences in some cases (see t9000 for examples). > -sub parse_mailboxes { > - my $re_comment = qr/\((?:[^)]*)\)/; > - my $re_quote = qr/"(?:[^\"\\]|\\.)*"/; > - my $re_word = qr/(?:[^]["\s()<>:;@\\,.]|\\.)+/; > - > - # divide the string in tokens of the above form > - my $re_token = qr/(?:$re_quote|$re_word|$re_comment|\S)/; > - my @tokens = map { $_ =~ /\s*($re_token)\s*/g } @_; > - my $end_of_addr_seen = 0; > - > - # add a delimiter to simplify treatment for the last mailbox > - push @tokens, ","; > - > - my (@addr_list, @phrase, @address, @comment, @buffer) = (); > - foreach my $token (@tokens) { > - if ($token =~ /^[,;]$/) { > - # if buffer still contains undeterminated strings > - # append it at the end of @address or @phrase > - if ($end_of_addr_seen) { > - push @phrase, @buffer; > - } else { > - push @address, @buffer; > - } > - > - my $str_phrase = join ' ', @phrase; > - my $str_address = join '', @address; > - my $str_comment = join ' ', @comment; > - > - # quote are necessary if phrase contains > - # special characters > - if ($str_phrase =~ /[][()<>:;@\\,.\000-\037\177]/) { > - $str_phrase =~ s/(^|[^\\])"/$1/g; > - $str_phrase = qq["$str_phrase"]; > - } > - > - # add "<>" around the address if necessary > - if ($str_address ne "" && $str_phrase ne "") { > - $str_address = qq[<$str_address>]; > - } > - > - my $str_mailbox = "$str_phrase $str_address $str_comment"; > - $str_mailbox =~ s/^\s*|\s*$//g; > - push @addr_list, $str_mailbox if ($str_mailbox); > - > - @phrase = @address = @comment = @buffer = (); > - $end_of_addr_seen = 0; > - } elsif ($token =~ /^\(/) { > - push @comment, $token; > - } elsif ($token eq "<") { > - push @phrase, (splice @address), (splice @buffer); > - } elsif ($token eq ">") { > - $end_of_addr_seen = 1; > - push @address, (splice @buffer); > - } elsif ($token eq "@" && !$end_of_addr_seen) { > - push @address, (splice @buffer), "@"; > - } else { > - push @buffer, $token; > - } > - } > - > - return @addr_list; > -} > - > =item hash_object ( TYPE, FILENAME ) > > Compute the SHA1 object id of the given C<FILENAME> considering it is > diff --git a/t/t9000-addresses.sh b/t/t9000-addresses.sh > deleted file mode 100755 > index a1ebef6..0000000 > --- a/t/t9000-addresses.sh > +++ /dev/null > @@ -1,27 +0,0 @@ > -#!/bin/sh > - > -test_description='compare address parsing with and without Mail::Address' > -. ./test-lib.sh > - > -if ! test_have_prereq PERL; then > - skip_all='skipping perl interface tests, perl not available' > - test_done > -fi > - > -perl -MTest::More -e 0 2>/dev/null || { > - skip_all="Perl Test::More unavailable, skipping test" > - test_done > -} > - > -perl -MMail::Address -e 0 2>/dev/null || { > - skip_all="Perl Mail::Address unavailable, skipping test" > - test_done > -} > - > -test_external_has_tap=1 > - > -test_external_without_stderr \ > - 'Perl address parsing function' \ > - perl "$TEST_DIRECTORY"/t9000/test.pl > - > -test_done > diff --git a/t/t9000/test.pl b/t/t9000/test.pl > deleted file mode 100755 > index dfeaa9c..0000000 > --- a/t/t9000/test.pl > +++ /dev/null > @@ -1,67 +0,0 @@ > -#!/usr/bin/perl > -use lib (split(/:/, $ENV{GITPERLLIB})); > - > -use 5.008; > -use warnings; > -use strict; > - > -use Test::More qw(no_plan); > -use Mail::Address; > - > -BEGIN { use_ok('Git') } > - > -my @success_list = (q[Jane], > - q[jdoe@xxxxxxxxxxx], > - q[<jdoe@xxxxxxxxxxx>], > - q[Jane <jdoe@xxxxxxxxxxx>], > - q[Jane Doe <jdoe@xxxxxxxxxxx>], > - q["Jane" <jdoe@xxxxxxxxxxx>], > - q["Doe, Jane" <jdoe@xxxxxxxxxxx>], > - q["Jane@:;\>.,()<Doe" <jdoe@xxxxxxxxxxx>], > - q[Jane!#$%&'*+-/=?^_{|}~Doe' <jdoe@xxxxxxxxxxx>], > - q["<jdoe@xxxxxxxxxxx>"], > - q["Jane jdoe@xxxxxxxxxxx"], > - q[Jane Doe <jdoe @ example.com >], > - q[Jane Doe < jdoe@xxxxxxxxxxx >], > - q[Jane @ Doe @ Jane @ Doe], > - q["Jane, 'Doe'" <jdoe@xxxxxxxxxxx>], > - q['Doe, "Jane' <jdoe@xxxxxxxxxxx>], > - q["Jane" "Do"e <jdoe@xxxxxxxxxxx>], > - q["Jane' Doe" <jdoe@xxxxxxxxxxx>], > - q["Jane Doe <jdoe@xxxxxxxxxxx>" <jdoe@xxxxxxxxxxx>], > - q["Jane\" Doe" <jdoe@xxxxxxxxxxx>], > - q[Doe, jane <jdoe@xxxxxxxxxxx>], > - q["Jane Doe <jdoe@xxxxxxxxxxx>], > - q['Jane 'Doe' <jdoe@xxxxxxxxxxx>], > - q[Jane@:;\.,()<>Doe <jdoe@xxxxxxxxxxx>], > - q[Jane <jdoe@xxxxxxxxxxx> Doe], > - q[<jdoe@xxxxxxxxxxx> Jane Doe]); > - > -my @known_failure_list = (q[Jane\ Doe <jdoe@xxxxxxxxxxx>], > - q["Doe, Ja"ne <jdoe@xxxxxxxxxxx>], > - q["Doe, Katarina" Jane <jdoe@xxxxxxxxxxx>], > - q[Jane jdoe@xxxxxxxxxxx], > - q["Jane "Kat"a" ri"na" ",Doe" <jdoe@xxxxxxxxxxx>], > - q[Jane Doe], > - q[Jane "Doe <jdoe@xxxxxxxxxxx>"], > - q[\"Jane Doe <jdoe@xxxxxxxxxxx>], > - q[Jane\"\" Doe <jdoe@xxxxxxxxxxx>], > - q['Jane "Katarina\" \' Doe' <jdoe@xxxxxxxxxxx>]); > - > -foreach my $str (@success_list) { > - my @expected = map { $_->format } Mail::Address->parse("$str"); > - my @actual = Git::parse_mailboxes("$str"); > - is_deeply(\@expected, \@actual, qq[same output : $str]); > -} > - > -TODO: { > - local $TODO = "known breakage"; > - foreach my $str (@known_failure_list) { > - my @expected = map { $_->format } Mail::Address->parse("$str"); > - my @actual = Git::parse_mailboxes("$str"); > - is_deeply(\@expected, \@actual, qq[same output : $str]); > - } > -} > - > -my $is_passing = eval { Test::More->is_passing }; > -exit($is_passing ? 0 : 1) unless $@ =~ /Can't locate object method/; -- Alex Bennée