diff --git a/modules/app/src/test/java/org/locationtech/jtstest/TestReaderTest.java b/modules/app/src/test/java/org/locationtech/jtstest/TestReaderTest.java index e82f1fa08e..458845ac6d 100644 --- a/modules/app/src/test/java/org/locationtech/jtstest/TestReaderTest.java +++ b/modules/app/src/test/java/org/locationtech/jtstest/TestReaderTest.java @@ -14,6 +14,7 @@ package org.locationtech.jtstest; import java.io.File; +import java.nio.file.Files; import java.util.Iterator; import java.util.StringTokenizer; @@ -49,6 +50,24 @@ public void testDummy() { } + + public void testExternalGeometryNotIncluded() throws Exception { + File wkt = File.createTempFile("geometry", ".wkt"); + File xml = File.createTempFile("testreader", ".xml"); + try { + Files.write(wkt.toPath(), "POINT (10 20)".getBytes("UTF-8")); + String run = " ]>" + + "&a;true"; + Files.write(xml.toPath(), run.getBytes("UTF-8")); + TestReader testReader = new TestReader(); + assertNull(testReader.createTestRun(xml, 0)); + assertEquals(1, testReader.getParsingProblems().size()); + } + finally { + wkt.delete(); + xml.delete(); + } + } public void XtestWktFile() { TestReader testReader = new TestReader(); diff --git a/modules/tests/src/main/java/org/locationtech/jtstest/testrunner/TestReader.java b/modules/tests/src/main/java/org/locationtech/jtstest/testrunner/TestReader.java index 96021a8586..0a3a0f9170 100644 --- a/modules/tests/src/main/java/org/locationtech/jtstest/testrunner/TestReader.java +++ b/modules/tests/src/main/java/org/locationtech/jtstest/testrunner/TestReader.java @@ -101,6 +101,8 @@ public void clearParsingProblems() { public TestRun createTestRun(File testFile, int runIndex) { try { SAXBuilder builder = new SAXBuilder( ); + // test files do not require DOCTYPE + builder.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); builder.setJDOMFactory(new LocatedJDOMFactory()); Document document = builder.build(new FileInputStream(testFile)); Element runElement = document.getRootElement();