[libscrappy-perl] 01/03: Add patches from Lubomir Rintel <lkundrak at v3.sk>.
gregor herrmann
gregoa at debian.org
Wed May 7 15:20:21 UTC 2014
This is an automated email from the git hooks/post-receive script.
gregoa pushed a commit to branch master
in repository libscrappy-perl.
commit 2fe82033ec0e0ce6733f43a46743ba3356895616
Author: gregor herrmann <gregoa at debian.org>
Date: Wed May 7 17:00:51 2014 +0200
Add patches from Lubomir Rintel <lkundrak at v3.sk>.
Git-Dch: Ignore
---
debian/patches/moose-initializers.patch | 35 +++++++++++++
debian/patches/scraper-control.patch | 90 +++++++++++++++++++++++++++++++++
debian/patches/series | 2 +
3 files changed, 127 insertions(+)
diff --git a/debian/patches/moose-initializers.patch b/debian/patches/moose-initializers.patch
new file mode 100644
index 0000000..841476b
--- /dev/null
+++ b/debian/patches/moose-initializers.patch
@@ -0,0 +1,35 @@
+Subject: Plugins: Call initializers in correct order
+
+According to Class::MOP::Attribute manual:
+
+Note that there is no guarantee that attributes are initialized in any
+particular order, so you cannot rely on the value of some other attribute when
+generating the default.
+
+This is exactly what was being done, causing test failures ever since hash key
+order was randomized (RT#82142):
+
+Can't use an undefined value as an ARRAY reference at lib/Scrappy/Plugin.pm line 21.
+
+Let's just initialize plugins() lazily -- it will still be initialized upon the
+instance creation, since registry() will trigger it, just in the correct order
+now.
+
+From: Lubomir Rintel <lkundrak at v3.sk>
+Forwarded: https://rt.cpan.org/Ticket/Display.html?id=82142#txn-1359672
+Bug: https://rt.cpan.org/Public/Bug/Display.html?id=82142#txn-1359672
+
+--- a/lib/Scrappy/Plugin.pm
++++ b/lib/Scrappy/Plugin.pm
+@@ -31,8 +31,10 @@
+ has plugins => (
+ is => 'ro',
+ isa => 'Any',
++ # registry() uses us in their initializer, defer our own
++ # initialization until then
++ lazy => 1,
+ default => sub {
+-
+ my @plugins = ();
+
+ # fix for bug found by Patrick Woo
diff --git a/debian/patches/scraper-control.patch b/debian/patches/scraper-control.patch
new file mode 100644
index 0000000..86b352b
--- /dev/null
+++ b/debian/patches/scraper-control.patch
@@ -0,0 +1,90 @@
+Subject: Fix Scrapy::Scraper::Control and its test
+
+It's rather broken, possibly due to some careless copy & pasting:
+
+* in restrict() and allow(), "next" outside loops is used in place
+ of function returns
+* in is_allowed(), argument is assumed to be an URI instance despite the
+ function takes a string. Also, a chunk of code (apparently copied from
+ lines above), mistakes allowed() for restricted() and apart from that
+ leaves the logic reversed.
+* Moreover, the test does not pass a valid URI to a subroutine that
+ expects one
+
+The silly condition is left as entertainment for future generations:
+
+ if (keys %{$self->restricted}) {
+ if (keys %{$self->restricted}) {
+
+From: Lubomir Rintel <lkundrak at v3.sk>
+Forwarded: https://rt.cpan.org/Ticket/Display.html?id=95420#txn-1359937
+Bug: https://rt.cpan.org/Ticket/Display.html?id=95420
+
+--- a/lib/Scrappy/Scraper/Control.pm
++++ b/lib/Scrappy/Scraper/Control.pm
+@@ -28,7 +28,7 @@ sub allow {
+
+ $target = URI->new($target);
+
+- next
++ return $i
+ unless $target
+ && ("URI::http" eq ref $target || "URI::https" eq ref $target);
+
+@@ -49,7 +49,7 @@ sub restrict {
+
+ $target = URI->new($target);
+
+- next
++ return $i
+ unless $target
+ && ("URI::http" eq ref $target || "URI::https" eq ref $target);
+
+@@ -79,6 +79,7 @@ sub is_allowed {
+ $url = $url->request->uri;
+ }
+
++ $url = URI->new($url);
+ return 0 unless ("URI::http" eq ref $url || "URI::https" eq ref $url);
+
+ $url = $url->host;
+@@ -107,19 +108,18 @@ sub is_allowed {
+ # is it explicitly restricted
+ if (keys %{$self->restricted}) {
+ if (keys %{$self->restricted}) {
+-
+ # return 0 if $self->restricted->{$url};
+ if ($self->restricted->{$url}) {
+ if ($self->restricted->{$url}->{if}) {
+- return $self->_check_constraints(
+- $self->allowed->{$url}->{if}, $http);
++ return ! $self->_check_constraints(
++ $self->restricted->{$url}->{if}, $http);
+ }
+ else {
+- return 1;
++ return 0;
+ }
+ }
+ else {
+- return 0;
++ return 1;
+ }
+ }
+ }
+diff --git a/t/00_test_function_control.t b/t/00_test_function_control.t
+index 2270d12..7cd3407 100644
+--- a/t/00_test_function_control.t
++++ b/t/00_test_function_control.t
+@@ -13,7 +13,7 @@ ok $s->control->is_allowed('http://search.cpan.org/recent');
+ ok $s->control->is_allowed('http://search.cpan.org/dist/Scrappy/lib/Scrappy.pm');
+ ok ! $s->control->is_allowed('http://www.google.com/');
+ ok 0 == keys %{$s->control->restricted}; # no restriction rules set
+-ok $s->control->restrict('search.cpan.org');
++ok $s->control->restrict('http://search.cpan.org');
+ ok ! $s->control->is_allowed('http://search.cpan.org/');
+ ok ! $s->control->is_allowed('http://search.cpan.org/recent');
+ ok ! $s->control->is_allowed('http://search.cpan.org/dist/Scrappy/lib/Scrappy.pm');
+--
+1.9.0
+
diff --git a/debian/patches/series b/debian/patches/series
index 38edaa7..2dc2962 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,3 @@
spelling-errors.patch
+moose-initializers.patch
+scraper-control.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libscrappy-perl.git
More information about the Pkg-perl-cvs-commits
mailing list