]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
PR:
authorGlen Mazza <gmazza@apache.org>
Sun, 30 Jan 2005 21:59:29 +0000 (21:59 +0000)
committerGlen Mazza <gmazza@apache.org>
Sun, 30 Jan 2005 21:59:29 +0000 (21:59 +0000)
Obtained from:
Submitted by:
Reviewed by:
Altered TestConverter to use FileCompare's file comparison logic.
Renamed Compare to FileCompare.
Simplified logger implementation in TestConverter.

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198343 13f79535-47bb-0310-9956-ffa450edef68

examples/fo/build.xml
src/java/org/apache/fop/tools/TestConverter.java
src/java/org/apache/fop/tools/anttasks/Compare.java [deleted file]
src/java/org/apache/fop/tools/anttasks/FileCompare.java [new file with mode: 0644]
src/java/org/apache/fop/tools/anttasks/RunTest.java

index 5e8c092ee76fbe41f2333131fb97a88c27adb211..841c76b6859ae05743aae0733344f0617656bf6c 100644 (file)
@@ -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                                                       -->
index a0a6d7406b05ef0f0e2f9d125023b6660c08262d..0fd0831b7ca9f923aa6dd32723bf395cc269fafe 100644 (file)
@@ -29,11 +29,11 @@ import javax.xml.parsers.DocumentBuilderFactory;
 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 @@ public class TestConverter {
     /**
      * 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 @@ public class TestConverter {
      * 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 @@ public class TestConverter {
     }
 
     /**
-     * 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 @@ public class TestConverter {
                 }
             }
         } catch (Exception e) {
-            getLogger().error("Error while running tests", e);
+            logger.error("Error while running tests", e);
         }
     }
 
@@ -364,28 +346,12 @@ public class TestConverter {
      * @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) {
diff --git a/src/java/org/apache/fop/tools/anttasks/Compare.java b/src/java/org/apache/fop/tools/anttasks/Compare.java
deleted file mode 100644 (file)
index e3f81d2..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * 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$ */
-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 Compare {
-    
-    private static final boolean IDENTICAL_FILES = true;
-    private static final boolean NOTIDENTICAL_FILES = false;
-
-    private String referenceDirectory, testDirectory;
-    private String[] filenameList;
-    private String filenames;
-    private BufferedInputStream oldfileInput;
-    private BufferedInputStream newfileInput;
-
-    /**
-     * 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]);
-    }
-
-    private boolean compareBytes(File oldFile, File newFile) {
-        try {
-            oldfileInput =
-                new BufferedInputStream(new java.io.FileInputStream(oldFile));
-            newfileInput =
-                new BufferedInputStream(new java.io.FileInputStream(newFile));
-            int charactO = 0;
-            int charactN = 0;
-            boolean identical = true;
-
-            while (identical & (charactO != -1)) {
-                if (charactO == charactN) {
-                    charactO = oldfileInput.read();
-                    charactN = newfileInput.read();
-                } else {
-                    return NOTIDENTICAL_FILES;
-                }
-            }
-            return IDENTICAL_FILES;
-        } catch (IOException io) {
-            System.err.println("Task Compare - Error: \n" + io.toString());
-        }
-        return NOTIDENTICAL_FILES;
-    }
-
-    private boolean compareFileSize(File oldFile, File newFile) {
-        if (oldFile.length() != newFile.length()) {
-            return NOTIDENTICAL_FILES;
-        } else {
-            return IDENTICAL_FILES;
-        }
-    }    // 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()
-
-}
-
diff --git a/src/java/org/apache/fop/tools/anttasks/FileCompare.java b/src/java/org/apache/fop/tools/anttasks/FileCompare.java
new file mode 100644 (file)
index 0000000..175cb6f
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * 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$ */
+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()
+
+}
+
index 396a2d539bd11afb75029bd24b18b1bd02241278..b1361956348ea6dac835460995b3213ae9399ec9 100644 (file)
@@ -37,8 +37,8 @@ import java.util.Map;
 /**
  * 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 @@ public class RunTest extends Task {
             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 @@ public class RunTest extends Task {
      * 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