curcuru 01/10/09 07:02:37
Modified: test/java/src/org/apache/qetest/trax ErrorListenerTest.java
test/java/src/org/apache/qetest/xalanj2
SmoketestOuttakes.java
Log:
Moved several tests from ErrorListenerTest to SmoketestOuttakes so
we can include the former in the daily smoketest
Revision Changes Path
1.5 +28 -23
xml-xalan/test/java/src/org/apache/qetest/trax/ErrorListenerTest.java
Index: ErrorListenerTest.java
===================================================================
RCS file:
/home/cvs/xml-xalan/test/java/src/org/apache/qetest/trax/ErrorListenerTest.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ErrorListenerTest.java 2001/09/27 10:33:08 1.4
+++ ErrorListenerTest.java 2001/10/09 14:02:36 1.5
@@ -89,8 +89,17 @@
/**
* Verify that ErrorListeners are called properly from Transformers.
+ * Also verifies basic Transformer behavior after a stylesheet
+ * with errors has been built.
+ * Note: parts of this test may rely on specific Xalan functionality,
+ * in that with the specific errors I've chosen, Xalan can actually
+ * continue to process the stylesheet, even though it had an error.
+ * XSLTC mode may either throw slighly different kinds of errors, or
+ * may not be able to continue after the error (we should
+ * investigate changing this test to just verify common things,
+ * and then check the rest into the xalanj2 directory).
* @author [EMAIL PROTECTED]
- * @version $Id: ErrorListenerTest.java,v 1.4 2001/09/27 10:33:08 curcuru
Exp $
+ * @version $Id: ErrorListenerTest.java,v 1.5 2001/10/09 14:02:36 curcuru
Exp $
*/
public class ErrorListenerTest extends XSLProcessorTestBase
{
@@ -240,14 +249,10 @@
// Validate the actual output file as well: in this case,
// the stylesheet should still work
- if (Logger.PASS_RESULT
- != fileChecker.check(reporter,
+ fileChecker.check(reporter,
new File(outNames.currentName()),
new File(testFileInfo.goldName),
- "transform of error xsl into: " + outNames.currentName())
- )
- reporter.logInfoMsg("transform of error xsl failure reason:"
+ fileChecker.getExtendedInfo());
-
+ "transform of error xsl into: " +
outNames.currentName());
}
catch (Throwable t)
{
@@ -331,13 +336,13 @@
// Validate the actual output file as well: in this case,
// the stylesheet should still work
- if (Logger.PASS_RESULT
- != fileChecker.check(reporter,
+ reporter.logErrorMsg("Output file validation Moved to
SmoketestOuttakes.java.testCase3 Oct-01 -sc Bugzilla#4044");
+/* **** Moved to SmoketestOuttakes.java.testCase3 Oct-01 -sc
+ fileChecker.check(reporter,
new File(outNames.currentName()),
new File(testFileInfo.goldName),
- "SAX transform of error xsl into: " +
outNames.currentName())
- )
- reporter.logInfoMsg("SAX transform of error xsl failure
reason:" + fileChecker.getExtendedInfo());
+ "SAX transform of error xsl into: " +
outNames.currentName());
+**** Moved to SmoketestOuttakes.java.testCase3 Oct-01 -sc **** */
}
catch (Throwable t)
@@ -400,6 +405,9 @@
// were detected during it's building. Note that
// future versions of Xalan or other processors may
// not be able to continue here...
+ reporter.logErrorMsg("DOM templates/validation Moved to
SmoketestOuttakes.java.testCase3 Oct-01 -sc Bugzilla#1062");
+/* **** Moved to SmoketestOuttakes.java.testCase4 Oct-01 -sc
+
transformer = templates.newTransformer();
reporter.logTraceMsg("default transformer's getErrorListener is:
" + transformer.getErrorListener());
@@ -420,13 +428,11 @@
// Validate the actual output file as well: in this case,
// the stylesheet should still work
- if (Logger.PASS_RESULT
- != fileChecker.check(reporter,
+ fileChecker.check(reporter,
new File(outNames.currentName()),
new File(testFileInfo.goldName),
- "DOM transform of error xsl into: " +
outNames.currentName())
- )
- reporter.logInfoMsg("DOM transform of error xsl failure
reason:" + fileChecker.getExtendedInfo());
+ "DOM transform of error xsl into: " +
outNames.currentName());
+**** Moved to SmoketestOuttakes.java.testCase4 Oct-01 -sc **** */
}
catch (Throwable t)
@@ -480,18 +486,17 @@
// Validate that one warning (about illegal-encoding-value)
should have been reported
int[] errCtr = loggingErrorListener.getCounters();
+ reporter.logErrorMsg("Validation of warning throw Moved to
Bugzilla1266.java Oct-01 -sc");
+/* **** Moved to Bugzilla1266.java Oct-01 -sc
reporter.check((errCtr[LoggingErrorListener.TYPE_WARNING] > 0),
true, "At least one Warning listned to for illegal-encoding-value");
+**** Moved to Bugzilla1266.java Oct-01 -sc **** */
// Validate the actual output file as well: in this case,
// the stylesheet should still work
- if (Logger.PASS_RESULT
- != fileChecker.check(reporter,
+ fileChecker.check(reporter,
new File(outNames.currentName()),
new File(goodFileInfo.goldName),
- "transform of good xsl w/bad output props into: " +
outNames.currentName())
- )
- reporter.logInfoMsg("transform of error xsl failure reason:"
+ fileChecker.getExtendedInfo());
-
+ "transform of good xsl w/bad output props into: " +
outNames.currentName());
}
catch (Throwable t)
{
1.2 +219 -7
xml-xalan/test/java/src/org/apache/qetest/xalanj2/SmoketestOuttakes.java
Index: SmoketestOuttakes.java
===================================================================
RCS file:
/home/cvs/xml-xalan/test/java/src/org/apache/qetest/xalanj2/SmoketestOuttakes.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SmoketestOuttakes.java 2001/06/28 01:47:16 1.1
+++ SmoketestOuttakes.java 2001/10/09 14:02:37 1.2
@@ -64,6 +64,7 @@
// Support for test reporting and harness classes
import org.apache.qetest.*;
+import org.apache.qetest.trax.*;
import org.apache.qetest.xsl.*;
// Import all relevant TRAX packages
@@ -78,9 +79,7 @@
import org.apache.xalan.templates.OutputProperties;
// Needed SAX, DOM, JAXP classes
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.*;
// Needed SAX classes
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -96,7 +95,6 @@
// Needed DOM classes
import org.w3c.dom.Node;
-
// java classes
import java.io.File;
import java.io.FileInputStream;
@@ -122,7 +120,7 @@
* due to recent changes you have made).
*
* @author [EMAIL PROTECTED]
- * @version $Id: SmoketestOuttakes.java,v 1.1 2001/06/28 01:47:16 curcuru
Exp $
+ * @version $Id: SmoketestOuttakes.java,v 1.2 2001/10/09 14:02:37 curcuru
Exp $
*/
public class SmoketestOuttakes extends XSLProcessorTestBase
{
@@ -134,7 +132,7 @@
/** Just initialize test name, comment, numTestCases. */
public SmoketestOuttakes()
{
- numTestCases = 2; // REPLACE_num
+ numTestCases = 4; // REPLACE_num
testName = "SmoketestOuttakes";
testComment = "Individual test points taken out of other automation
files";
}
@@ -376,7 +374,8 @@
/**
- * Serialize a node to System.out.
+ * Serialize a node to System.out;
+ * used in ExamplesTest; testCase1, testCase2 above
*/
public void exampleSerializeNode(Node node)
throws TransformerException, TransformerConfigurationException,
@@ -395,6 +394,219 @@
reporter.logStatusMsg("Test-output-to: new StreamResult(" +
outNames.currentName());
// TEST UPDATE - Caller must validate outNames.currentName()
}
+
+
+ /**
+ * From ErrorListenerTest.java testCase2
+ * Build a bad stylesheet/do a transform with SAX.
+ * Verify that the ErrorListener is called properly.
+ * Primarily using SAXSources.
+ * @return false if we should abort the test; true otherwise
+ */
+ public boolean testCase3()
+ {
+ reporter.testCaseInit("Build a bad stylesheet/do a transform with
SAX");
+ XSLTestfileInfo testFileInfo = new XSLTestfileInfo();
+ testFileInfo.inputName = inputDir
+ + File.separator
+ + "err"
+ + File.separator + "ErrorListenerTest.xsl";
+ testFileInfo.xmlName = inputDir
+ + File.separator
+ + "err"
+ + File.separator + "ErrorListenerTest.xml";
+ testFileInfo.goldName = goldDir
+ + File.separator
+ + "err"
+ + File.separator + "ErrorListenerTest.out";
+ int templatesExpectedType = LoggingErrorListener.TYPE_FATALERROR;
+ String templatesExpectedValue = "decimal-format names must be
unique. Name \"myminus\" has been duplicated";
+ int transformExpectedType = LoggingErrorListener.TYPE_WARNING;
+ String transformExpectedValue = "ExpectedMessage from:list1";
+
+
+ LoggingErrorListener loggingErrorListener = new
LoggingErrorListener(reporter);
+ loggingErrorListener.setThrowWhen(LoggingErrorListener.THROW_NEVER);
+ reporter.logTraceMsg("loggingErrorListener originally setup:" +
loggingErrorListener.getQuickCounters());
+
+ TransformerFactory factory = null;
+ SAXTransformerFactory saxFactory = null;
+ XMLReader reader = null;
+ Templates templates = null;
+ Transformer transformer = null;
+ TransformerHandler handler = null;
+ try
+ {
+ factory = TransformerFactory.newInstance();
+ saxFactory = (SAXTransformerFactory)factory; // assumes
SAXSource.feature!
+
+ // Set the errorListener and validate it
+ saxFactory.setErrorListener(loggingErrorListener);
+ reporter.check((saxFactory.getErrorListener() ==
loggingErrorListener),
+ true, "set/getErrorListener on saxFactory");
+
+ // Use the JAXP way to get an XMLReader
+ reader =
SAXParserFactory.newInstance().newSAXParser().getXMLReader();
+ InputSource is = new
InputSource(QetestUtils.filenameToURL(testFileInfo.inputName));
+
+ // Attempt to build templates from known-bad stylesheet
+ // Validate known errors in stylesheet building
+ loggingErrorListener.setExpected(templatesExpectedType,
+ templatesExpectedValue);
+ reporter.logTraceMsg("About to
factory.newTransformerHandler(SAX:" +
QetestUtils.filenameToURL(testFileInfo.inputName) + ")");
+ handler = saxFactory.newTransformerHandler(new SAXSource(is));
+ reporter.logTraceMsg("loggingErrorListener after
newTransformerHandler:" + loggingErrorListener.getQuickCounters());
+ // Clear out any setExpected or counters
+ loggingErrorListener.reset();
+ reporter.checkPass("set ErrorListener prevented any exceptions
in newTransformerHandler()");
+
+ // This stylesheet will still work, even though errors
+ // were detected during it's building. Note that
+ // future versions of Xalan or other processors may
+ // not be able to continue here...
+
+ // Create a result and setup SAX parsing 'tree'
+ Result result = new StreamResult(outNames.nextName());
+ handler.setResult(result);
+ reader.setContentHandler(handler);
+
+ LoggingSAXErrorHandler loggingSAXErrorHandler = new
LoggingSAXErrorHandler(reporter);
+
loggingSAXErrorHandler.setThrowWhen(LoggingSAXErrorHandler.THROW_NEVER);
+ reporter.logTraceMsg("LoggingSAXErrorHandler originally setup:"
+ loggingSAXErrorHandler.getQuickCounters());
+ reader.setErrorHandler(loggingSAXErrorHandler);
+
+ // Validate the first xsl:message call in the stylesheet
+ loggingErrorListener.setExpected(transformExpectedType,
+ transformExpectedValue);
+ reporter.logInfoMsg("about to parse/transform(" +
QetestUtils.filenameToURL(testFileInfo.xmlName) + ")");
+ reader.parse(QetestUtils.filenameToURL(testFileInfo.xmlName));
+ reporter.logTraceMsg("LoggingSAXErrorHandler after parse:" +
loggingSAXErrorHandler.getQuickCounters());
+ // Clear out any setExpected or counters
+ loggingErrorListener.reset();
+ loggingSAXErrorHandler.reset();
+
+ // Validate the actual output file as well: in this case,
+ // the stylesheet should still work
+ fileChecker.check(reporter,
+ new File(outNames.currentName()),
+ new File(testFileInfo.goldName),
+ "Bugzilla#4044 SAX transform of error xsl into: " +
outNames.currentName());
+ }
+ catch (Throwable t)
+ {
+ reporter.checkFail("errorListener-SAX unexpectedly threw: " +
t.toString());
+ reporter.logThrowable(Logger.ERRORMSG, t, "errorListener-SAX
unexpectedly threw");
+ }
+
+ reporter.testCaseClose();
+ return true;
+ }
+
+
+ /**
+ * From ErrorListenerTest.java testCase3
+ * Build a bad stylesheet/do a transform with DOMs.
+ * Verify that the ErrorListener is called properly.
+ * Primarily using DOMSources.
+ * @return false if we should abort the test; true otherwise
+ */
+ public boolean testCase4()
+ {
+ reporter.testCaseInit("Build a bad stylesheet/do a transform with
DOMs");
+ XSLTestfileInfo testFileInfo = new XSLTestfileInfo();
+ testFileInfo.inputName = inputDir
+ + File.separator
+ + "err"
+ + File.separator + "ErrorListenerTest.xsl";
+ testFileInfo.xmlName = inputDir
+ + File.separator
+ + "err"
+ + File.separator + "ErrorListenerTest.xml";
+ testFileInfo.goldName = goldDir
+ + File.separator
+ + "err"
+ + File.separator + "ErrorListenerTest.out";
+ int templatesExpectedType = LoggingErrorListener.TYPE_FATALERROR;
+ String templatesExpectedValue = "decimal-format names must be
unique. Name \"myminus\" has been duplicated";
+ int transformExpectedType = LoggingErrorListener.TYPE_WARNING;
+ String transformExpectedValue = "ExpectedMessage from:list1";
+
+ LoggingErrorListener loggingErrorListener = new
LoggingErrorListener(reporter);
+ loggingErrorListener.setThrowWhen(LoggingErrorListener.THROW_NEVER);
+ reporter.logTraceMsg("loggingErrorListener originally setup:" +
loggingErrorListener.getQuickCounters());
+
+ TransformerFactory factory = null;
+ Templates templates = null;
+ Transformer transformer = null;
+ DocumentBuilderFactory dfactory = null;
+ DocumentBuilder docBuilder = null;
+ Node xmlNode = null;
+ Node xslNode = null;
+ try
+ {
+ // Startup a DOM factory, create some nodes/DOMs
+ dfactory = DocumentBuilderFactory.newInstance();
+ dfactory.setNamespaceAware(true);
+ docBuilder = dfactory.newDocumentBuilder();
+ reporter.logInfoMsg("parsing xml, xsl files to DOMs");
+ xslNode = docBuilder.parse(new
InputSource(QetestUtils.filenameToURL(testFileInfo.inputName)));
+ xmlNode = docBuilder.parse(new
InputSource(QetestUtils.filenameToURL(testFileInfo.xmlName)));
+
+ // Create a transformer factory with an error listener
+ factory = TransformerFactory.newInstance();
+ factory.setErrorListener(loggingErrorListener);
+
+ // Attempt to build templates from known-bad stylesheet
+ // Validate known errors in stylesheet building
+ loggingErrorListener.setExpected(templatesExpectedType,
+ templatesExpectedValue);
+ reporter.logTraceMsg("About to factory.newTemplates(DOM:" +
QetestUtils.filenameToURL(testFileInfo.inputName) + ")");
+ templates = factory.newTemplates(new DOMSource(xslNode));
+ reporter.logTraceMsg("loggingErrorListener after newTemplates:"
+ loggingErrorListener.getQuickCounters());
+ // Clear out any setExpected or counters
+ loggingErrorListener.reset();
+ reporter.checkPass("set ErrorListener prevented any exceptions
in newTemplates()");
+
+ // This stylesheet will still work, even though errors
+ // were detected during it's building. Note that
+ // future versions of Xalan or other processors may
+ // not be able to continue here...
+ reporter.logErrorMsg("Bugzilla#1062 throws NPE below at
templates.newTransformer()");
+ transformer = templates.newTransformer();
+
+ reporter.logTraceMsg("default transformer's getErrorListener is:
" + transformer.getErrorListener());
+ // Set the errorListener and validate it
+ transformer.setErrorListener(loggingErrorListener);
+ reporter.check((transformer.getErrorListener() ==
loggingErrorListener),
+ true, "set/getErrorListener on transformer");
+
+ // Validate the first xsl:message call in the stylesheet
+ loggingErrorListener.setExpected(transformExpectedType,
+ transformExpectedValue);
+ reporter.logInfoMsg("about to transform(DOM, StreamResult)");
+ transformer.transform(new DOMSource(xmlNode),
+ new StreamResult(outNames.nextName()));
+ reporter.logTraceMsg("after transform(...)");
+ // Clear out any setExpected or counters
+ loggingErrorListener.reset();
+
+ // Validate the actual output file as well: in this case,
+ // the stylesheet should still work
+ fileChecker.check(reporter,
+ new File(outNames.currentName()),
+ new File(testFileInfo.goldName),
+ "DOM transform of error xsl into: " +
outNames.currentName());
+
+ }
+ catch (Throwable t)
+ {
+ reporter.checkFail("errorListener-DOM unexpectedly threw: " +
t.toString());
+ reporter.logThrowable(Logger.ERRORMSG, t, "errorListener-DOM
unexpectedly threw");
+ }
+
+ reporter.testCaseClose();
+ return true;
+ }
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]