diff --git a/jhove-ext-modules/pom.xml b/jhove-ext-modules/pom.xml index bee08f9a0..5577a01f7 100644 --- a/jhove-ext-modules/pom.xml +++ b/jhove-ext-modules/pom.xml @@ -13,7 +13,7 @@ 1.0.3 - 4.2.6 + 5.0.1 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..98133b4eb 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 @@ -105,6 +105,11 @@ public void message(Message message, EPUBLocation location, Object... args) { @Override public void info(String resource, FeatureEnum feature, String value) { + //assemble the list of resources + if (resource != null && !resource.equals("mimetype") && !resource.startsWith("META-INF/")) { + this.resources.add(resource); + } + // Dont store 'null' values if (value == null) return; 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..09c6da075 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: EpubCheck 5.0.1 commented out the creation date code. + // Commenting this test out, but not deleting it yet in case it comes back. + //assertNotNull(info.getCreated()); assertNotNull(info.getLastModified()); Property metadata = info.getProperty(EPUBMETADATA_KEY); @@ -124,7 +126,7 @@ public void parseValidEpub3PropertiesTest() throws Exception { assertTrue(mediaTypes.contains(NCX_MIMETYPE)); Set resources = new HashSet(Arrays.asList((String[]) props.get(PROPNAME_RESOURCES))); - final int expectedNumResources = 5; + final int expectedNumResources = 8; assertEquals(expectedNumResources, resources.size()); assertTrue(resources.contains("EPUB/images/cover.png")); assertTrue(resources.contains("EPUB/css/nav.css")); @@ -225,7 +227,7 @@ public void parseValidEpub3WithRemoteResourcesTest() throws Exception { assertTrue(references.contains(remoteMp3Url)); Set resources = new HashSet(Arrays.asList((String[]) props.get(PROPNAME_RESOURCES))); - final int expectedNumResources = 51; + final int expectedNumResources = 54; assertEquals(expectedNumResources, resources.size()); // spot check a few assertTrue(resources.contains(remoteMp4Url)); @@ -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: EpubCheck 5.0.1 commented out the creation date code. + // Commenting this test out, but not deleting it yet in case it comes back. + //assertNotNull(info.getCreated()); Property metadata = info.getProperty(EPUBMETADATA_KEY); Map props = toMap(metadata); @@ -266,7 +270,7 @@ public void parseValidEpub2PropertiesTest() throws Exception { assertTrue(mediaTypes.contains(NCX_MIMETYPE)); Set resources = new HashSet(Arrays.asList((String[]) props.get(PROPNAME_RESOURCES))); - final int expectedNumResources = 4; + final int expectedNumResources = 6; assertEquals(expectedNumResources, resources.size()); assertTrue(resources.contains("OEBPS/Text/pdfMigration.html")); assertTrue(resources.contains("OEBPS/Text/cover.xhtml")); @@ -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()); } @@ -510,7 +514,7 @@ public void parseEpubWithMissingFontsTest() throws Exception { // only one font in this file, listed but missing. assertEquals("Courier", fontinfo.get(PROPNAME_FONTNAME)); - assertEquals(true, fontinfo.get(PROPNAME_FONTFILE)); + assertEquals(false, fontinfo.get(PROPNAME_FONTFILE)); // check for could not find referenced resource error. assertEquals("RSC-007", info.getMessage().get(0).getId()); @@ -538,7 +542,10 @@ public void parseEpubWithObfuscatedFontsTest() throws Exception { Set fontinfo = (Set) font.getValue(); Map map = new HashMap(); fontinfo.forEach(f -> map.put(f.getName(), f.getValue())); - assertEquals(true, map.get(PROPNAME_FONTFILE)); + // NOTE: This test is currently failing due to what appears to be a bug. + // logged here: https://github.com/w3c/epubcheck/issues/1519, will add + // test back in if fixed. + //assertEquals(true, map.get(PROPNAME_FONTFILE)); fontNames.add(map.get(PROPNAME_FONTNAME).toString()); } assertEquals(expectedNumFonts, fontNames.size()); @@ -579,18 +586,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 +666,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..dad537092 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; @@ -46,8 +47,9 @@ public class JhoveRepInfoReportTest { 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"; @@ -225,12 +227,16 @@ public void remoteAndLocalResourcesTest() throws Exception { report.info(null, FeatureEnum.REFERENCE, reference3); // resources are what appear to be part of the EPUB and may be local or remote - report.info(null, FeatureEnum.RESOURCE, localResource1); - report.info(null, FeatureEnum.RESOURCE, localResource2); + // NOTE: in EpubCheck 5.0.1 FeatureEnum.RESOURCE is not being used, but keeping + // the property for now in case it returns. Instead, resource list is generated + // from resource param going into info. This test should work for either route + report.info(localResource1, null, null); + report.info(localResource2, null, null); + report.info(localResource3, null, null); report.info(null, FeatureEnum.RESOURCE, localResource3); report.info(null, FeatureEnum.RESOURCE, localResource4); - report.info(null, FeatureEnum.RESOURCE, remoteResource1); - report.info(null, FeatureEnum.RESOURCE, remoteResource2); + report.info(remoteResource1, null, null); + report.info(remoteResource2, null, null); report.info(null, FeatureEnum.RESOURCE, remoteResource3); final int expectedNumReferences = 3;