curcuru 01/10/29 07:21:44
Modified: test/java/src/org/apache/qetest/xsl XHTFileCheckService.java
Log:
Centralize logFileCheckElem into worker method; always call in the same manner
Revision Changes Path
1.8 +68 -34
xml-xalan/test/java/src/org/apache/qetest/xsl/XHTFileCheckService.java
Index: XHTFileCheckService.java
===================================================================
RCS file:
/home/cvs/xml-xalan/test/java/src/org/apache/qetest/xsl/XHTFileCheckService.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- XHTFileCheckService.java 2001/08/20 13:58:38 1.7
+++ XHTFileCheckService.java 2001/10/29 15:21:44 1.8
@@ -75,7 +75,7 @@
* Uses an XML/HTML/Text diff comparator to check or diff two files.
* @see #check(Logger logger, Object actual, Object reference, String msg,
String id)
* @author [EMAIL PROTECTED]
- * @version $Id: XHTFileCheckService.java,v 1.7 2001/08/20 13:58:38 curcuru
Exp $
+ * @version $Id: XHTFileCheckService.java,v 1.8 2001/10/29 15:21:44 curcuru
Exp $
*/
public class XHTFileCheckService implements CheckService
{
@@ -127,16 +127,21 @@
sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
+ if (((null == actual) || (null == reference )))
+ {
+ pw.println("XHTFileCheckService actual or reference was null!");
+ pw.flush();
+ logFileCheckElem(logger, "null", "null", msg, id, sw.toString());
+ logger.checkErr(msg, id);
+ return logger.ERRR_RESULT;
+ }
if (!((actual instanceof File) & (reference instanceof File)))
{
-
// Must have File objects to continue
- logger.checkErr("XHTFileCheckService only takes files, with: "
- + msg, id);
- pw.println("XHTFileCheckService only takes files, with: " + msg);
- pw.println(" actual: " + actual);
- pw.println("reference: " + reference);
+ pw.println("XHTFileCheckService only takes File objects!");
pw.flush();
+ logFileCheckElem(logger, actual.toString(),
reference.toString(), msg, id, sw.toString());
+ logger.checkErr(msg, id);
return logger.ERRR_RESULT;
}
@@ -146,10 +151,9 @@
// Fail if Actual file doesn't exist or is 0 len
if ((!actualFile.exists()) || (actualFile.length() == 0))
{
- String errMsg = "actual(" + actualFile.toString() + ") did not
exist or was 0 len";
- logger.logMsg(Logger.WARNINGMSG, errMsg);
- pw.println(errMsg);
+ pw.println("actual(" + actualFile.toString() + ") did not exist
or was 0 len");
pw.flush();
+ logFileCheckElem(logger, actualFile.toString(),
referenceFile.toString(), msg, id, sw.toString());
logger.checkFail(msg, id);
return logger.FAIL_RESULT;
}
@@ -157,10 +161,9 @@
// Ambiguous if gold file doesn't exist or is 0 len
if ((!referenceFile.exists()) || (referenceFile.length() == 0))
{
- String errMsg = "reference(" + referenceFile.toString() + ") did
not exist or was 0 len";
- logger.logMsg(Logger.WARNINGMSG, errMsg);
- pw.println(errMsg);
+ pw.println("reference(" + referenceFile.toString() + ") did not
exist or was 0 len");
pw.flush();
+ logFileCheckElem(logger, actualFile.toString(),
referenceFile.toString(), msg, id, sw.toString());
logger.checkAmbiguous(msg, id);
return Logger.AMBG_RESULT;
}
@@ -171,44 +174,31 @@
try
{
-
// Note calling order (gold, act) is different than checkFiles()
isEqual = comparator.compare(referenceFile.getCanonicalPath(),
actualFile.getCanonicalPath(), pw,
warning);
-
// Side effect: fills in pw/sw with info about the comparison
}
catch (Throwable t)
{
- // Add any exception info to pw/sw
- logger.logThrowable(Logger.ERRORMSG, t, "XHTFileCheckService
threw");
+ // Add any exception info to pw/sw; this will automatically
+ // get logged out later on via logFileCheckElem
pw.println("XHTFileCheckService threw: " + t.toString());
t.printStackTrace(pw);
isEqual = false;
}
+ // If not equal at all, fail
if (!isEqual)
{
pw.println("XHTFileCheckService files were not equal");
pw.flush();
- // We fail, obviously! Bunch up info for logging
- // a special element about fail
- Hashtable attrs = new Hashtable();
- attrs.put("actual", actualFile.toString());
- attrs.put("reference", referenceFile.toString());
- attrs.put("reportedBy", "XHTFileCheckService");
- String elementBody = msg + "(" + id + ") \n" + sw.toString();
- // HACK: escapeString(elementBody) so that it's legal XML
- // for cases where we have XML output. This isn't
- // necessarily a 'hack', I'm just not sure what the
- // cleanest place to put this is (here or some sort
- // of intelligent logic in XMLFileLogger)
- elementBody = XMLFileLogger.escapeString(elementBody);
- logger.logElement(Logger.STATUSMSG, "fileCheck", attrs,
elementBody);
+ logFileCheckElem(logger, actualFile.toString(),
referenceFile.toString(), msg, id, sw.toString());
logger.checkFail(msg, id);
return Logger.FAIL_RESULT;
}
+ // If whitespace-only diffs, then pass/fail based on
allowWhitespaceDiff
else if (warning[0])
{
pw.println("XHTFileCheckService whitespace diff warning!");
@@ -221,19 +211,63 @@
}
else
{
- logger.logMsg(Logger.TRACEMSG, "XHTFileCheckService
whitespace diff warning, failing!");
+ logFileCheckElem(logger, actualFile.toString(),
referenceFile.toString(), msg, id,
+ "XHTFileCheckService whitespace diff warning,
failing!\n" + sw.toString());
logger.checkFail(msg, id);
return Logger.FAIL_RESULT;
}
}
+ // Otherwise we were completely equal, so pass
else
{
- logger.checkPass(msg, id);
pw.println("XHTFileCheckService files were equal");
pw.flush();
-
+ // For pass case, we *dont* call logFileCheckElem
+ logger.checkPass(msg, id);
return Logger.PASS_RESULT;
}
+ }
+
+ /**
+ * Logs a custom element about the current check() call.
+ * <pre>
+ * <fileCheck level="40"
+ * reference="tests\conf-gold\match\match16.out"
+ * reportedBy="XHTFileCheckService"
+ * actual="results-alltest\dom\match\match16.out"
+ * >
+ * StylesheetTestlet match16.xsl(null)
+ * XHTFileCheckService threw: java.io.IOException: The process cannot
access the file because it is being used by another process
+ * java.io.IOException: The process cannot access the file because it is
being used by another process
+ * at java.io.Win32FileSystem.canonicalize(Native Method)
+ * etc...
+ * XHTFileCheckService files were not equal
+ *
+ * </fileCheck>
+ * </pre>
+ * @param logger to dump any output messages to
+ * @param name of actual (current) File to check
+ * @param name of reference (gold, or expected) File to check against
+ * @param msg comment to log out with this test point
+ * @param id to log out with this test point
+ * @param additional log info from PrintWriter/StringWriter
+ */
+ protected void logFileCheckElem(Logger logger,
+ String actualFile, String referenceFile,
+ String msg, String id, String logs)
+ {
+ Hashtable attrs = new Hashtable();
+ attrs.put("actual", actualFile);
+ attrs.put("reference", referenceFile);
+ attrs.put("reportedBy", "XHTFileCheckService");
+ String elementBody = msg + "(" + id + ") \n" + logs;
+ // HACK: escapeString(elementBody) so that it's legal XML
+ // for cases where we have XML output. This isn't
+ // necessarily a 'hack', I'm just not sure what the
+ // cleanest place to put this is (here or some sort
+ // of intelligent logic in XMLFileLogger)
+ elementBody = XMLFileLogger.escapeString(elementBody);
+ logger.logElement(Logger.STATUSMSG, "fileCheck", attrs, elementBody);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]