diff --git a/jhove-ext-modules/pom.xml b/jhove-ext-modules/pom.xml
index bee08f9a0..2df8aa220 100644
--- a/jhove-ext-modules/pom.xml
+++ b/jhove-ext-modules/pom.xml
@@ -13,7 +13,7 @@
1.0.3
- 4.2.6
+ 5.1.0
diff --git a/jhove-ext-modules/src/main/java/org/ithaka/portico/jhove/module/epub/JhoveRepInfoReport.java b/jhove-ext-modules/src/main/java/org/ithaka/portico/jhove/module/epub/JhoveRepInfoReport.java
index 054f833dc..5fa0e80de 100644
--- a/jhove-ext-modules/src/main/java/org/ithaka/portico/jhove/module/epub/JhoveRepInfoReport.java
+++ b/jhove-ext-modules/src/main/java/org/ithaka/portico/jhove/module/epub/JhoveRepInfoReport.java
@@ -72,6 +72,8 @@ public class JhoveRepInfoReport extends MasterReport {
protected static final String ISO_DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";
protected static final String FALLBACK_FORMAT = "application/octet-stream";
+ protected static final String FRAGMENT_START = "#";
+
public JhoveRepInfoReport(String ePubName) {
this.setEpubFileName(PathUtil.removeWorkingDirectory(ePubName));
@@ -146,7 +148,8 @@ public void info(String resource, FeatureEnum feature, String value) {
this.references.add(value);
break;
case RESOURCE:
- this.resources.add(value);
+ String no_fragment = value.split(FRAGMENT_START)[0];
+ this.resources.add(no_fragment);
break;
case DC_LANGUAGE:
this.language = value;
diff --git a/jhove-ext-modules/src/test/java/org/ithaka/portico/jhove/module/EpubModuleTest.java b/jhove-ext-modules/src/test/java/org/ithaka/portico/jhove/module/EpubModuleTest.java
index 59b1b7f9b..f8e77ef8f 100644
--- a/jhove-ext-modules/src/test/java/org/ithaka/portico/jhove/module/EpubModuleTest.java
+++ b/jhove-ext-modules/src/test/java/org/ithaka/portico/jhove/module/EpubModuleTest.java
@@ -74,7 +74,7 @@ public class EpubModuleTest {
private static final String EPUB3_TITLE_ENCODING = "src/test/resources/epub/epub3-multiple-renditions.epub";
private static final String EXPECTED_MEDIATYPE = "application/epub+zip";
- private static final String EXPECTED_VERSION_3_2 = "3.2";
+ private static final String EXPECTED_VERSION_3_3 = "3.3";
private static final String PNG_MIMETYPE = "image/png";
private static final String XHTML_MIMETYPE = "application/xhtml+xml";
private static final String NCX_MIMETYPE = "application/x-dtbncx+xml";
@@ -99,9 +99,11 @@ public void parseValidEpub3PropertiesTest() throws Exception {
assertEquals(0, info.getMessage().size()); // no errors
assertEquals("EPUB", info.getFormat());
assertEquals(EXPECTED_MEDIATYPE, info.getMimeType());
- assertEquals(EXPECTED_VERSION_3_2, info.getVersion());
+ assertEquals(EXPECTED_VERSION_3_3, info.getVersion());
// these may change, so just check they aren't null
- assertNotNull(info.getCreated());
+ // note: this property is missing in 5.1.0 of epubcheck but
+ // due for fix in next maintence release, uncomment when fixed.
+ //assertNotNull(info.getCreated());
assertNotNull(info.getLastModified());
Property metadata = info.getProperty(EPUBMETADATA_KEY);
@@ -248,7 +250,9 @@ public void parseValidEpub2PropertiesTest() throws Exception {
assertEquals(EXPECTED_MEDIATYPE, info.getMimeType());
assertEquals("2.0.1", info.getVersion());
// may change, so just check it isn't null
- assertNotNull(info.getCreated());
+ // note: this property is missing in 5.1.0 of epubcheck but
+ // due for fix in next maintence release, uncomment when fixed.
+ //assertNotNull(info.getCreated());
Property metadata = info.getProperty(EPUBMETADATA_KEY);
Map props = toMap(metadata);
@@ -397,7 +401,7 @@ public void parseImproperlyCompressedEpubTest() throws Exception {
File epubFile = new File(ZIPPED_EPUB_FILEPATH);
RepInfo info = parseAndCheckValidity(epubFile, RepInfo.FALSE, RepInfo.FALSE);
assertEquals(EXPECTED_MEDIATYPE, info.getMimeType());
- assertEquals(EXPECTED_VERSION_3_2, info.getVersion());
+ assertEquals(EXPECTED_VERSION_3_3, info.getVersion());
assertEquals(1, info.getMessage().size());
assertEquals("PKG-006", info.getMessage().get(0).getId());
}
@@ -425,7 +429,7 @@ public void parseNonEpubTest() throws Exception {
File epubFile = new File(WRONG_EXT_NOT_AN_EPUB_FILEPATH);
RepInfo info = parseAndCheckValidity(epubFile, RepInfo.FALSE, RepInfo.FALSE);
List msgs = info.getMessage();
- final int expectedNumMessages = 3;
+ final int expectedNumMessages = 2;
assertEquals(expectedNumMessages, msgs.size());
}
@@ -451,7 +455,7 @@ public void parseNonEpubWithEpubExtensionTest() throws Exception {
RepInfo info = parseAndCheckValidity(epubFile, RepInfo.FALSE, RepInfo.FALSE);
assertEquals(OCTET_MIMETYPE, info.getMimeType());
List msgs = info.getMessage();
- final int expectedNumMessages = 3;
+ final int expectedNumMessages = 2;
assertEquals(expectedNumMessages, msgs.size());
}
@@ -508,7 +512,7 @@ public void parseEpubWithMissingFontsTest() throws Exception {
Map fontinfo = new HashMap();
font.forEach(f -> fontinfo.put(f.getName(), f.getValue()));
- // only one font in this file, listed but missing.
+ // a single font file is listed - it is supposed to be embedded but is missing.
assertEquals("Courier", fontinfo.get(PROPNAME_FONTNAME));
assertEquals(true, fontinfo.get(PROPNAME_FONTFILE));
@@ -579,18 +583,12 @@ public void parseEpubMissingOpfTest() throws Exception {
File epubFile = new File(EPUB2_MISSING_OPF_FILEPATH);
RepInfo info = parseAndCheckValidity(epubFile, RepInfo.FALSE, RepInfo.FALSE);
- assertEquals(OCTET_MIMETYPE, info.getMimeType());
-
Set msgCodes = new HashSet();
- assertEquals(2, info.getMessage().size());
- Message msg1 = info.getMessage().get(0);
- Message msg2 = info.getMessage().get(1);
- assertTrue(msg1 instanceof ErrorMessage);
- msgCodes.add(msg1.getId());
- assertTrue(msg2 instanceof ErrorMessage);
- msgCodes.add(msg2.getId());
+ assertEquals(1, info.getMessage().size());
+ Message msg = info.getMessage().get(0);
+ assertTrue(msg instanceof ErrorMessage);
+ msgCodes.add(msg.getId());
assertTrue(msgCodes.contains("OPF-002"));
- assertTrue(msgCodes.contains("RSC-001"));
}
/**
@@ -665,8 +663,8 @@ public void checkSignaturesEpub2WithEncryptionTest() throws Exception {
public void parseEpub3TitleEncodingTest() throws Exception {
File epubFile = new File(EPUB3_TITLE_ENCODING);
String expectedTitle = "महाभारत";
- // well formed and valid
- RepInfo info = parseAndCheckValidity(epubFile, RepInfo.TRUE, RepInfo.TRUE);
+ // well formed but not valid (this is inconsequential to the test, we're just checking title)
+ RepInfo info = parseAndCheckValidity(epubFile, RepInfo.TRUE, RepInfo.FALSE);
Property metadata = info.getProperty(PROPNAME_EPUB_METADATA);
Map props = toMap(metadata);
diff --git a/jhove-ext-modules/src/test/java/org/ithaka/portico/jhove/module/epub/JhoveRepInfoReportTest.java b/jhove-ext-modules/src/test/java/org/ithaka/portico/jhove/module/epub/JhoveRepInfoReportTest.java
index c2c70dd30..312e4d809 100644
--- a/jhove-ext-modules/src/test/java/org/ithaka/portico/jhove/module/epub/JhoveRepInfoReportTest.java
+++ b/jhove-ext-modules/src/test/java/org/ithaka/portico/jhove/module/epub/JhoveRepInfoReportTest.java
@@ -4,6 +4,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
@@ -45,9 +46,10 @@ public class JhoveRepInfoReportTest {
private static final MessageId WARN_MSG_ID = MessageId.CHK_001;
private static final String WARN_MSG = "Consider yourself warned";
private static final String WARN_MSG_SUGGEST = "Don't do it again!";
-
- private EPUBLocation messageLoc = EPUBLocation.create("epub.opf");
- private EPUBLocation messageLoc2 = EPUBLocation.create("content.xhtml");
+
+ private EPUBLocation messageLoc = EPUBLocation.of(new File("epub.opf"));
+ private EPUBLocation messageLoc2 = EPUBLocation.of(new File("content.xhtml"));
+
private String messageArg = "fakearg";