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 a9d93b10129f22766627c22a7c583f61db0b3dd4 Author: Andy Seaborne <[email protected]> AuthorDate: Wed Dec 10 13:29:07 2025 +0000 Be robust in diagnostic output --- .../java/org/apache/jena/arq/junit/LibTest.java | 13 ++++++-- .../arq/junit/sparql/tests/QuerySyntaxTest.java | 14 +++----- .../jena/arq/junit/sparql/tests/SparqlTestLib.java | 21 +++++++----- .../arq/junit/sparql/tests/UpdateSyntaxTest.java | 39 ++++++++++++---------- .../java/org/apache/jena/atlas/lib/IRILib.java | 2 +- 5 files changed, 48 insertions(+), 41 deletions(-) diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/LibTest.java b/jena-arq/src/test/java/org/apache/jena/arq/junit/LibTest.java index f54c730018..59e51a40b8 100644 --- a/jena-arq/src/test/java/org/apache/jena/arq/junit/LibTest.java +++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/LibTest.java @@ -20,6 +20,7 @@ package org.apache.jena.arq.junit; import org.apache.jena.atlas.io.IO; import org.apache.jena.atlas.lib.IRILib; +import org.apache.jena.http.HttpOp; public class LibTest { @@ -36,8 +37,14 @@ public class LibTest { /** Print a (small) file, with line numbers. The file is read into memory. */ public static void printFile(String filenameOrIRI) { - String filename = IRILib.IRIToFilename(filenameOrIRI); - String x = IO.readWholeFileAsUTF8(filename); - printString(x) ; + try { + String filename = IRILib.IRIToFilename(filenameOrIRI); + String x = IO.readWholeFileAsUTF8(filename); + printString(x) ; + } catch (RuntimeException ex) { + // Try HTTP + String x = HttpOp.httpGetString(filenameOrIRI); + printString(x) ; + } } } diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QuerySyntaxTest.java b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QuerySyntaxTest.java index 57b3e8a57f..7c0a2410ae 100644 --- a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QuerySyntaxTest.java +++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/QuerySyntaxTest.java @@ -46,29 +46,23 @@ public class QuerySyntaxTest extends AbstractManifestTest { try { Query query = SparqlTestLib.queryFromEntry(manifestEntry, testSyntax); if ( !expectLegalSyntax ) { - String filename = SparqlTestLib.queryFile(manifestEntry); - System.out.printf("==== %s\n", "Negative Syntax test"); + String filename = SparqlTestLib.getAction(manifestEntry); + System.out.printf("==== %s\n", "Negative syntax test"); LibTest.printFile(filename); fail("Expected parse failure"); } } catch (QueryException qEx) { if ( expectLegalSyntax ) { - // Development - // System.err.println("AssertionError: "+super.manifestEntry.getURI()+" type="+manifestEntry.getTestType()); - String filename = SparqlTestLib.queryFile(manifestEntry); - System.out.printf("==== %s\n", "Positive Syntax test"); + String filename = SparqlTestLib.getAction(manifestEntry); + System.out.printf("==== %s\n", "Positive syntax test"); LibTest.printFile(filename); throw qEx; } } catch (AssertionError ex) { - // Development - // System.err.println("AssertionError: "+super.manifestEntry.getURI()+" type="+manifestEntry.getTestType()); throw ex; } catch (Exception ex) { ex.printStackTrace(); fail("Exception: " + ex.getClass().getName() + ": " + ex.getMessage()); } } - - } diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java index c6c80d4ecd..0af820b747 100644 --- a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java +++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/SparqlTestLib.java @@ -78,14 +78,19 @@ class SparqlTestLib { throw new TestSetupException("Not a string or URI for "+context+": "+node); } - static String queryFile(ManifestEntry entry) { + // For tests which directly have the action as a URi to a file. + static String getAction(ManifestEntry entry) { Graph graph = entry.getGraph(); - Node testResource = entry.getEntry(); - Node queryFile = G.getZeroOrOneSP(graph, testResource, VocabTestQuery.query.asNode()); - if ( queryFile != null ) - return getStringOrURI(queryFile, "query file"); + if ( entry.getAction().isBlank() ) + throw new TestSetupException("action :: Blank node where URI expected"); + return entry.getAction().getURI(); + } - // No query property - must be this action node + // Query string - either on the action or as [ qt:query ...] + static String queryFile(ManifestEntry entry) { + Graph graph = entry.getGraph(); + if ( entry.getAction().isURI() ) + return entry.getAction().getURI(); if ( entry.getAction().isBlank() ) { // action -> :query @@ -94,7 +99,7 @@ class SparqlTestLib { throw new TestSetupException("Can't determine the query from the action"); return x.getURI(); } - return entry.getAction().getURI(); + throw new TestSetupException("Can't determine the query. Not a blank node or a URI. "+entry.getAction()); } static Query queryFromEntry(ManifestEntry entry) { @@ -164,14 +169,12 @@ class SparqlTestLib { } static UpdateRequest updateFromEntry(ManifestEntry entry, Syntax syntax) { - if ( queryFile(entry) == null ) { SparqlTestLib.setupFailure("Query test file is null"); return null; } String fn = queryFile(entry); Syntax syn = (syntax!=null) ? syntax : guessFileSyntax(fn); - UpdateRequest request = UpdateFactory.read(fn, syn); return request; } diff --git a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/UpdateSyntaxTest.java b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/UpdateSyntaxTest.java index 643890db9f..e74e6f697d 100644 --- a/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/UpdateSyntaxTest.java +++ b/jena-arq/src/test/java/org/apache/jena/arq/junit/sparql/tests/UpdateSyntaxTest.java @@ -20,14 +20,12 @@ package org.apache.jena.arq.junit.sparql.tests; import static org.junit.jupiter.api.Assertions.fail; +import org.apache.jena.arq.junit.LibTest; import org.apache.jena.arq.junit.manifest.AbstractManifestTest; import org.apache.jena.arq.junit.manifest.ManifestEntry; -import org.apache.jena.query.QueryException ; import org.apache.jena.query.Syntax; -public class UpdateSyntaxTest extends AbstractManifestTest -{ - static int count = 0 ; +public class UpdateSyntaxTest extends AbstractManifestTest { final boolean expectLegalSyntax ; final Syntax testSyntax; @@ -38,22 +36,27 @@ public class UpdateSyntaxTest extends AbstractManifestTest } @Override - public void runTest() - { + public void runTest() { try { SparqlTestLib.updateFromEntry(manifestEntry, testSyntax) ; - if ( ! expectLegalSyntax ) - fail("Expected parse failure") ; - } - catch (QueryException qEx) - { - if ( expectLegalSyntax ) - throw qEx ; - } - - catch (Exception ex) - { - fail( "Exception: "+ex.getClass().getName()+": "+ex.getMessage()) ; + if ( ! expectLegalSyntax ) { + String filename = SparqlTestLib.getAction(manifestEntry); + System.out.printf("==== %s\n", "Negative update syntax test"); + LibTest.printFile(filename); + fail("Expected parse failure"); + } + } catch (RuntimeException ex) { + if ( expectLegalSyntax ) { + String filename = SparqlTestLib.getAction(manifestEntry); + System.out.printf("==== %s\n", "Positive update syntax test"); + LibTest.printFile(filename); + throw ex; + } + } catch (AssertionError ex) { + throw ex; + } catch (Exception ex) { + ex.printStackTrace(); + fail("Exception: " + ex.getClass().getName() + ": " + ex.getMessage()); } } } diff --git a/jena-base/src/main/java/org/apache/jena/atlas/lib/IRILib.java b/jena-base/src/main/java/org/apache/jena/atlas/lib/IRILib.java index 12451448bf..e465f09b95 100644 --- a/jena-base/src/main/java/org/apache/jena/atlas/lib/IRILib.java +++ b/jena-base/src/main/java/org/apache/jena/atlas/lib/IRILib.java @@ -172,7 +172,7 @@ public class IRILib /** Convert a file: IRI to a filename */ public static String IRIToFilename(String iri) { - if ( ! isFilename("file:") ) + if ( ! isFilename(iri) ) throw new AtlasException("Not a file: URI: "+iri); String fn;
