gmazza 2005/01/30 13:59:29 Modified: examples/fo build.xml src/java/org/apache/fop/tools TestConverter.java src/java/org/apache/fop/tools/anttasks RunTest.java Added: src/java/org/apache/fop/tools/anttasks FileCompare.java Removed: src/java/org/apache/fop/tools/anttasks Compare.java Log: Altered TestConverter to use FileCompare's file comparison logic. Renamed Compare to FileCompare. Simplified logger implementation in TestConverter. Revision Changes Path 1.6 +1 -1 xml-fop/examples/fo/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/xml-fop/examples/fo/build.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- build.xml 22 Nov 2003 19:49:29 -0000 1.5 +++ build.xml 30 Jan 2005 21:59:29 -0000 1.6 @@ -17,7 +17,7 @@ <pathelement location="../../build/fop.jar"/> </path> <taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop" classpathref="run-classpath"/> - <taskdef name="compare" classname="org.apache.fop.tools.anttasks.Compare" classpathref="run-classpath"/> + <taskdef name="compare" classname="org.apache.fop.tools.anttasks.FileCompare" classpathref="run-classpath"/> </target> <!-- =================================================================== --> <!-- Help on usage --> 1.24 +12 -46 xml-fop/src/java/org/apache/fop/tools/TestConverter.java Index: TestConverter.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/tools/TestConverter.java,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- TestConverter.java 28 Sep 2004 10:56:18 -0000 1.23 +++ TestConverter.java 30 Jan 2005 21:59:29 -0000 1.24 @@ -29,11 +29,11 @@ import org.apache.fop.apps.Fop; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.apps.InputHandler; +import org.apache.fop.tools.anttasks.FileCompare; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; -import org.apache.commons.logging.Log; import org.apache.commons.logging.impl.SimpleLog; @@ -60,24 +60,7 @@ /** * logging instance */ - protected Log logger = null; - - - /** - * Sets the Commons-Logging instance for this class - * @param logger The Commons-Logging instance - */ - public void setLogger(Log logger) { - this.logger = logger; - } - - /** - * Returns the Commons-Logging instance for this class - * @return The Commons-Logging instance - */ - protected Log getLogger() { - return logger; - } + protected SimpleLog logger = null; /** * This main method can be used to run the test converter from @@ -128,9 +111,8 @@ * Construct a new TestConverter */ public TestConverter() { - SimpleLog log = new SimpleLog("FOP/Test"); - log.setLevel(SimpleLog.LOG_LEVEL_ERROR); - setLogger(log); + logger = new SimpleLog("FOP/Test"); + logger.setLevel(SimpleLog.LOG_LEVEL_ERROR); } /** @@ -159,14 +141,14 @@ } /** - * Controls whether to generate PDF or XML. - * @param pdf If True, PDF is generated, Area Tree XML otherwise. + * Controls whether to set logging to debug level + * @param If true, debug level, if false, error level */ public void setDebug(boolean debug) { if (debug) { - SimpleLog log = new SimpleLog("FOP/Test"); - log.setLevel(SimpleLog.LOG_LEVEL_DEBUG); - setLogger(log); + logger.setLevel(SimpleLog.LOG_LEVEL_DEBUG); + } else { + logger.setLevel(SimpleLog.LOG_LEVEL_ERROR); } } @@ -338,7 +320,7 @@ } } } catch (Exception e) { - getLogger().error("Error while running tests", e); + logger.error("Error while running tests", e); } } @@ -364,28 +346,12 @@ * @return true if equal */ protected boolean compareFiles(File f1, File f2) { - if (f1.length() != f2.length()) { - return false; - } try { - InputStream is1 = new java.io.BufferedInputStream(new java.io.FileInputStream(f1)); - InputStream is2 = new java.io.BufferedInputStream(new java.io.FileInputStream(f2)); - while (true) { - int ch1 = is1.read(); - int ch2 = is2.read(); - if (ch1 == ch2) { - if (ch1 == -1) { - return true; - } - } else { - return false; - } - } + return FileCompare.compareFiles(f1, f2); } catch (Exception e) { logger.error("Error while comparing files", e); + return false; } - - return false; } private Node locateResult(Node testcase, String id) { 1.4 +5 -3 xml-fop/src/java/org/apache/fop/tools/anttasks/RunTest.java Index: RunTest.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/tools/anttasks/RunTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- RunTest.java 27 Feb 2004 17:56:04 -0000 1.3 +++ RunTest.java 30 Jan 2005 21:59:29 -0000 1.4 @@ -37,8 +37,8 @@ /** * Testing ant task. * This task is used to test FOP as a build target. - * This uses the TestConverter (with weak code dependancy) to run the tests - * and check the results. + * This uses the TestConverter (with weak code dependency) + * to run the tests and check the results. */ public class RunTest extends Task { @@ -144,7 +144,7 @@ boolean failed = false; try { - Class cla = Class.forName("org.apache.fop.apps.Version", true, + Class cla = Class.forName("org.apache.fop.apps.Fop", true, loader); Method get = cla.getMethod("getVersion", new Class[]{}); if (!get.invoke(null, new Object[]{}).equals(refVersion)) { @@ -180,6 +180,8 @@ * This loads the TestConverter using the class loader and * then runs the test suite for the current test suite * file in the base directory. + * (Note class loader option provided to allow for different + * fop.jar and other libraries to be activated.) * @param loader the class loader to use to run the tests with * @param dest destination directory * @param compDir comparison directory 1.1 xml-fop/src/java/org/apache/fop/tools/anttasks/FileCompare.java Index: FileCompare.java =================================================================== /* * Copyright 1999-2004 The Apache Software Foundation. * * Licensed 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. */ /* $Id: FileCompare.java,v 1.1 2005/01/30 21:59:29 gmazza Exp $ */ package org.apache.fop.tools.anttasks; import java.util.Date; import java.util.List; import java.util.StringTokenizer; import java.io.BufferedInputStream; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import org.apache.tools.ant.BuildException; import java.text.DateFormat; /** * This class is an extension of Ant, a script utility from * http://ant.apache.org. * It provides methods to compare two files. */ public class FileCompare { private String referenceDirectory, testDirectory; private String[] filenameList; private String filenames; /** * Sets directory for test files. * @param testDirectory the test directory */ public void setTestDirectory(String testDirectory) { if (!(testDirectory.endsWith("/") | testDirectory.endsWith("\\"))) { testDirectory += File.separator; } this.testDirectory = testDirectory; } /** * Sets directory for reference files. * @param referenceDirectory the reference directory */ public void setReferenceDirectory(String referenceDirectory) { if (!(referenceDirectory.endsWith("/") | referenceDirectory.endsWith("\\"))) { referenceDirectory += File.separator; } this.referenceDirectory = referenceDirectory; } /** * Sets the comma-separated list of files to process. * @param filenames list of files, comma-separated */ public void setFilenames(String filenames) { StringTokenizer tokens = new StringTokenizer(filenames, ","); List filenameListTmp = new java.util.ArrayList(20); while (tokens.hasMoreTokens()) { filenameListTmp.add(tokens.nextToken()); } filenameList = new String[filenameListTmp.size()]; filenameList = (String[])filenameListTmp.toArray(new String[0]); } /** * Compares two files to see if they are equal * @param true if files are same, false otherwise */ public static boolean compareFiles(File f1, File f2) throws IOException { return (compareFileSize(f1, f2) && compareBytes(f1, f2)); } /** * Does a byte compare of two files * @param true if files are same byte-by-byte, false otherwise */ private static boolean compareBytes(File file1, File file2) throws IOException { BufferedInputStream file1Input = new BufferedInputStream(new java.io.FileInputStream(file1)); BufferedInputStream file2Input = new BufferedInputStream(new java.io.FileInputStream(file2)); int charact1 = 0; int charact2 = 0; while (charact1 != -1) { if (charact1 == charact2) { charact1 = file1Input.read(); charact2 = file2Input.read(); } else { return false; } } return true; } /** * Does a file size compare of two files * @param true if files are same length, false otherwise */ private static boolean compareFileSize(File oldFile, File newFile) { if (oldFile.length() != newFile.length()) { return false; } else { return true; } } // end: compareBytes private boolean filesExist(File oldFile, File newFile) { if (!oldFile.exists()) { System.err.println("Task Compare - ERROR: File " + referenceDirectory + oldFile.getName() + " doesn't exist!"); return false; } else if (!newFile.exists()) { System.err.println("Task Compare - ERROR: File " + testDirectory + newFile.getName() + " doesn't exist!"); return false; } else { return true; } } private void writeHeader(PrintWriter results) { String dateTime = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(new Date()); results.println("<html><head><title>Test Results</title></head><body>\n"); results.println("<h2>Compare Results<br>"); results.println("<font size='1'>created " + dateTime + "</font></h2>"); results.println("<table cellpadding='10' border='2'><thead>" + "<th align='center'>reference file</th>" + "<th align='center'>test file</th>" + "<th align='center'>identical?</th></thead>"); } /** * Main method of task compare * @throws BuildException If the execution fails. */ public void execute() throws BuildException { boolean identical = false; File oldFile; File newFile; try { PrintWriter results = new PrintWriter(new java.io.FileWriter("results.html"), true); this.writeHeader(results); for (int i = 0; i < filenameList.length; i++) { oldFile = new File(referenceDirectory + filenameList[i]); newFile = new File(testDirectory + filenameList[i]); if (filesExist(oldFile, newFile)) { identical = compareFileSize(oldFile, newFile); if (identical) { identical = compareBytes(oldFile, newFile); } if (!identical) { System.out.println("Task Compare: \nFiles " + referenceDirectory + oldFile.getName() + " - " + testDirectory + newFile.getName() + " are *not* identical."); results.println("<tr><td><a href='" + referenceDirectory + oldFile.getName() + "'>" + oldFile.getName() + "</a> </td><td> <a href='" + testDirectory + newFile.getName() + "'>" + newFile.getName() + "</a>" + " </td><td><font color='red'>No</font></td></tr>"); } else { results.println("<tr><td><a href='" + referenceDirectory + oldFile.getName() + "'>" + oldFile.getName() + "</a> </td><td> <a href='" + testDirectory + newFile.getName() + "'>" + newFile.getName() + "</a>" + " </td><td>Yes</td></tr>"); } } } results.println("</table></html>"); } catch (IOException ioe) { System.err.println("ERROR: " + ioe); } } // end: execute() }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]