summaryrefslogtreecommitdiff
path: root/test/tests/bugzilla/BugzillaNodeInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/tests/bugzilla/BugzillaNodeInfo.java')
-rw-r--r--test/tests/bugzilla/BugzillaNodeInfo.java165
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
+