This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit 6d4265846c31fc4ee2cc5a566d22cc73e5c878b7 Author: Andy Seaborne <[email protected]> AuthorDate: Tue Dec 9 17:25:54 2025 +0000 Don't reject non-file URLs in syntax test entries --- .../apache/jena/arq/junit/riot/RiotEvalTest.java | 1 - .../apache/jena/arq/junit/riot/RiotSyntaxTest.java | 46 +++++++++++++--------- .../apache/jena/riot/stream/TestStreamManager.java | 33 ++++++---------- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotEvalTest.java b/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotEvalTest.java index 83ff832956..ec348b0083 100644 --- a/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotEvalTest.java +++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotEvalTest.java @@ -78,7 +78,6 @@ public class RiotEvalTest extends AbstractManifestTest { StreamRDF dest = StreamRDFLib.graph(graph); try { parser.accept(dest); - if ( ! positiveTest ) { String fragment = fragment(manifestEntry.getURI()); if ( fragment != null ) diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotSyntaxTest.java b/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotSyntaxTest.java index 0b3d0b9a83..092e9a5db1 100644 --- a/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotSyntaxTest.java +++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/riot/RiotSyntaxTest.java @@ -27,6 +27,8 @@ import org.apache.jena.arq.junit.manifest.ManifestEntry; import org.apache.jena.atlas.io.IO; import org.apache.jena.atlas.lib.FileOps; import org.apache.jena.atlas.lib.IRILib; +import org.apache.jena.atlas.lib.Lib; +import org.apache.jena.irix.IRIs; import org.apache.jena.riot.Lang; import org.apache.jena.riot.RiotException; import org.apache.jena.riot.RiotNotFoundException; @@ -37,7 +39,7 @@ import org.apache.jena.shared.NotFoundException; public class RiotSyntaxTest extends AbstractManifestTest { final private boolean expectLegalSyntax; - final private String filename; + final private String actionURI; final private String baseIRI; final private Lang lang; final private Consumer<StreamRDF> parser; @@ -48,36 +50,39 @@ public class RiotSyntaxTest extends AbstractManifestTest { public RiotSyntaxTest(ManifestEntry entry, String baseIRI, Lang lang, boolean positiveTest) { super(entry); - this.filename = entry.getAction().getURI(); - this.baseIRI = ( baseIRI == null ) ? filename : baseIRI; + this.actionURI = entry.getAction().getURI(); + this.baseIRI = ( baseIRI == null ) ? actionURI : baseIRI; this.expectLegalSyntax = positiveTest; this.lang = lang; boolean silentWarnings = RiotTestsConfig.allowWarnings(manifestEntry); parser = ( baseIRI != null ) - ? ParsingStepForTest.parse(filename, baseIRI, lang, silentWarnings) - : ParsingStepForTest.parse(filename, lang, silentWarnings); - + ? ParsingStepForTest.parse(actionURI, baseIRI, lang, silentWarnings) + : ParsingStepForTest.parse(actionURI, lang, silentWarnings); } @Override public void runTest() { StreamRDF stream = StreamRDFLib.sinkNull(); - // Check so the parse step does not confuse missing with bad syntax. - String fn = IRILib.IRIToFilename(filename); - if ( ! FileOps.exists(fn) ) { - throw new NotFoundException("File not found: "+filename) { - @Override public Throwable fillInStackTrace() { return this; } - }; + // If a file, check so the parse step does not confuse missing with bad syntax. + String uriScheme = IRIs.scheme(actionURI); + boolean isLocal = "file".equals(Lib.lowercase(uriScheme)); + String fn = isLocal ? IRILib.IRIToFilename(actionURI) : actionURI; + if (isLocal) { + if ( ! FileOps.exists(fn) ) { + throw new NotFoundException("File not found: "+actionURI) { + @Override public Throwable fillInStackTrace() { return this; } + }; + } } + try { parser.accept(stream); if (! expectLegalSyntax ) { - String reason = "Parsing succeeded in a bad syntax test"; + String reason = "Parsing succeeded in a bad syntax test: "+actionURI; outputFailure(reason, fn, null); - String s = IO.readWholeFileAsUTF8(fn); - System.out.println(); - System.out.println("== "+filename); - System.out.println(s); + if ( isLocal ) + printIfFile(reason, actionURI, fn); + System.out.println("== "+actionURI); fail(reason); } } catch(RiotNotFoundException ex) { @@ -91,13 +96,16 @@ public class RiotSyntaxTest extends AbstractManifestTest { } } - private void outputFailure(String reason, String fn, Throwable th) { + private void printIfFile(String reason, String uri, String fn) { String s = IO.readWholeFileAsUTF8(fn); System.err.println(); - System.err.println("== "+filename+ " -- "+reason); + System.err.println("== "+actionURI+ " -- "+reason); System.err.print(s); if ( !s.endsWith("\n") ) System.err.println(); + } + + private void outputFailure(String reason, String fn, Throwable th) { fail("Parsing succeeded in a bad syntax test"); } } diff --git a/jena-arq/src/test/java/org/apache/jena/riot/stream/TestStreamManager.java b/jena-arq/src/test/java/org/apache/jena/riot/stream/TestStreamManager.java index ade7505469..7f97cc34e1 100644 --- a/jena-arq/src/test/java/org/apache/jena/riot/stream/TestStreamManager.java +++ b/jena-arq/src/test/java/org/apache/jena/riot/stream/TestStreamManager.java @@ -40,8 +40,8 @@ import org.apache.jena.riot.system.stream.LocatorHTTP; import org.apache.jena.riot.system.stream.StreamManager; import org.apache.jena.sparql.util.Context; -public class TestStreamManager -{ +public class TestStreamManager { + private static final String directory = "testing/RIOT/StreamManager"; private static final String absDirectory = new File(directory).getAbsolutePath(); @@ -50,8 +50,8 @@ public class TestStreamManager private static StreamManager streamMgrNull; private static StreamManager streamMgrStd; - @BeforeAll static public void beforeClass() - { + @BeforeAll + static public void beforeClass() { streamMgrStd = StreamManager.get(); streamMgrDir = new StreamManager(); // Not current directory. @@ -66,13 +66,12 @@ public class TestStreamManager streamMgrNull = new StreamManager(); } - @AfterAll static public void afterClass() - { + @AfterAll + static public void afterClass() { StreamManager.setGlobal(streamMgrStd); } - private static Context context(StreamManager streamMgr) - { + private static Context context(StreamManager streamMgr) { Context context = new Context(); context.put(SysRIOT.sysStreamManager, streamMgr); return context; @@ -121,31 +120,25 @@ public class TestStreamManager @Test public void fm_read_14() { read("file:D.rj"); } @Test public void fm_read_15() { read("file:D.jsonld"); } - // TriG - // NQuads - - private static void open(StreamManager streamMgr, String dataName, Context context) - { + private static void open(StreamManager streamMgr, String dataName, Context context) { + StreamManager sMgr = StreamManager.get(); StreamManager.setGlobal(streamMgr); - try { - TypedInputStream in = RDFDataMgr.open(dataName, StreamManager.get(context)); + try (TypedInputStream in = RDFDataMgr.open(dataName, StreamManager.get(context))) { assertNotNull(in); IO.close(in); } finally { - StreamManager.setGlobal(streamMgrStd); + StreamManager.setGlobal(sMgr); } } - private static void read(String dataName) - { + private static void read(String dataName) { try { StreamManager.setGlobal(streamMgrDir); Model m = ModelFactory.createDefaultModel(); RDFDataMgr.read(m, dataName); - assertNotEquals(0, m.size(),()->"Read "+dataName); + assertNotEquals(0, m.size(), () -> "Read " + dataName); } finally { StreamManager.setGlobal(streamMgrStd); } } } -
