This is the mail archive of the mauve-patches@sourceware.org mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFC: remove old harness


This patch is committed as follows.

2006-06-14  Anthony Balkissoon  <abalkiss@redhat.com>

	* .cvsignore: Removed .ecjOut and .ecjErr from this file.
	* Harness.java: 
	(lastFailingCompile): New field.
	(numCompileFailsInFolder): New field.
	(showCompilationErrors): Removed this field.
	(main): Removed the handling of showCompilationErrors.
	(setupCompiler): Changed ecjWriterOut and ecjWriterErr to use custom 
	PrintWriters instead of writing to .ecjOut and .ecjErr.
	(getClasspathInstallString): Do not look for the property in 
	config.java, the -with-bootclasspath option has been removed from
	configuration.
	(printHelpMessage): Changed the "exceptions" message to indicate that
	full stack traces are now printed by default.
	(compileFolder): Removed the code that reads the compiler output and
	parses it, this is now done in the custom PrintWriter used by the 
	compiler.
	(compileTest): Likewise.
	(problemsString): Removed this method.
	(isCompileSummary): New method.
	(CompilerErrorWriter): New class.
	* Makefile.am: Removed SimpleTestHarness.java from harness_files 
	target, removed references to the old harness structure, added 
	check_local and clean_local targets.
	* Makefile.in: Regenerated.
	* README: Mentioned that exceptions are now printed by default and 
	-noexceptions is the option to turn them off.
	* README.OldHarness: Removed this file.
	* README.TestletToAPI: Likewise.
	* RunnerProcess.java:
	(exceptions): Changed from false by default to true by default.
	(main): Changed -exceptions to -noexceptions.
	* aclocal.m4: Regenerated.
	* batch_run: Removed this file.
	* build.xml: Likewise.
	* choose: Likewise.
	* choose-classes: Likewise.
	* configure: Regenerated.
	* configure.in: Do not export MAUVEVM, removed --with-gcj option, 
	removed --with-bootclasspath option, removed --enable-gcj-classes 
	option, removed --enable-class-files option.
	* runner: Removed this file.
	* uses-list: Likewise.	

On Wed, 2006-06-07 at 10:37 -0400, Thomas Fitzsimmons wrote:
> Hi,
> 
> This patch removes the old harness and makes the new one the default.  It also 
> makes:
> 
> ./configure --with-vm=/path/to/vm
> make
> make check
> 
> work.  I wanted some comments before making this change.  It reports test 
> results differently -- each test is a pass/fail rather than each check -- so 
> we'll also need to update our nightly scripts.
> 
> The new harness is better than the old one in every way, in my opinion, so I see 
> no reason in keeping the old one around.
> 
> What do people think?
> 
> Tom
Index: .cvsignore
===================================================================
RCS file: /cvs/mauve/mauve/.cvsignore,v
retrieving revision 1.8
diff -u -r1.8 .cvsignore
--- .cvsignore	24 Apr 2006 19:42:02 -0000	1.8
+++ .cvsignore	14 Jun 2006 19:10:52 -0000
@@ -21,5 +21,3 @@
 SimpleTestHarness
 mauve-classpath
 mauve.out
-.ecjOut
-.ecjErr
Index: Harness.java
===================================================================
RCS file: /cvs/mauve/mauve/Harness.java,v
retrieving revision 1.8
diff -u -r1.8 Harness.java
--- Harness.java	31 May 2006 17:21:42 -0000	1.8
+++ Harness.java	14 Jun 2006 19:10:53 -0000
@@ -28,10 +28,10 @@
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.io.OutputStream;
 import java.io.PrintWriter;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
@@ -48,7 +48,7 @@
  *
  */
 public class Harness
-{    
+{ 
   // The compile method for the embedded ecj
   private static Method ecjMethod = null;
   
@@ -64,6 +64,12 @@
   private static PrintWriter ecjWriterOut = null;
   private static PrintWriter ecjWriterErr = null;
   
+  // The name of the most recent test that failed to compile.
+  private static String lastFailingCompile = "";
+  
+  // The number of compile fails in the current folder.
+  private static int numCompileFailsInFolder = 0;
+  
   // The constructor for the embedded ecj
   private static Constructor ecjConstructor = null;
 
@@ -95,9 +101,6 @@
   // Whether we should compile tests before running them
   private static boolean compileTests = true;
   
-  // Whether we should display information for failing compilations
-  private static boolean showCompilationErrors = true;
-  
   // The total number of tests run
   private static int total_tests = 0;
 
@@ -247,8 +250,6 @@
             else if (args[i].equals("no") || args[i].equals("false"))
               compileTests = false;
           }
-        else if (args[i].equals("-hidecompilefails"))
-          showCompilationErrors = false;
         else if (args[i].equals("-help") || args[i].equals("--help")
                  || args[i].equals("-h"))
           printHelpMessage();
@@ -387,27 +388,15 @@
     ecjMethod = 
       klass.getMethod
       ("compile", new Class[] 
-          { String.class, PrintWriter.class, PrintWriter.class });    
-    ecjWriterOut = new PrintWriter(new FileOutputStream(".ecjOut"));
-    ecjWriterErr = new PrintWriter(new FileOutputStream(".ecjErr"));        
+          { String.class, PrintWriter.class, PrintWriter.class });
+    
+    ecjWriterErr = new CompilerErrorWriter(System.out);
+    ecjWriterOut = new PrintWriter(System.out);
     
     // Set up the compiler options now that we know whether or not we are
-    // compiling, and print a header to the compiler error file.
+    // compiling.
     compileStringBase += getClasspathInstallString();
-    ecjWriterErr.println("This file lists the compiler errors.\n" +
-                         "Weird things will happen if the compiler's " +
-                         "bootclasspath isn't properly set.\nIf the errors" +
-                         " listed here seem odd, like:\n\n" +
-                         "    'The type java.lang.Object cannot be resolved." +
-                         " It is indirectly\n    referenced from required " +
-                         ".class files,'\n\nthen try setting the " +
-                         "bootclasspath by using the\n" +
-                         "--with-bootclasspath=CPINSTALLDIR option " +
-                         "in configure.");
-    ecjWriterErr.println("\nThe compiler command used was: \n    " +
-                         compileStringBase + "\n");
-    
-  }
+  }  
   
   /**
    * Removes the "gnu.testlet." from the start of a String.
@@ -433,25 +422,18 @@
     
     // If classpathInstallDir is null that means no bootclasspath was 
     // specified on the command line using -bootclasspath.  In this case
-    // check if anything was supplied to configure with --with-bootclasspath.
+    // auto-detect the bootclasspath.
     if (temp == null)
       {
-        temp = config.cpInstallDir;
+        temp = getBootClassPath();
         
-        // If temp is the empty string then nothing was supplied to configure
-        // so auto-detect the bootclasspath using getBootClasspath().
-        if (temp.equals(""))
-          {
-            temp = getBootClassPath();
-            
-            // If auto-detect returned null we cannot auto-detect the 
-            // bootclasspath and we should try invoking the compiler without
-            // specifying the bootclasspath.  Otherwise, we should add
-            // " -bootclasspath " followed by the detected path.
-            if (temp != null)              
-              return " -bootclasspath " + temp;
-            return temp;
-          }
+        // If auto-detect returned null we cannot auto-detect the 
+        // bootclasspath and we should try invoking the compiler without
+        // specifying the bootclasspath.  Otherwise, we should add
+        // " -bootclasspath " followed by the detected path.
+        if (temp != null)              
+          return " -bootclasspath " + temp;
+        return temp;
       }
     
     // This section is for bootclasspath's specified with
@@ -600,7 +582,7 @@
       "ones\n" +
       "  -hidecompilefails:       hide errors from the compiler when " +
       "tests fail to compile\n" +
-      "  -exceptions:             print stack traces for uncaught " +
+      "  -noexceptions:           suppress stack traces for uncaught " +
       "exceptions\n" +
       "  -verbose:                run in noisy mode, displaying extra " +
       "information\n" +
@@ -989,7 +971,6 @@
   private static boolean compileFolder(StringBuffer sb, String folderName)
   {
     int result = - 1;
-    int compileFailsInFolder = 0;
     compileString = compileStringBase + sb.toString();
     try
       {
@@ -1001,127 +982,10 @@
         e.printStackTrace();
         result = - 1;
       }
-
-    if (result != 0)
-      {
-        // The compilation was not successful. Since the -nowarn option was
-        // used to compile the tests and output was sent to the ".ecjErr"
-        // file, we can parse that file, exclude the tests that did not 
-        // compile properly, and print out the errors to the user if they
-        // asked to see them.
-        try
-        {
-          BufferedReader errReader = 
-            new BufferedReader(new FileReader(".ecjErr"));
-          String lastFailingTest = null;
-          String temp;
-          String prev = null;
-          int loc;
-          
-          // Go to the part in the file that relates to this folder 
-          // specifically.
-          temp = errReader.readLine();
-          int len = folderName.length();
-          int index;
-          while (temp != null)
-            {
-              index = temp.indexOf(folderName);
-              if (index != -1 && 
-                  (temp.lastIndexOf((int)File.separatorChar) == len + index))
-                break;
-              temp = errReader.readLine();
-            }            
-          
-          // If temp is null, we didn't find it.  Otherwise, look for each
-          // individual failing compilation, count it as a fail, exclude it
-          // from the test run, and print out the info.
-          while (temp != null)
-            {
-              // If we've reached a part of the file that pertains to another
-              // folder then break out of the loop.
-              if (temp.indexOf("gnu" + File.separatorChar + "testlet") != - 1
-                  && temp.indexOf(folderName) == - 1)
-                break;
-                            
-              // Look for test names for failing tests, so we can exclude
-              // them from the run.  
-              loc = temp.indexOf("gnu" + File.separatorChar + "testlet");
-              if (loc != - 1)
-                {
-                  compileFailsInFolder++;
-                  String name = temp.substring(loc);                  
-                  if (!name.equals(prev))
-                    {
-                      String shortName = 
-                        stripPrefix(name).replace(File.separatorChar, '.');
-                      if (shortName.endsWith(".java"))
-                        shortName = 
-                          shortName.substring(0, shortName.length() - 5);
-                      if (verbose && lastFailingTest != null)
-                        System.out.println
-                        ("TEST FAILED: compilation failed " + lastFailingTest);
-                      lastFailingTest = shortName;
-                      
-                      if (verbose)
-                        System.out.println
-                        ("TEST: " + shortName + "\n  FAIL: " +
-                                "compilation failed.");
-                      else
-                        System.out.println("FAIL: " + shortName
-                                           + ": compilation failed");
-                      if (!showCompilationErrors)
-                        System.out.println
-                        ("  Read .ecjErr for details or don't run with" +
-                        " -hidecompilefails");
-                      
-                      // When a test fails to compile, we count it as failing
-                      // but we do not run it.                      
-                      total_test_fails++;
-                      total_tests++;
-                      excludeTests.add(name);
-                    }
-                  prev = name;
-                }
-              
-              // Unless -hidecompilefails was used, print out the info. Do not
-              // print the compiler summer (e.g. '3 problems (3 errors)').
-              if (showCompilationErrors && 
-                  temp.indexOf(problemsString(compileFailsInFolder)) == -1)
-                System.out.println("  " + temp);
-              
-              // Read the next line in the file.
-              temp = errReader.readLine();
-            }
-          if (verbose && lastFailingTest != null)
-            System.out.println
-              ("TEST FAILED: compilation failed " + lastFailingTest);
-        }
-        catch (FileNotFoundException fnfe)
-        {
-        }
-        catch (IOException ioe)
-        {          
-        }
-      }
     return result == 0;
   }
   
   /**
-   * This method returns a String that the compiler prints as a summary
-   * after a batch compile (e.g. '3 problems (3 errors)').  This is so 
-   * we can ignore it when printing compiler errors to the screen.
-   * @param fails the number of fails in the batch compilation
-   * @return the summary String
-   */
-  private static String problemsString(int fails)
-  {
-    if (fails == 1)
-      return "1 problem (1 error)";
-    else
-      return fails + " problems (" + fails + " errors)";
-  }
-  
-  /**
    * Runs all the tests in a folder.  If the tests were compiled by 
    * compileFolder, and the compilation failed, then we must check to 
    * see if each individual test compiled before running it.
@@ -1181,57 +1045,28 @@
       }
     catch (Exception e)
       {
-        result = - 1;
-      }
-    if (result != 0)
-      {
-        String shortName = stripPrefix(testName);
-        if (verbose)
-          System.out.println
-            ("TEST: " + shortName + "\n  FAIL: compilation failed.");
-        else
-          System.out.println("FAIL: " + stripPrefix(testName)
-                             + ": compilation failed");
-        if (!showCompilationErrors)
-          System.out.println
-            ("  Read .ecjErr for details or don't run with -hidecompilefails");
-        else
-          {
-            try
-            {
-              BufferedReader errReader = 
-                new BufferedReader(new FileReader(".ecjErr"));
-              String temp = errReader.readLine();
-              while(temp != null && temp.indexOf(testName) == -1)
-                temp = errReader.readLine();
-              System.out.println("  " + temp);
-              temp = errReader.readLine();
-              while (temp != null && 
-                     temp.indexOf("gnu" + File.separatorChar + "teslet") == -1)
-                {
-                  System.out.println("  " + temp);
-                  temp = errReader.readLine();
-                }
-            }
-            catch (FileNotFoundException fnfe)
-            {          
-            }
-            catch (IOException ioe)
-            {              
-            }
-          }
-        if (config.cpInstallDir.equals(""))
-          System.out.println("  Try setting --with-bootclasspath " +
-                "when running configure.\n  See the README file for details");
-        if (verbose)
-          System.out.println("TEST FAILED: compilation failed " + shortName);
-        
-        total_test_fails++;
-        total_tests++;
-        result = - 1;
+        result = -1;
       }
     return result;
   }  
+  
+  /**
+   * Returns true if the String argument passed is in the format of a
+   * compiler summary of errors in a folder.
+   * @param x the String to inspect
+   * @return true if the String is in the correct format
+   */
+  private static boolean isCompileSummary(String x)
+  {
+    if (numCompileFailsInFolder == 1)
+      return x.startsWith("1 problem (1 error)");
+    else
+      {
+        String s = "" + numCompileFailsInFolder + " problems (";
+        s += "" + numCompileFailsInFolder + " errors)";
+        return x.startsWith(s);
+      }
+  }
 
   /**
    * This class is used for our timer to cancel tests that have hung.
@@ -1359,4 +1194,118 @@
     }
   }
 
+  /**
+   * A class used as a PrintWriter for the compiler to send error output to.
+   * This class formats the output and also affects the test run by parsing 
+   * the output.
+   * @author Anthony Balkissoon abalkiss at redhat dot com
+   *
+   */
+  private class CompilerErrorWriter extends PrintWriter
+  {
+    public CompilerErrorWriter(OutputStream out)
+    {
+      super(out);
+    }
+    
+    /**
+     * This method is overridden for several reasons.  It formats
+     * text to fit into the test report, adds tests that fail to compile
+     * to the list of tests to exclude from the run, prints header
+     * information for the failing tests, and properly increments
+     * the total test number and total failing test number.
+     * 
+     * Basically, this method now parses the text its passed and causes
+     * side effects.  It (sometimes) prints that text as well, after 
+     * formatting and indenting.
+     */
+    public void println(String x)
+    {
+      // Ignore incorrect classpath errors, since we detect this 
+      // automatically, a proper classpath should be found in 
+      // addition to any incorrect ones.
+      if (x.startsWith("incorrect classpath:") ||
+          x.startsWith("----------"))
+        return;
+      
+      // Look for "gnu/testlet" to indicate we might be talking about a 
+      // new file.
+      int loc = x.indexOf("gnu/testlet");        
+      if (loc != -1)
+        {
+          String temp = x.substring(loc);
+          String shortName = 
+            stripPrefix(temp).replace(File.separatorChar, '.');
+          if (shortName.endsWith(".java"))
+            shortName = 
+              shortName.substring(0, shortName.length() - 5);
+
+          // Check if the name is different than the last file with 
+          // compilation errors, so we're not dealing with multiple errors
+          // in one file.
+          if (!lastFailingCompile.equals(shortName))
+            {                
+              // Print out a message saying the test failed.
+              if (verbose)
+                super.println("TEST: " + shortName
+                              + "\n  FAIL: compilation errors:");
+              else
+                super.println("FAIL: " + shortName
+                                   + ": compilation errors:");
+                                    
+              // Increment and set the relevant variables.
+              numCompileFailsInFolder = 1;
+              excludeTests.add(temp);
+              total_test_fails++;
+              total_tests++;
+              lastFailingCompile = shortName;
+            }
+          else
+            numCompileFailsInFolder++;
+          return;
+        }
+      
+      // Get the line number from the compiler output and print
+      // it out to look like our other line numbers for failures.
+      loc = x.indexOf("(at line ");
+      if (loc != -1)
+        {
+          int endBracket = x.indexOf(')', loc);
+          String line = x.substring(loc + 4, endBracket) + ":";
+          
+          // Print the line numbers with appropriate indentation.
+          if (verbose)
+            super.println("    "+line);
+          else
+            super.println("  "+line);
+          
+          // Print the line from the test that caused the problem.
+          super.println(x.substring(endBracket + 2));
+          return;
+        }
+      
+      // Print the lines with appropriate indentation.
+      if (verbose)
+        super.println("    " + x);
+      else
+        super.println("  " + x);
+    }
+    
+    /**
+     * This method is overridden so that the compiler summary isn't
+     * printed out and also so that if the output is verbose we print
+     * our own summary.
+     */
+    public void print(String x)
+    {
+      if (isCompileSummary(x))
+        {
+          if (verbose)
+            super.println("TEST FAILED: compile failed for "
+                          + lastFailingCompile);
+        }
+      else
+        super.print(x);
+    }
+  }
 }
Index: Makefile.am
===================================================================
RCS file: /cvs/mauve/mauve/Makefile.am,v
retrieving revision 1.28
diff -u -r1.28 Makefile.am
--- Makefile.am	24 Apr 2006 19:42:02 -0000	1.28
+++ Makefile.am	14 Jun 2006 19:10:53 -0000
@@ -9,117 +9,30 @@
 
 check_DATA = $(STAMP)
 
-harness_files = Harness.java \
+harness_files = \
+	Harness.java \
 	RunnerProcess.java \
-	gnu/testlet/SimpleTestHarness.java \
-	gnu/testlet/TestHarness.java gnu/testlet/Testlet.java \
+	gnu/testlet/TestHarness.java \
+	gnu/testlet/Testlet.java \
 	gnu/testlet/TestSecurityManager.java \
 	gnu/testlet/TestSecurityManager2.java \
 	gnu/testlet/ResourceNotFoundException.java \
 	gnu/testlet/TestReport.java \
 	gnu/testlet/TestResult.java
 
-harness: FORCE
+harness:
 	$(JAVAC) $(harness_files)
 	$(JAVAC) gnu/testlet/config.java
 
 all-local: harness
 
-## FIXME: leading space makes automake ignore this.  Bleah.
- include choices
-
-classes.stamp: choices $(CHOICES)  gnu/testlet/config.class
-	here=`/bin/pwd`; cd $(srcdir); \
-	  CLASSPATH=$$CLASSPATH:$$here:`/bin/pwd` $(JAVAC) $(JAVACFLAGS) -d $$here \
-	    $(harness_files) $(CHOICES)
-	touch classes.stamp
-
 gnu/testlet/config.class: gnu/testlet/config.java
 	$(JAVAC) $(JAVACFLAGS) gnu/testlet/config.java
 
-KEYS =
-choices: FORCE
-	ok=no; \
-	if test -f .save-keys && test -f choices && test "`cat .save-keys`" = "$(KEYS)"; then \
-	  ok=yes; \
-	fi; \
-	here=`/bin/pwd`; \
-	if test "$$ok" = no; then \
-	  echo "$(KEYS)" > .save-keys; \
-	  cd $(srcdir) && $(SHELL) choose $$here $(KEYS); \
-	fi
-
-FORCE:
-
-if USE_GCJ
-
-if CLASS_FILES
-STAMP = classes.stamp
-
-$(javao_files): classes.stamp
-
-%.o: %.class classes.stamp
-	CLASSPATH=.:$(srcdir) $(GCJ) -fassume-compiled $(GCJFLAGS) -c -o $@ $<
-
-else # CLASS_FILES
-
-%.o: %.java
-## Eww.
-	@-$(mkinstalldirs) $(dir $@) > /dev/null 2>&1
-	CLASSPATH=.:$(srcdir) $(GCJ) -fassume-compiled $(GCJFLAGS) -c -o $@ $<
-
-endif # CLASS_FILES
-
-java_files = $(harness_files) $(CHOICES)
-class_files = $(patsubst %.java,%.class,$(java_files)) \
-	gnu/testlet/config.class
-javao_files = $(patsubst %.java,%.o,$(CHOICES))
-
-check_PROGRAMS = SimpleTestHarness
-
-AM_GCJFLAGS = -I. -I$(srcdir)
-
-SimpleTestHarness_SOURCES = gnu/testlet/config.java $(harness_files)
-SimpleTestHarness_DEPENDENCIES = $(STAMP) $(javao_files) 
-SimpleTestHarness_LDADD = $(javao_files)
-SimpleTestHarness_LDFLAGS = --main=gnu.testlet.SimpleTestHarness
-
-check-local: $(check_PROGRAMS) $(CHOICES) cleanup-env
-	cat classes | GCJ="$(GCJ)" JAVA= ./SimpleTestHarness$(EXEEXT) $(TESTFLAGS)
-
-recheck:
-	test -f .save-keys || : > .save-keys
-## Always remove the test program to force a relink.
-	@rm -f SimpleTestHarness$(EXEEXT)
-	$(MAKE) KEYS="`cat .save-keys`" check
-
-MOSTLYCLEANFILES = $(javao_files)
-CLEANFILES = $(class_files) classes.stamp
-
-else  ## USE_GCJ
-
-STAMP = classes.stamp
-
-check-local: classes.stamp cleanup-env
-	cat classes | \
-	CLASSPATH=$$CLASSPATH:`/bin/pwd` JAVAC="$(JAVAC)" JAVA="$(JAVA)" $(JAVA) gnu.testlet.SimpleTestHarness $(TESTFLAGS)
-
-recheck:
-	test -f .save-keys || : > .save-keys
-	$(MAKE) KEYS="`cat .save-keys`" check
-
-CLEANFILES = classes.stamp
-
-endif ## USE_GCJ
-
-# Cleanup files, directories and other stuff left over from previous
-# test runs that will interfere with this one.  (Ideally a testcase
-# should do this for itself.)
-cleanup-env: 
-	if test -d /tmp/mauve-testdir ; then \
-	  chmod -R 777 /tmp/mauve-testdir ; \
-	  rm -rf /tmp/mauve-testdir ; \
-	fi
-
+check-local:
+	$(JAVA) Harness
+ 
 ## For now can't define this conditionally.
 SUFFIXES = .class .java
+clean-local:
+	find . -name '*.class' -print | xargs rm -f
\ No newline at end of file
Index: README
===================================================================
RCS file: /cvs/mauve/mauve/README,v
retrieving revision 1.24
diff -u -r1.24 README
--- README	26 Apr 2006 18:11:11 -0000	1.24
+++ README	14 Jun 2006 19:10:53 -0000
@@ -210,7 +210,7 @@
 5.  Changing the information displayed during test runs
 
   By default the Harness prints only messages for those tests that fail, and 
-  only prints minimal information about uncaught exceptions. The following
+  prints full stack traces for uncaught exceptions. The following
   options affect what is printed:
   
   -hidecompilefails: hides failures from the compiler.  These can still be 
@@ -219,7 +219,7 @@
   -verbose: 		 prints information about each passing harness.check() call
 					 within the tests, whether they pass or fail.
   
-  -exceptions: 		 prints full stack traces for uncaught exceptions
+  -noexceptions: 		 suppress full stack traces for uncaught exceptions
   
   -showpasses: 		 prints one-line summaries for passing tests
   
Index: README.OldHarness
===================================================================
RCS file: README.OldHarness
diff -N README.OldHarness
--- README.OldHarness	5 Apr 2006 20:11:27 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,234 +0,0 @@
-This is Mauve, a free test suite for the Java Class Libraries.
-
-Mauve is intended to test several different varieties of the
-libraries.  For instance, it will contain tests that are specific to a
-particular JDK version.  Tags in the test files help the test
-framework decide which tests should or should not be run against a
-given runtime.
-
-
-To build, first run configure.  You can control the configuration with
-some environment variables:
-
-     JAVA   Name of Java interpreter to use
-     JAVAC  Name of Java (to class) compiler to use
-     GCJ    Name of Java (to object) compiler to use
-
-GCJ is only used when the `--with-gcj' option is given to configure.
-
-The configure script also supports the following `--with' options:
-
-     --with-tmpdir=DIR          Put temporary files in DIR
-                                defaults to `/tmp'
-     --with-mailhost=HOSTNAME   Use mail server at HOSTNAME for socket tests 
-                                defaults to `mx10.gnu.org'
-                                (Use this option if your local firewall
-                                 blocks outgoing connections on port 25.)
-
-Note that you will need GNU make to use this testsuite.  If your
-installation provides GNU make under a different name, such as gmake,
-replace `make' with `gmake' in the following.
-
-Use `make check' to run the tests.  You can set the make variable
-`KEYS' to select a subset of the tests.  KEYS is a list of keys that
-must be matched by the files to be tested.  Some values:
-
-     * Any key starting with `java.' is taken to be the name of a
-       class hierarchy.
-       E.g., the key `java.lang' matches only test classes in java.lang.*.
-
-     * Any key starting with `!java.' is used to exclude a class
-       hierarchy.
-       E.g., `!java.lang.reflect' can be used to omit all reflection
-       tests, while still including the rest of java.lang.
-
-     JDK1.0  Run JDK1.0 tests only
-     JDK1.1  Run JDK1.1 tests only
-     JDK1.2  Run JDK1.2 tests only
-
-If an otherwise unrecognized tag QUUX is seen, and the file
-`mauve-QUUX' exists in the mauve source directory, then the contents
-of this file are treated as a list of tags.  For instance, here is the
-current version of `mauve-libjava', which is used by the `libjava'
-library implementation:
-
-	# Config file that tells mauve about the `libjava' tag.
-	JDK1.0
-	JDK1.1
-	!java.beans
-
-Note that anything after a `#' on a line is treated as a comment and
-is stripped.
-
-File inclusion and exclusion commands are processed in order.  So, for
-instance, specifying `!java.lang java.lang.System' will omit all
-java.lang tests except for System.  Every file starts off in the
-`included' state; an explicit exclusion is needed to reject it.  (So,
-e.g., specifying just `java.lang' is insufficient to select only
-java.lang.  You must specify `!java. java.lang'.  Note the `.'!)
-
-If no tags are given, "JDK1.0 JDK1.1" are assumed.
-
-You can use `make recheck' to re-run `make check' with the key list
-you last used.
-
-An alternative way to compiling and running all tests is the batch_run
-script.  This makes it easy to run all test in one batch without worrying
-wheter all tests compile and/or running them crashes or hangs the runtime.
-
-batch_run and the runner helper script aren't integrated with the configure
-setup yet so you will have to edit them by hand to explicitly set the
-COMPILER variable in batch_run and the RUNTIME variable in runner.
-Optionally you can also change the KEYS setting in batch_run if you don't
-want to run all tests.  You can also set the variable NATIVE=true in
-batch_run when you want to use gcj (without -C) in native mode.
-
-When a test cannot be compiled with the given COMPILER batch_run will
-output FAIL: <testname> COMPILE FAILED and go on with the next test.
-If the runner detects a runtime crash or timeout (runner variable
-WAIT=60 seconds) it will output FAIL: <testname> CRASH or TIMEOUT.
-
-If you want to run a single test by hand, you can feed its name
-directly to the test harness.  Make sure to remember the `gnu.testlet'
-prefix for the test cases.  E.g.:
-
-  echo gnu.testlet.java.lang.Character.classify | \
-    java gnu.testlet.SimpleTestHarness -verbose -debug PATH-TO-SRCDIR
-
-The optional `-verbose' command-line argument makes the test suite a
-little noisier about what it is doing.  In particular it will print
-information about caught exceptions in this case.
-
-Some tests may provide even more information about failures to aid
-with debugging a particular run-time system.  These messages are enabled
-by specifying the optional command-line argument `-debug'
-
-If you are only interested in the results of the tests (not only which
-ones FAIL but also which ones PASS). Then you can use the '-resultsonly'
-command-line argument. This will also suppress the printing of a summary
-at the end.
-
-The '-exceptions' command-line argument to causes the display of full
-stack traces when a test fails due to an uncaught exception.
-
-You may use the environment variable TESTFLAGS to provide these
-flags to the invocation of the SimpleTestHarness in the `check' target.
-For instance,
-
-  make check "TESTFLAGS=-verbose -debug"
-
-will run the testsuite in verbose and debug mode.
-
-================================================================
-
-Tags in a test are specified a little differently from tags on the
-command line.
-
-Each tag on the command line is first mapped to a list of actual tags.
-E.g., "JDK1.2" implies all the tags "JDK1.0", "JDK1.1", and "JDK1.2".
-
-If any tag from the expanded list is matched by the test case, then
-the test case is chosen.
-
-However, if one of the tags specified on the command line appears in
-the test with a `!' prefix, then the test is rejected.
-
-Tags must all appear on a single line beginning "// Tags: ".
-
-Many files test functionality that has existed since JDK1.0.  The
-corresponding line in the source:
-
-    // Tags: JDK1.0
-
-Here is how you would tag something that first appeared in JDK1.2:
-
-    // Tags: JDK1.2
-
-Here is how you would tag something that was eliminated in JDK1.2:
-
-    // Tags: JDK1.0 !JDK1.2
-
-The idea behind this scheme is that it is undesirable to update all
-the files whenever we add a tag.  So instead most tags are defined in
-terms of primitive tags, and then we note the exceptions.
-
-When adding a new tag, change the `choose' program to map the
-specified tag onto the implied tags.  There is some code near the top
-that handles this transformation.
-
-Files should only hold tags describing their prerequisites.  In
-particular, limitations of a given library implementation should not
-be mentioned in file tags (because when the library changes, this
-would necessitate global edits).  Instead, put such limitations in a
-`mauve-QUUX' tag expansion file.
-
-================================================================
-
-Some test cases may require extra utility classes to run.  When the
-choose script selects a test case for running, the framework
-identifies the supporting classes through another magic comment in the
-test source.
-
-Support classes must all appear on a single line beginning with the
-string "// Uses: ".  The framework assumes that all utility classes
-used are found in that same package as the test case.
-
-================================================================
-
-Graphical tests that display windows and accept input are marked with
-the GUI tag.  GUI tests are not included in the default list of tags.
-If the GUI tag does appear in KEYS, batch_run will spawn an Xvfb
-process, set DISPLAY to that X server and run the
-graphical/interactive tests there.  By default, metacity is run in
-Xvfb; use the WM environment variable to run a different window
-manager.  If you'd rather run the tests directly on your desktop, set
-SHOW_GUI_TESTS=1.
-
-================================================================
-
-The test harness can also ignore known failures.  Simply create a
-file 'xfails' in the directory where the tests are being run which
-contains 'FAIL:' entries from previous test runs.  The order of the
-lines in the file is immaterial.  Also, the -verbose flag must be
-used.  Totals for both XFAILs and XPASSes will be output at the
-end of the run.
-
-In this way, implementations can track known failures and subsequent
-test runs can thus highlight regressions.
-
-================================================================
-
-There are still a few things to do in the test framework.
-
-
-It would be nice if we could have tests that can specify their
-expected output.  The expected output could be encoded directly in the
-test, e.g.:
-
-      /*{
-      expected output here
-      }*/
-
-The test harness would be reponsible for extracting this from the test
-source and then setting things up so that the checking is done
-correctly.  SimpleTestHarness could do this by setting System.out to
-point to some string buffer for the duration of the test.
-
-
-Change things so that the .o files can be built directly from the
-.java files without any intermediate .class files.  (Use the same
-configuration options that libjava uses.)
-
-
-Some tests probably should be run in their own environment.  This
-could be implemented using a new "group" magic comment, along with
-changes to the `choose' program to generate the list of classes in
-chunks.  Each such chunk would be fed into SimpleTestHarness in a
-separate invocation.
-
-
-It would be interesting to be able to compare test results for
-unspecified things against Sun's implementation.  This could be done
-by adding a new method to the test harness.  The `expected' argument
-would come from Sun's implementation.  Unlike `check', a failure here
-would simply be informative.
Index: README.TestletToAPI
===================================================================
RCS file: README.TestletToAPI
diff -N README.TestletToAPI
--- README.TestletToAPI	16 Oct 2005 17:53:20 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,13 +0,0 @@
-TestletToAPI can be used with Mauve but is in fact independant of it.
-
-TestletToAPI generates 2 japi files that can be used to show the coverage 
-(in term of methods, not of lines of code) of mauve testlets.
-
-That's a command line tool that takes 4 parameters :
-	inTestlets.japi                  : the output of japize on mauve testlets");
-	inTested.japi                    : the output of japize on tested api (Classpath, jdk, ...)
-	outTestlets.japi, outTested.japi : 2 japi files to be used as input of japicompat
-
-Example of usage (in a "native" command line style) :
- TestletToAPI W:\mauve\mauve.japi W:\mauve\jdk15.japi W:\mauve\mauve.japi.post W:\mauve\jdk15.japi.post
-	
\ No newline at end of file
Index: RunnerProcess.java
===================================================================
RCS file: /cvs/mauve/mauve/RunnerProcess.java,v
retrieving revision 1.4
diff -u -r1.4 RunnerProcess.java
--- RunnerProcess.java	31 May 2006 17:21:42 -0000	1.4
+++ RunnerProcess.java	14 Jun 2006 19:10:53 -0000
@@ -84,7 +84,7 @@
   private static boolean debug = false;
 
   // True if stack traces should be printed for uncaught exceptions
-  private static boolean exceptions = false;
+  private static boolean exceptions = true;
 
   // A description of the test
   private String description;
@@ -143,9 +143,9 @@
         else if (args[i].equals("-debug"))
           // User wants extra debug info.
           debug = true;
-        else if (args[i].equals("-exceptions"))
+        else if (args[i].equals("-noexceptions"))
           // User wants stack traces for uncaught exceptions.
-          exceptions = true;
+          exceptions = false;
         else if (args[i].equals("-xmlout"))
           {
             // User wants a report.
Index: batch_run
===================================================================
RCS file: batch_run
diff -N batch_run
--- batch_run	19 Feb 2006 14:27:58 -0000	1.20
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,141 +0,0 @@
-#!/bin/bash
-
-# Copyright (c) 2002, 2004, 2005, 2006 Free Software Foundation, Inc.
-# Written by Mark Wielaard <mark@klomp.org>
-
-# This file is part of Mauve.
-
-# Mauve is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# Mauve is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with Mauve; see the file COPYING.  If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# Tries to compile and run all possible tests.
-# Produces a FAIL output if compilation fails.
-# COMPILER command can be set in the script or to "none" to avoid
-# cleaning .class files and recompiling them
-# For testing (gcj) native code compilation set NATIVE to 'true', otherwise
-# don't set it.
-# Uses runner script to run each individual test.
-#
-# Usage: run_batch > result_output
-# Run in the source directory.
-
-# Include every key/tag we can think of but always exclude the unicode test.
-if test "x$KEYS" = "x"; then
-KEYS="JDK1.0 JDK1.1 JDK1.2 JDK1.3 JDK1.4 JDK1.5 JDBC1.0 JDBC2.0 GNU GNU-CRYPTO"
-KEYS="$KEYS !java.lang.Character.unicode"
-fi
-
-if test "x$CLASSPATHBCP" = "x"; then
-CLASSPATHBCP="/usr/local/classpath/share/classpath/glibj.zip"
-fi
-
-if test "x$COMPILER" = "x"; then
-#COMPILER="gcj -C -Wno-deprecated"
-COMPILER="jikes -nowarn -bootclasspath $CLASSPATHBCP"
-fi
-
-if test "x$COMPILER" = "xgcj"; then
-COMPILER_FLAGS="-g -O0"
-else
-COMPILER_FLAGS="-g"
-fi
-
-if test "x$COMPILER" = "xgcj"; then
-NATIVE="true"
-GCJ=gcj; export GCJ;
-else
-NATIVE=
-JAVAC=$COMPILER; export JAVAC
-fi
-
-# Cleanup if COMPILER != none
-if test "x$COMPILER" != "xnone"; then
-	find gnu/testlet -name "*.class" | xargs rm -f
-fi
-
-if test ! -z "$NATIVE"; then
-    rm -f SimpleTestHarness
-fi
-
-# Create Mauve Framwork
-framework_sources="gnu/testlet/SimpleTestHarness.java gnu/testlet/TestHarness.java gnu/testlet/Testlet.java gnu/testlet/ResourceNotFoundException.java gnu/testlet/TestSecurityManager.java gnu/testlet/config.java gnu/testlet/TestResult.java gnu/testlet/TestReport.java"
-
-if test -z "$NATIVE" && test "x$COMPILER" != "xnone"; then
-    $COMPILER $COMPILER_FLAGS $framework_sources
-fi
-
-# Generate test classes list
-./choose-classes . "$KEYS"
-
-case $KEYS in
-    *GUI*)
-
-        if test -z "$SHOW_GUI_TESTS"; then
-            XVFB=`which Xvfb`
-            if test "x$WM" = "x"; then
-                WM=`which metacity`
-	        # check if we found metacity
-                if test "x$WM" = "x"; then
-                    WM=`which true`
-                fi
-            fi
-
-            if test -z $XVFB; then
-		echo "warning: Xvfb not found on PATH.  Showing GUI tests on main desktop..."
-	    elif test -z $WM; then
-		echo "warning: metacity not found on PATH.  Showing GUI tests on main desktop..."
-            else
-		export DISPLAY=:57
-		echo localhost > Xvfb.cfg
-		$XVFB :57 -auth Xvfb.cfg > /dev/null 2>&1 &
-		XVFB_PID=$!
-		$WM > /dev/null 2>&1 &
-		WM_PID=$!
-		rm -f Xvfb.cfg
-	    fi
-	fi
-	;;
-esac
-
-# Compile and run all the tests
-for testclass in `cat test_classes`; do
-    # Get all needed java sources
-    ./uses-list . $testclass
-
-    # Try to compile sources
-    if test -z "$NATIVE"; then
-	if test "x$COMPILER" != "xnone"; then
-	       	$COMPILER $COMPILER_FLAGS @uses_files
-	fi
-    else
-        $COMPILER $COMPILER_FLAGS -o SimpleTestHarness --main=gnu.testlet.SimpleTestHarness \
-	          $framework_sources `cat uses_files`
-    fi
-    if test $?  = 0; then
-        ./runner $testclass 2>&1 | egrep '^(PASS|FAIL): '
-    else
-        echo "FAIL: $testclass COMPILE FAILED"
-    fi
-done
-
-case $KEYS in
-    *GUI*)
-
-        # killing Xvfb also kills the window manager process
-        if test ! -z "$XVFB_PID"; then
-            kill $XVFB_PID > /dev/null 2>&1
-        fi
-	;;
-esac
Index: build.xml
===================================================================
RCS file: build.xml
diff -N build.xml
--- build.xml	1 Jul 2005 18:33:42 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,116 +0,0 @@
-<?xml version="1.0"?>
-<!--Copyright (c) 2004 Thomas Zander <zander@kde.org>
-
-    This file is part of Mauve.
-
-    Mauve is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2, or (at your option)
-    any later version.
-
-    Mauve is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with Mauve; see the file COPYING.  If not, write to
-    the Free Software Foundation, 59 Temple Place - Suite 330,
-    Boston, MA 02111-1307, USA. -->
-
-<project name="mauve" default="test" basedir=".">
-
-    <!-- this loads the ant global properties -->
-    <property file="${user.home}/.ant-global.properties"/>
-
-    <property name="src" value="."/>
-    <property name="build" value="build"/>
-    <property name="docs" value="docs"/>
-
-    <!-- clean up .class and .jar files -->
-    <target name="clean" description="Clean out compiled files">
-        <!-- call clean from example-buildfile -->
-        <delete dir="${build}"/>
-        <delete file="${src}/gnu/testlet/config.java"/>
-        <delete dir="${docs}"/>
-    </target>
-
-    <!-- INIT creates the required directories and files -->
-    <target name="init">
-        <tstamp/>
-        <mkdir dir="${build}"/>
-        <mkdir dir="${docs}"/>
-        <!-- if ant runs; we can be pretty sure these are correct. -->
-        <filter token="SRCDIR" value="${user.dir}"/>
-        <filter token="TMPDIR" value="${java.io.tmpdir}" />
-        <filter token="CHECK_PATH_SEPARATOR" value="${path.separator}"/>
-        <filter token="CHECK_FILE_SEPARATOR" value="${file.separator}"/>
-        <copy file="${src}/gnu/testlet/config.java.in"
-                tofile="${src}/gnu/testlet/config.java"
-                verbose="true"
-                filtering="true" />
-    </target>
-
-    <!-- CLASSPATH -->
-    <path id="myclass.path">
-        <pathelement location="${build}" />
-    </path>
-
-    <!-- compiles all the sources -->
-    <target name="compile" depends="init" description="Compile all files">
-        <javac srcdir="${src}" destdir="${build}"
-            includes="gnu/**/*.java"
-            excludes="gnu/testlet/BinaryCompatibility/**, gnu/testlet/gnu/**"
-            classpathref="myclass.path"
-            target="1.1"
-            source="1.2"
-            debug="on">
-        </javac>
-    </target>
-
-    <target name="doc" depends="init" description="Build javadoc">
-        <javadoc packagenames="gnu.testlet"
-            defaultexcludes="yes"
-            destdir="${docs}/"
-            classpathref="myclass.path"
-            windowtitle="Mauve test API" >
-            <doctitle><![CDATA[<h1>Mauve test API</h1>]]></doctitle>
-        </javadoc>
-    </target>
-
-    <target name="test" depends="init,compile" description="run the tests">
-        <taskdef name="mauve" classname="gnu.anttask.RunTests" classpath="build"/>
-        <mauve debug="false"
-            verbose="false"
-            haltonfailure="false"
-            srcdir="${src}"
-            testJDK="JDK1.4"
-            testJDBC="JDBC2.0"
-            failonerror="true">
-            <fileset dir="${build}" includes="gnu/testlet/java/**" />
-            <fileset dir="${build}" includes="gnu/testlet/javax/**" />
-            <fileset dir="${build}" includes="gnu/testlet/org/**" />
-        </mauve>
-    </target>
-
-    <target name="parseSources" description="Create tests lists file">
-        <java classname="gnu.testlet.runner.CreateTags" fork="true">
-            <classpath>
-                <pathelement location="${build}" />
-            </classpath>
-            <arg value="gnu" />
-            <arg value="${build}/testslists" />
-        </java>
-    </target>
-
-    <target name="jars" depends="compile, parseSources" description="Bottle jar">
-        <jar jarfile="alltests.jar" filesonly="true">
-            <fileset dir="build" />
-            <manifest>
-                <attribute name="Main-Class" value="gnu.testlet.runner.Filter" />
-                <attribute name="Built-By" value="${user.name}"/>
-            </manifest>
-
-        </jar>
-    </target>
-</project>
Index: choose
===================================================================
RCS file: choose
diff -N choose
--- choose	24 May 2005 17:52:19 -0000	1.33
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,258 +0,0 @@
-#! /bin/sh
-
-# Copyright (c) 1998, 1999, 2005 Cygnus Solutions
-# Written by Tom Tromey <tromey@cygnus.com>
-
-# This file is part of Mauve.
-
-# Mauve is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# Mauve is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with Mauve; see the file COPYING.  If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.  */
-
-
-# Choose the tests we want to run.
-# Usage: choose [-verbose] output-directory [tag] ...
-# Run in the source directory.
-# See README for information on tags.
-
-verbose=
-spectags=
-tags=
-file_specs=
-
-if test "$1" = "-verbose"; then
-   verbose=yes
-   shift
-fi
-
-outdir="$1"
-shift
-
-# Some tags imply other tags.  For instance, JDK1.2 implies JDK1.1 and
-# JDK1.0.  This makes it easier to keep the tags up to date in the
-# source -- we only have to keep track of differences (as opposed to
-# editing every source file when a new tag is added).  If we see an
-# otherwise-unrecognized tag, and the file `mauve-TAG' exists, then we
-# treat the contents of that file as a list of implied tags.
-taglist=${1+"$@"}
-seen_dashdash=
-while test -n "$taglist"; do
-   set $taglist
-   i="$1"
-   shift
-   taglist=${1+"$@"}
-
-   case "$i" in
-    X--)
-       seen_dashdash=yes
-       ;;
-    !!java.*)
-       echo "Invalid tag: $i" 1>&2
-       exit 1
-       ;;
-    !java.* | java.* | !javax.* | javax.* | !locales.* | locales.* | !BinaryCompatibility.* | BinaryCompatibility.* | !org.* | org.*)
-       file="`echo $i | tr . /`"
-       file_specs="$file_specs $file"
-       ;;
-    not-a-test)
-       # You can't specify this.
-       :
-       ;;
-    JDK1.2)
-       tags="$tags JDK1.0 JDK1.1 $i"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    JDK1.1)
-       tags="$tags JDK1.0 $i"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    *)
-       file=
-       # Always prefer a tag file in the build directory.
-       if test -f "$outdir/mauve-$i"; then
-	  file="$outdir/mauve-$i"
-       else
-	  if test -f "mauve-$i"; then
-	     file="mauve-$i"
-	  fi
-       fi
-       if test -n "$file"; then
-	  # We don't want tags from a file to be treated as specified
-	  # on the command line.  So we add a `X--' before the
-	  # expansion.  We don't use just `--' as this would confuse
-	  # `set'.
-	  taglist="$taglist X-- `sed -e 's/#.*$//g' $file`"
-       fi
-       tags="$tags $i"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-   esac
-done
-
-# By default, use JDK1.1.
-test -z "$tags" && tags="JDK1.0 JDK1.1 GUI"
-
-test -n "$verbose" && echo "tags = $tags"
-test -n "$verbose" && echo "spectags = $spectags"
-test -n "$verbose" && echo "file_specs = $file_specs"
-
-choices=/tmp/choices-$$
-echo "CHOICES =" > $choices
-classes=/tmp/classes-$$
-: > $classes
-usesfile=/tmp/uses-$$
-: > $usesfile
-
-(cd gnu/testlet; find java javax locales BinaryCompatibility org -name '*.java' -print) |
-while read file; do
-   exact_match=no
-   test -n "$verbose" && echo "Examining $file"
-   if test -n "$file_specs"; then
-      ok=yes
-      for pat in $file_specs; do
-	 # PAT can be like `java.lang' or `!java.lang'.
-	 # If `!FILE' matches `PAT', then we know the pattern
-	 # starts with `!' and is an exclusion pattern.
-	 # Otherwise, if `!FILE' matches `!PAT', then we know that
-	 # the file should be included.
-	 case "!$file" in
-	  ${pat}*)
-	     ok=no
-	     test -n "$verbose" && echo "  ... excluded by $pat"
-	     ;;
-	  !${pat}.java)
-	     # If the tag list includes an exact match, then we
-	     # unconditionally accept it.
-	     ok=yes
-	     exact_match=yes
-	     test -n "$verbose" && echo "  ... included by $pat (exact match)"
-	     ;;
-	  !${pat}*)
-	     ok=yes
-	     test -n "$verbose" && echo "  ... included by $pat"
-	     ;;
-	 esac
-      done
-   else
-      ok=yes
-   fi
-
-   if test "$ok" = no; then
-      continue
-   fi
-
-   # Surround value with spaces so that case statements will work
-   # correctly.
-   taglist=" `grep '^// *Tags:' gnu/testlet/$file | sed -e 's,^// *Tags:,,'` "
-   istest=yes
-   case "$taglist" in
-    *\ not-a-test\ *)
-       istest=no
-       ;;
-   esac
-
-   # For an exact match, we don't look at the tags.
-   if test "$exact_match" = no; then
-      ok=no
-      # If any tag on the tag list matches, then we are ok.
-      for tag in $tags; do
-	 case "$taglist" in
-	    *" ${tag} "*)
-	    ok=yes
-	    break
-	    ;;
-	 esac
-      done
-
-      # If any specified tag hits a `not' tag, then we are not ok.
-      if test "$ok" = yes; then
-	 for tag in $spectags; do
-	    case "$taglist" in
-	       *" !${tag} "*)
-	         ok=no
-		 test -n "$verbose" && echo "File $file has tag !$tag"
-		 break
-		 ;;
-	    esac
-	 done
-      else
-	 test -n "$verbose" && echo "  ... excluded because no tag matched"
-      fi
-   fi
-
-   if test "$ok" = yes; then
-      class="gnu.testlet.`echo $file | sed -e 's/\.java$//' | tr / .`"
-      dirpart="`echo $file | sed -e 's,/[^/]*$,,'`"
-      echo "gnu/testlet/$file" >> $usesfile
-      if test "$istest" = yes; then
-	 echo $class >> $classes
-	 test -n "$verbose" && echo "Choose $class"
-
-	 # Now that we know we're going to use this class, see
-	 # what other support classes this test requires.
-         useslist=" `grep '^// *Uses:' gnu/testlet/$file | sed -e 's,^// *Uses:,,'` "
-         for used in $useslist; do
-	    # Normalize by removing '..' components from the start
-	    # of each 'Uses' file name.
-	    ndir=$dirpart
-	    while test `expr $used : '[.][.]/'` -ne 0; do
-	       ndir=`dirname $ndir`
-	       used=`echo "$used" | sed -e 's,^[.][.]/,,'`
-	    done
-
-	    usedfile=$ndir/$used.java
-	    echo "gnu/testlet/$usedfile" >> $usesfile
-         done
-
-      fi
-   fi
-done
-
-# Now uniquify the list of auxiliary files we used, and add them to
-# the list of choices.  I think neither `uniq' nor `sort -u' is
-# portable, so we do it by hand.
-previous=
-sort $usesfile |
-while read next; do
-   if test "$previous" != "$next"; then
-      echo " $next" >> $choices
-      previous=$next
-   fi
-done
-
-# Add a backslash to the end of every line except the last one.
-sed -e '$ !s/$/ \\/' < $choices > /tmp/x-$$
-mv /tmp/x-$$ $choices
-echo >> $choices
-
-# Due to a weirdness in GNU make, we want to list the dependencies
-# explicitly here.  This is really nasty.  But if we remove this, then
-# SimpleTestHarness will never be built, because its dependencies
-# won't include the .o files (but, strangely, the link line will).
-sed -e 's/CHOICES =/SimpleTestHarness:/' \
-   -e 's/\.java/.o/g' $choices > /tmp/x-$$
-cat /tmp/x-$$ >> $choices
-rm /tmp/x-$$
-
-if test -f $outdir/choices \
-   && cmp $choices $outdir/choices > /dev/null 2>&1; then
-   # Files are the same.
-   rm $choices $classes
-else
-   mv $choices $outdir/choices
-   mv $classes $outdir/classes
-fi
-rm $usesfile
-
-exit 0
Index: choose-classes
===================================================================
RCS file: choose-classes
diff -N choose-classes
--- choose-classes	19 Feb 2006 14:27:58 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,230 +0,0 @@
-#! /bin/sh
-
-# Copyright (c) 1998, 1999 Cygnus Solutions
-# Written by Tom Tromey <tromey@cygnus.com>
-
-# Copyright (c) 2002, 2006 Free Software Foundation, Inc.
-# Adapted by Mark Wielaard <mark@klomp.org>
-
-# This file is part of Mauve.
-
-# Mauve is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# Mauve is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with Mauve; see the file COPYING.  If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.  */
-
-# Choose the tests we want to run. Output generated in file 'test_classes'.
-# Usage: choose-classes [-verbose] output-directory [tag] ...
-# Run in the source directory.
-# See README for information on tags.
-
-verbose=
-spectags=
-tags=
-file_specs=
-
-if test "$1" = "-verbose"; then
-   verbose=yes
-   shift
-fi
-
-outdir="$1"
-shift
-test -z "$outdir" \
-    && echo "Usage: choose-classes [-verbose] output-directory [tag] ..." \
-    && exit -1
-
-# Some tags imply other tags.  For instance, JDK1.2 implies JDK1.1 and
-# JDK1.0.  This makes it easier to keep the tags up to date in the
-# source -- we only have to keep track of differences (as opposed to
-# editing every source file when a new tag is added).  If we see an
-# otherwise-unrecognized tag, and the file `mauve-TAG' exists, then we
-# treat the contents of that file as a list of implied tags.
-taglist=${1+"$@"}
-seen_dashdash=
-while test -n "$taglist"; do
-   set $taglist
-   i="$1"
-   shift
-   taglist=${1+"$@"}
-
-   case "$i" in
-    X--)
-       seen_dashdash=yes
-       ;;
-    !!java.*)
-       echo "Invalid tag: $i" 1>&2
-       exit 1
-       ;;
-    !java.* | java.* | !javax.* | javax.* | !locales.* | locales.* | !BinaryCompatibility.* | BinaryCompatibility.*)
-       file="`echo $i | tr . /`"
-       file_specs="$file_specs $file"
-       ;;
-    GUI)
-       tags="$tags GUI $i"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    JAVA2)
-       tags="$tags JDK1.0 JDK1.1 JDK1.2 $i"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    JDK1.2)
-       tags="$tags JDK1.0 JDK1.1 JAVA2 $i"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    JDK1.1)
-       tags="$tags JDK1.0 JLS1.1 $i"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    JDK1.0)
-       tags="$tags JLS1.0"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    JLS1.1)
-       tags="$tags JDK1.0 JDK1.1"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    JLS1.0)
-       tags="$tags JDK1.0"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-    *)
-       file=
-       # Always prefer a tag file in the build directory.
-       if test -f "$outdir/mauve-$i"; then
-	  file="$outdir/mauve-$i"
-       else
-	  if test -f "mauve-$i"; then
-	     file="mauve-$i"
-	  fi
-       fi
-       if test -n "$file"; then
-	  # We don't want tags from a file to be treated as specified
-	  # on the command line.  So we add a `X--' before the
-	  # expansion.  We don't use just `--' as this would confuse
-	  # `set'.
-	  taglist="$taglist X-- `sed -e 's/#.*$//g' $file`"
-       fi
-       tags="$tags $i"
-       test -z "$seen_dashdash" && spectags="$spectags $i"
-       ;;
-   esac
-done
-
-# By default, use JDK1.1.
-test -z "$tags" && tags="JDK1.0 JDK1.1 GUI"
-
-test -n "$verbose" && echo "tags = $tags"
-test -n "$verbose" && echo "spectags = $spectags"
-test -n "$verbose" && echo "file_specs = $file_specs"
-
-classes=/tmp/classes-$$
-: > $classes
-
-(cd gnu/testlet; find java javax gnu org locales BinaryCompatibility -name '*.java' -print) |
-while read file; do
-   exact_match=no
-   test -n "$verbose" && echo "Examining $file"
-   if test -n "$file_specs"; then
-      ok=yes
-      for pat in $file_specs; do
-	 # PAT can be like `java.lang' or `!java.lang'.
-	 # If `!FILE' matches `PAT', then we know the pattern
-	 # starts with `!' and is an exclusion pattern.
-	 # Otherwise, if `!FILE' matches `!PAT', then we know that
-	 # the file should be included.
-	 case "!$file" in
-	  ${pat}*)
-	     ok=no
-	     test -n "$verbose" && echo "  ... excluded by $pat"
-	     ;;
-	  !${pat}.java)
-	     # If the tag list includes an exact match, then we
-	     # unconditionally accept it.
-	     ok=yes
-	     exact_match=yes
-	     test -n "$verbose" && echo "  ... included by $pat (exact match)"
-	     ;;
-	  !${pat}*)
-	     ok=yes
-	     test -n "$verbose" && echo "  ... included by $pat"
-	     ;;
-	 esac
-      done
-   else
-      ok=yes
-   fi
-
-   if test "$ok" = no; then
-      continue
-   fi
-
-   # Surround value with spaces so that case statements will work
-   # correctly.
-   taglist=" `egrep '^// *Tags:' gnu/testlet/$file | sed -e 's,^// *Tags:,,'` "
-   istest=yes
-   case "$taglist" in
-    *\ not-a-test\ *)
-       istest=no
-       ;;
-   esac
-
-   # For an exact match, we don't look at the tags.
-   if test "$exact_match" = no; then
-      ok=no
-      # If any tag on the tag list matches, then we are ok.
-      for tag in $tags; do
-	 case "$taglist" in
-	    *" ${tag} "*)
-	    ok=yes
-	    break
-	    ;;
-	 esac
-      done
-
-      # If any specified tag hits a `not' tag, then we are not ok.
-      if test "$ok" = yes; then
-	 for tag in $spectags; do
-	    case "$taglist" in
-	       *" !${tag} "*)
-	         ok=no
-		 test -n "$verbose" && echo "File $file has tag !$tag"
-		 break
-		 ;;
-	    esac
-	 done
-      else
-	 test -n "$verbose" && echo "  ... excluded because no tag matched"
-      fi
-   fi
-
-   if test "$ok" = yes; then
-      class="gnu.testlet.`echo $file | sed -e 's/\.java$//' | tr / .`"
-      if test "$istest" = yes; then
-	 echo $class >> $classes
-	 test -n "$verbose" && echo "Choose $class"
-      else
-      	 test -n "$verbose" && echo " ... excluded because not-a-test"
-      fi
-   fi
-done
-
-if test -f $outdir/test_classes \
-   && cmp $classes $outdir/test_classes > /dev/null 2>&1; then
-   # Files are the same.
-   rm $classes
-else
-   mv $classes $outdir/test_classes
-fi
-
-exit 0
Index: configure.in
===================================================================
RCS file: /cvs/mauve/mauve/configure.in,v
retrieving revision 1.18
diff -u -r1.18 configure.in
--- configure.in	31 May 2006 17:21:42 -0000	1.18
+++ configure.in	14 Jun 2006 19:10:54 -0000
@@ -13,19 +13,8 @@
 [  --with-vm=TESTJVM  				Run the tests with TESTJVM],
 TEST_JAVA="$with_vm", TEST_JAVA="java")
 AC_SUBST(TEST_JAVA)
-export MAUVEVM="$TEST_JAVA"
 
 
-AC_ARG_WITH(gcj,
-[  --with-gcj                       Use gcj to compile .class files])
-AM_CONDITIONAL(USE_GCJ, test "$with_gcj" = yes)
-
-
-AC_ARG_WITH(bootclasspath,
-[  --with-bootclasspath=BOOTCP   Specify the bootclasspath for the compiler],
-CP_INSTALL_DIR="$with_bootclasspath")
-AC_SUBST(CP_INSTALL_DIR)
-
 AC_ARG_WITH(emma,
 [  --with-emma(=JARLOCATION)       Use emma, either unpacked in classpath 
 folder or at the specified JARLOCATION],
@@ -58,41 +47,12 @@
 AUTO_COMPILE="$enable_auto_compilation",AUTO_COMPILE="yes")
 AC_SUBST(AUTO_COMPILE)
 
-dnl See if the user prefers to build .class files with gcj, or whether
-dnl javac will be used.  The default is to use gcj if we're compiling
-dnl with gcj.
-AC_ARG_ENABLE(gcj-classes,
-[  --enable-gcj-classes             Use gcj, not javac, to build class files],
-   gcj_classes="$enable_gcj_classes", gcj_classes=maybe)
-if test "$gcj_classes" = yes \
-   || (test "$gcj_classes" = maybe && test "$with_gcj" = yes); then
-   JAVAC='$(GCJ) -C'
-fi
-
-dnl If we're using gcj, the default is not to build class files at all.
-AC_ARG_ENABLE(class-files,
-[  --enable-class-files             Create class files when using gcj],
-   class_files="$enable_class_files",
-   if test "$with_gcj" = yes; then
-      class_files=no
-   else
-      class_files=yes
-   fi)
-AM_CONDITIONAL(CLASS_FILES, test "$class_files" = yes)
 
 JAVA=${JAVA-java}
 AC_SUBST(JAVA)
 JAVAC=${JAVAC-javac}
 AC_SUBST(JAVAC)
 
-AM_PROG_GCJ
-
-AC_PROG_INSTALL
-
-AC_SUBST(SHELL)
-
-SRCDIR=`(cd $srcdir; pwd)`
-AC_SUBST(SRCDIR)
 
 dnl Specify the tempdir.
 AC_ARG_WITH(tmpdir,
Index: runner
===================================================================
RCS file: runner
diff -N runner
--- runner	19 Feb 2006 14:27:58 -0000	1.15
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,84 +0,0 @@
-#!/bin/bash
-
-# Copyright (c) 2002, 2004, 2006 Free Software Foundation, Inc.
-# Written by Mark Wielaard <mark@klomp.org>
-
-# This file is part of Mauve.
-
-# Mauve is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# Mauve is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with Mauve; see the file COPYING.  If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# Tries to run one test case. Produces a FAIL output if the test crashes
-# or doesn't finish after some timeout occurs.
-# RUNTIME command can be set in the script to select the VM.
-# For testing (gcj) native code set RUNTIME to 'native' it will then try to
-# execute the program SimpleTestHarness in the current directory.
-# Called from batch_run script.
-#
-# Usage: runner test_class_name
-# Run in the source directory.
-
-if test "x$RUNTIME" = "x" ; then
-#RUNTIME="gij"
-#RUNTIME="Kissme"
-#RUNTIME="/usr/local/sablevm/bin/sablevm -Y"
-#RUNTIME="jc -Xint"
-RUNTIME="jamvm"
-#RUNTIME="native"
-fi
-
-JAVA=$RUNTIME; export JAVA
-
-# Number of seconds to wait for the test to finish
-WAIT=60
-
-# Whether the test was killed by a timeout
-KILLED=0
-
-# Called when timeout occurs
-timeout()
-{
-    kill -9 $PID > /dev/null 2>&1
-    KILLED=1
-}
-
-# Install timeout
-trap timeout SIGALRM
-(sleep $WAIT && kill -s SIGALRM $$) > /dev/null 2>&1 &
-TIMEOUT=$!
-
-testclass=$1
-# Run process
-if test "x$RUNTIME" = "xnative"; then
-    echo $testclass > testfilename.txt
-    ./SimpleTestHarness -debug -verbose -file testfilename.txt &
-else
-    echo $testclass | $RUNTIME -Dmauve.vmexec=$RUNTIME gnu.testlet.SimpleTestHarness -debug -verbose &
-fi
-PID=$!
-wait $PID
-result=$?
-
-# cleanup timeout
-# FIXME: this kills tests too early:
-# trap '' SIGALRM
-# if test $KILLED != 1; then
-#     kill -9 $TIMEOUT > /dev/null 2>&1
-# fi
-
-# Test terminated unexpectedly?
-if test $result != 0 -a $result != 1; then
-    echo "FAIL: $testclass abnormal termination $result CRASH or TIMEOUT"
-fi
Index: uses-list
===================================================================
RCS file: uses-list
diff -N uses-list
--- uses-list	9 Jul 2005 19:31:07 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,97 +0,0 @@
-#!/bin/sh
-
-# Copyright (c) 2002 Free Software Foundation, Inc.
-# Written by Mark Wielaard <mark@klomp.org>
-# Based on the choose script written by Tom Tromey <tromey@cygnus.com>
-
-# This file is part of Mauve.
-
-# Mauve is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# Mauve is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with Mauve; see the file COPYING.  If not, write to
-# the Free Software Foundation, 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# Given a (list of) test classes or java files generates a list of all java
-# files used for that test in the file 'uses_files'.
-
-usage="uses-list [-verbose] output-directory classes_or_files"
-
-if test "$1" = "-verbose"; then
-    verbose=yes
-    shift
-else
-    verbose=
-fi 
-
-outdir="$1"
-shift
-test -z "$outdir" && echo "$usage" && exit -1
-
-usesfile=/tmp/uses-file-$$
-uses=/tmp/uses-$$
-
-class="$1"
-shift
-test -z "$class" && echo "$usage" && exit -1
-
-while test ! -z "$class"; do
-    test -n "$verbose" && echo "Processing $class"
-
-    # Strip trailing .java or .class if given and replace . with /
-    file="`echo $class | sed -e 's/\.java$//' | sed -e 's/\.class$//' | tr . /`"
-    file="$file.java"
-    dir="`dirname $file`"
-    test ! -f "$file" && echo "file $file does not exist" && exit -1
-
-    useslist=" `grep '^// Uses:' $file | sed -e 's,^// Uses:,,'` "
-
-    filelist=$file
-    echo "$file" >> "$usesfile"
-    for used in $useslist; do
-	usedfile=$dir/$used.java
-	if test ! -f "$usedfile"; then
-	    echo "file $used file used by $file does not exist"
-	    exit -1
-	fi
-	echo "$usedfile" >> "$usesfile"
-	filelist="$filelist $usedfile"
-    done
-    test -n "$verbose" && echo " ... uses: $filelist"
-
-    if test $# -gt 0; then
-	class="$1"
-	shift
-    else
-	class=""
-    fi
-done
-
-# Now uniquify the list of auxiliary files we used.
-# I think neither `uniq' nor `sort -u' is portable, so we do it by hand.
-previous=
-sort "$usesfile" |
-while read next; do
-    if test "$previous" != "$next"; then
-	echo "$next" >> $uses
-	previous=$next
-    fi
-done
-
-if test -f $outdir/uses_files \
-    && cmp $uses $outdir/uses_files > /dev/null 2>&1; then
-    # Files are the same.
-    rm $uses
-else
-    mv $uses $outdir/uses_files
-fi
-rm $usesfile

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]