diff options
Diffstat (limited to 'test/tests/bugzilla/BugzillaNodeInfo.java')
-rw-r--r-- | test/tests/bugzilla/BugzillaNodeInfo.java | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/test/tests/bugzilla/BugzillaNodeInfo.java b/test/tests/bugzilla/BugzillaNodeInfo.java new file mode 100644 index 0000000..6056af6 --- /dev/null +++ b/test/tests/bugzilla/BugzillaNodeInfo.java @@ -0,0 +1,165 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +// Common Qetest / Xalan testing imports +import org.apache.qetest.Datalet; +import org.apache.qetest.Logger; +import org.apache.qetest.TestletImpl; +import org.apache.qetest.CheckService; +import org.apache.qetest.xsl.XHTFileCheckService; + +import org.apache.xalan.processor.TransformerFactoryImpl; +import org.apache.xalan.transformer.TransformerImpl; +import org.apache.xalan.transformer.XalanProperties; +import javax.xml.transform.*; +import javax.xml.transform.stream.*; + +import java.io.File; +import java.io.FileReader; +import java.io.BufferedReader; +import java.io.IOException; + +/** + * Custom Testlet for testing NodeInfo extension. + * + * @author shane_curcuru@us.ibm.com + */ +public class BugzillaNodeInfo extends TestletImpl +{ + // Initialize our classname for TestletImpl's main() method - must be updated! + static { thisClassName = "BugzillaNodeInfo"; } + + /** + * Write Minimal code to reproduce your Bugzilla bug report. + * Many Bugzilla tests won't bother with a datalet; they'll + * just have the data to reproduce the bug encoded by default. + * @param d (optional) Datalet to use as data point for the test. + */ + public void execute(Datalet d) + { + // Use logger.logMsg(...) instead of System.out.println(...) + logger.logMsg(Logger.STATUSMSG, getDescription()); + + String xslName = "BugzillaNodeInfo.xsl"; + String xmlName = "BugzillaNodeInfo.xml"; + String outputName = "BugzillaNodeInfo.output"; + String goldName = "BugzillaNodeInfo.gold"; + try + { + TransformerFactory factory = TransformerFactory.newInstance(); + // Must set on both the factory impl.. + TransformerFactoryImpl factoryImpl = (TransformerFactoryImpl)factory; + factoryImpl.setAttribute(XalanProperties.SOURCE_LOCATION, Boolean.TRUE); + + Transformer transformer = factory.newTransformer(new StreamSource(xslName)); + // ..and the transformer impl + TransformerImpl impl = ((TransformerImpl) transformer); + impl.setProperty(XalanProperties.SOURCE_LOCATION, Boolean.TRUE); + transformer.transform(new StreamSource(xmlName), + new StreamResult(outputName)); + } + catch (Throwable t) + { + logger.logThrowable(logger.ERRORMSG, t, "Unexpectedly threw"); + logger.checkErr("Unexpectedly threw: " + t.toString()); + return; + } + + // CheckService fileChecker = new XHTFileCheckService(); + // fileChecker.check(logger, + // new File(outputName), + // new File(goldName), + // getDescription()); + // Since the gold data isn't nailed down yet, do a simple validation + // Just ensure the systemId of the xml file was included somewhere in the file + checkFileContains(outputName, xmlName, "NodeInfo got partial systemID correct"); + } + + + /** + * Checks and reports if a file contains a certain string + * (all within one line). + * + * @param fName local path/name of file to check + * @param checkStr String to look for in the file + * @param comment to log with the check() call + * @return true if pass, false otherwise + */ + protected boolean checkFileContains(String fName, String checkStr, + String comment) + { + boolean passFail = false; + File f = new File(fName); + + if (!f.exists()) + { + logger.checkFail("checkFileContains(" + fName + + ") does not exist: " + comment); + return false; + } + + try + { + FileReader fr = new FileReader(f); + BufferedReader br = new BufferedReader(fr); + + for (;;) + { + String inbuf = br.readLine(); + if (inbuf == null) + break; + + if (inbuf.indexOf(checkStr) >= 0) + { + passFail = true; + logger.logMsg(logger.TRACEMSG, + "checkFileContains passes with line: " + inbuf); + break; + } + } + } + catch (IOException ioe) + { + logger.checkFail("checkFileContains(" + fName + ") threw: " + + ioe.toString() + " for: " + comment); + + return false; + } + + if (passFail) + { + logger.checkPass(comment); + } + else + { + logger.logMsg(logger.ERRORMSG, "checkFileContains failed to find: " + checkStr); + logger.checkFail(comment); + } + return passFail; + } + + + /** + * @return Xalan custom extension NodeInfo. + */ + public String getDescription() + { + return "Xalan custom extension NodeInfo"; + } + +} // end of class BugzillaNodeInfo + |