X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FTestCommon.pm;h=d952ee6d97715fc644b1dcf0e663d977821c8413;hb=0283273a14e1871955f6a9132f4f3f7884ec8a3f;hp=ac14d27bc87b9ba406edd22eb475f704a8dabc39;hpb=5d8dbb4aca5afcc6b98a4d951f03003fb7eaf356;p=public-inbox.git diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index ac14d27b..d952ee6d 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -9,29 +9,21 @@ use Fcntl qw(FD_CLOEXEC F_SETFD F_GETFD :seek); use POSIX qw(dup2); use IO::Socket::INET; our @EXPORT = qw(tmpdir tcp_server tcp_connect require_git require_mods - run_script start_script key2sub xsys xqx mime_load); + run_script start_script key2sub xsys xqx mime_load eml_load); -sub mime_load ($;&) { - my ($path, $cb) = @_; - if (open(my $fh, '<', $path)) { - PublicInbox::MIME->new(\(do { local $/; <$fh> })); - } elsif ($cb) { - require File::Temp; +sub mime_load ($) { + my ($path) = @_; + open(my $fh, '<', $path) or die "open $path: $!"; + # test should've called: require_mods('Email::MIME') + require PublicInbox::MIME; + PublicInbox::MIME->new(\(do { local $/; <$fh> })); +} - my $mime = $cb->(); - my ($dir) = ($path =~ m!(.+)/(?:[^/]+)\z!); - -d $dir or die "BUG: dir=$dir is not the dir of $path"; - my $fh = File::Temp->new(DIR => $dir); - $fh->autoflush(1); - print $fh $mime->as_string or die "print: $!"; - my $fn = $fh->filename; - rename($fn, $path) or die "link $fn => $path: $!"; - $fh->unlink_on_destroy(0); - pop @_; # retry via tail recursion - goto &mime_load; - } else { - die "open $path: $!"; - } +sub eml_load ($) { + my ($path, $cb) = @_; + open(my $fh, '<', $path) or die "open $path: $!"; + require PublicInbox::Eml; + PublicInbox::Eml->new(\(do { local $/; <$fh> })); } sub tmpdir (;$) {