CC: | Slaven Rezic <srezic [...] iconmobile.com> |
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) |
Date: | Wed, 25 Mar 2009 18:37:04 +0100 |
To: | bug-LWPx-ParanoidAgent [...] rt.cpan.org |
From: | Slaven Rezic <srezic [...] iconmobile.com> |
---
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