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]

Reply via email to