From fb42c07c9292ba286f4ce9910b876545f357978f Mon Sep 17 00:00:00 2001 From: Adam Miller Date: Tue, 13 May 2014 14:03:03 -0700 Subject: [PATCH] bugfix, new test case. --- .../extractor/ExtractorPDFContent.java | 2 +- .../extractor/ExtractorPDFContentTest.java | 2 +- .../resources/ExtractorPDFContentTest4.pdf | Bin 11364 -> 11637 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/src/main/java/org/archive/modules/extractor/ExtractorPDFContent.java b/contrib/src/main/java/org/archive/modules/extractor/ExtractorPDFContent.java index a11aff3c..082517ca 100644 --- a/contrib/src/main/java/org/archive/modules/extractor/ExtractorPDFContent.java +++ b/contrib/src/main/java/org/archive/modules/extractor/ExtractorPDFContent.java @@ -102,7 +102,7 @@ public class ExtractorPDFContent extends ContentExtractor { //handle URLs wrapped in parentheses if(prospectiveURL.startsWith("(")) { - prospectiveURL=prospectiveURL.substring(1,prospectiveURL.length()-1); + prospectiveURL=prospectiveURL.substring(1,prospectiveURL.length()); if(prospectiveURL.endsWith(")")) prospectiveURL=prospectiveURL.substring(0,prospectiveURL.length()-1); } diff --git a/contrib/src/test/java/org/archive/modules/extractor/ExtractorPDFContentTest.java b/contrib/src/test/java/org/archive/modules/extractor/ExtractorPDFContentTest.java index 516bec15..32701bfa 100644 --- a/contrib/src/test/java/org/archive/modules/extractor/ExtractorPDFContentTest.java +++ b/contrib/src/test/java/org/archive/modules/extractor/ExtractorPDFContentTest.java @@ -66,7 +66,7 @@ public class ExtractorPDFContentTest extends ContentExtractorTestBase { CrawlURI testUri = createTestUri("http://www.example.com/fake.pdf", TEST_RESOURCE_FILE_4); extractor.process(testUri); - Set expected = makeLinkSet(testUri, new String[]{"http://www.unisys.com","http://www.myserver.mycorp.com/images/exttest.jpg","http://www.adobe.com/intro?100,200","http://www.w3.org/1999/xhtml","http://www.xfa.org/schema/xfa-data/1.0","http://www.adobe.com","http://www.adobe.com/getacro.gif"}); + Set expected = makeLinkSet(testUri, new String[]{"http://www.unisys.com","http://www.myserver.mycorp.com/images/exttest.jpg","http://www.adobe.com/intro?100,200","http://www.w3.org/1999/xhtml","http://www.xfa.org/schema/xfa-data/1.0","http://www.adobe.com","http://www.adobe.com/getacro.gif","http://www.example.com/testOpeningParen"}); assertTrue(testUri.getOutLinks().containsAll(expected)); } public void testNewlineSeparatedURIs() throws URIException, UnsupportedEncodingException, IOException, InterruptedException{ diff --git a/contrib/src/test/resources/ExtractorPDFContentTest4.pdf b/contrib/src/test/resources/ExtractorPDFContentTest4.pdf index a9608d0a77635041f7dba29cfcd1481328190f65..41e2bbaa96234237eb51e69237618428d6ec9ab4 100644 GIT binary patch delta 8795 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