From 92e3e2cfef2a67bace93890d10f104ec9db4bf18 Mon Sep 17 00:00:00 2001 From: Slaven Rezic Date: Wed, 25 Mar 2009 18:28:06 +0100 Subject: [PATCH] send_request has to run the response_done handler for mirror() otherwise the mirrored file could remain truncated (added also a test script which must be run manually) --- MANIFEST | 1 + lib/LWPx/ParanoidAgent.pm | 1 + t/30-mirror.t | 27 +++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 0 deletions(-) create mode 100755 t/30-mirror.t diff --git a/MANIFEST b/MANIFEST index d6a2083..d2fecb6 100644 --- a/MANIFEST +++ b/MANIFEST @@ -5,4 +5,5 @@ lib/LWPx/Protocol/http_paranoid.pm lib/LWPx/Protocol/https_paranoid.pm lib/LWPx/ParanoidAgent.pm t/00-all.t +t/30-mirror.t META.yml Module meta-data (added by MakeMaker) diff --git a/lib/LWPx/ParanoidAgent.pm b/lib/LWPx/ParanoidAgent.pm index 0db4380..ae77419 100644 --- a/lib/LWPx/ParanoidAgent.pm +++ b/lib/LWPx/ParanoidAgent.pm @@ -322,6 +322,7 @@ EOT $response->request($request); # record request for reference $cookie_jar->extract_cookies($response) if $cookie_jar; $response->header("Client-Date" => HTTP::Date::time2str(time)); + $self->run_handlers("response_done", $response); return $response; } diff --git a/t/30-mirror.t b/t/30-mirror.t new file mode 100755 index 0000000..9f0a3ea --- /dev/null +++ b/t/30-mirror.t @@ -0,0 +1,27 @@ +# Testing the "Transfer truncated: only ... out of .. bytes received" +# case. + +use strict; +use Test::More; + +use File::Temp qw(tempfile); +use Getopt::Long qw(GetOptions); +use LWPx::ParanoidAgent; + +my $url; +GetOptions("url=s" => \$url) + or die "usage: $0 [-url url]"; + +if (!$url) { + plan skip_all => 'Mirror tests needs -url option'; + exit; +} + +plan tests => 1; + +my(undef, $tempfile) = tempfile(UNLINK => 1); +unlink $tempfile; # we only need the filename +my $ua = LWPx::ParanoidAgent->new; +my $resp = $ua->mirror($url, $tempfile); +ok($resp->is_success) + or diag($resp->as_string); -- 1.6.2