You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by gm...@apache.org on 2005/01/30 22:59:29 UTC
cvs commit: xml-fop/src/java/org/apache/fop/tools/anttasks FileCompare.java RunTest.java Compare.java
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: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org