From 80c68add2d0cd415f89d7d097f9378e890e56db9 Mon Sep 17 00:00:00 2001 From: Jaime Iniesta Date: Sun, 12 Aug 2012 16:14:12 +0200 Subject: [PATCH] Fix bug where metainspector would crash if no links found on the page --- lib/meta_inspector/scraper.rb | 2 +- spec/fixtures/empty_page.response | 17 +++++++++++++++++ spec/metainspector_spec.rb | 6 ++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/empty_page.response diff --git a/lib/meta_inspector/scraper.rb b/lib/meta_inspector/scraper.rb index 2e30f197..acc359d3 100644 --- a/lib/meta_inspector/scraper.rb +++ b/lib/meta_inspector/scraper.rb @@ -149,7 +149,7 @@ def method_missing(method_name) def parsed_links @parsed_links ||= parsed_document.search("//a") \ .map {|link| link.attributes["href"] \ - .to_s.strip}.uniq rescue nil + .to_s.strip}.uniq rescue [] end def parsed_images diff --git a/spec/fixtures/empty_page.response b/spec/fixtures/empty_page.response new file mode 100644 index 00000000..9232ecb8 --- /dev/null +++ b/spec/fixtures/empty_page.response @@ -0,0 +1,17 @@ +HTTP/1.1 200 OK +Server: nginx/0.7.67 +Date: Fri, 18 Nov 2011 21:46:46 GMT +Content-Type: text/html +Connection: keep-alive +Last-Modified: Mon, 14 Nov 2011 16:53:18 GMT +Content-Length: 4987 +X-Varnish: 2000423390 +Age: 0 +Via: 1.1 varnish + + + + + + + \ No newline at end of file diff --git a/spec/metainspector_spec.rb b/spec/metainspector_spec.rb index 58106398..869c3807 100644 --- a/spec/metainspector_spec.rb +++ b/spec/metainspector_spec.rb @@ -16,6 +16,7 @@ FakeWeb.register_uri(:get, "http://www.youtube.com/watch?v=iaGSSrp49uc", :response => fixture_file("youtube.response")) FakeWeb.register_uri(:get, "http://w3clove.com/faqs", :response => fixture_file("w3clove_faqs.response")) FakeWeb.register_uri(:get, "https://twitter.com/w3clove", :response => fixture_file("twitter_w3clove.response")) + FakeWeb.register_uri(:get, "https://example.com/empty", :response => fixture_file("empty_page.response")) describe 'Initialization' do it 'should accept an URL with a scheme' do @@ -164,6 +165,11 @@ "http://twitter.com/W3CLove", "http://us4.campaign-archive1.com/home/?u=6af3ab69c286561d0f0f25671&id=04a0dab609" ] end + + it "should return empty array if no links found" do + m = MetaInspector.new('http://example.com/empty') + m.links.should == [] + end end describe 'Non-HTTP links' do