re PR libgcj/2874 (libjava testsuite disk space usage)
authorTom Tromey <tromey@redhat.com>
Fri, 8 Jun 2001 22:12:28 +0000 (22:12 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 8 Jun 2001 22:12:28 +0000 (22:12 +0000)
Fix for PR libgcj/2874:
* libjava.mauve/mauve.exp (gcj_run_mauve_tests): New proc.
(test_mauve): Return 0 on failure.
* lib/libjava.exp (test_libjava_from_source): Remove generated
files if test is successful.
(test_libjava_from_javac): Likewise.
(gcj_cleanup): New proc.

From-SVN: r43050

libjava/testsuite/ChangeLog
libjava/testsuite/lib/libjava.exp
libjava/testsuite/libjava.mauve/mauve.exp

index 769542954c30bb44a5ad176f11d648067b63e189..71374659e630f6b07c0861e1850e9ca0f57e2caf 100644 (file)
@@ -1,3 +1,13 @@
+2001-06-08  Tom Tromey  <tromey@redhat.com>
+
+       Fix for PR libgcj/2874:
+       * libjava.mauve/mauve.exp (gcj_run_mauve_tests): New proc.
+       (test_mauve): Return 0 on failure.
+       * lib/libjava.exp (test_libjava_from_source): Remove generated
+       files if test is successful.
+       (test_libjava_from_javac): Likewise.
+       (gcj_cleanup): New proc.
+
 2001-06-05  Jeff Sturm  <jsturm@one-point.com>
 
        * lib/libjava.exp (libjava_arguments): Build with `-no-install'
index a9ec73eeefa5f1d4da3e0c2197345422a343ded7..f6947ccdf3d216afe259192f529b5269ec2a1333 100644 (file)
@@ -188,6 +188,21 @@ proc libjava_find_lib {dir name} {
     return ""
 }
 
+# Remove a bunch of files.
+proc gcj_cleanup {args} {
+    foreach file $args {
+       if {[string match *.o $file]} {
+           verbose "removing [file rootname $file].lo"
+           file delete -force [file rootname $file].lo
+       }
+       file delete -force -- $file
+       verbose "removing $file"
+    }
+    # It is simplest to do this instead of trying to figure out what
+    # bits in .libs ought to be removed.
+    catch {system "rm -rf .libs"}
+}
+
 # Compute arguments needed for compiler.  MODE is a libtool mode:
 # either compile or link.
 proc libjava_arguments {{mode compile}} {
@@ -383,6 +398,8 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile
        set errname "$errname $compile_args"
     }
 
+    set removeList [list $executable]
+
     set x [prune_warnings \
             [libjava_tcompile $srcfile "$executable" $target $args]]
     if {[info exists opts(xfail-gcj)]} {
@@ -393,6 +410,7 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile
 
        if {[info exists opts(shouldfail)]} {
            pass "$errname compilation from source"
+           eval gcj_cleanup $removeList
            return
        }
 
@@ -419,9 +437,11 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile
            untested "$errname execution from source compiled test"
            untested "$errname output from source compiled test"
        }
+       eval gcj_cleanup $removeList
        return
     }
     if {[info exists opts(no-link)]} {
+       eval gcj_cleanup $removeList
        return
     }
 
@@ -467,6 +487,7 @@ proc test_libjava_from_source { options srcfile compile_args inpfile resultfile
     }
     if { $passed == 1 } {
        pass "$errname output from source compiled test"
+       eval gcj_cleanup $removeList
     } else {
        clone_output "expected was $expected"
        clone_output "output was $output"
@@ -542,6 +563,8 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
     }
     pass "$errname byte compilation"
 
+    set removeList {}
+
     # Find name to use for --main, and name of all class files.
     set jvscan [find_jvscan]
     verbose "jvscan is $jvscan"
@@ -573,6 +596,8 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
        lappend class_files $objdir/$file.class
     }
 
+    eval lappend removeList $class_files
+
     # Usually it is an error for a test program not to have a `main'
     # method.  However, for no-exec tests it is ok.  Treat no-link
     # like no-exec here.
@@ -615,18 +640,20 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
            set executable [file rootname [file tail $c_file]].o
            set x [prune_warnings \
                     [libjava_tcompile $c_file "$executable" $type $args]]
+           lappend removeList $executable
            if {$x != ""} {
                break
            }
        }
     } else {
-       # This is no evil: we de-listify CLASS_FILES so that we can
+       # This is so evil: we de-listify CLASS_FILES so that we can
        # turn around and quote the `$' in it for the shell.  I really
        # hate DejaGNU.  It is so !@#$!@# unpredictable.
        set hack ""
        foreach stupid $class_files {
            set hack "$hack $stupid"
        }
+       lappend removeList $executable
        set x [prune_warnings \
                 [libjava_tcompile $hack "$executable" $type $args]]
     }
@@ -650,6 +677,7 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
            untested "$errname execution from bytecode->native test"
            untested "$errname output from bytecode->native test"
        }
+       eval gcj_cleanup $removeList
        return
     }
 
@@ -662,7 +690,7 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
     $status "$errname execution from bytecode->native test"
     if { $status != "pass" } {
        untested "$errname output from bytecode->native test"
-       return;
+       return
     }
 
     verbose "resultfile is $resultfile"
@@ -695,6 +723,7 @@ proc test_libjava_from_javac { options srcfile compile_args inpfile resultfile e
     }
     if { $passed == 1 } {
        pass "$errname output from bytecode->native test"
+       eval gcj_cleanup $removeList
     } else {
        clone_output "expected was $expected"
        clone_output "output was $output"
index 0dc7bc80d99b479b03800be4c2c4846450a52301..649e451a928bcd13577adc0e071f13aafe5ad622 100644 (file)
@@ -52,13 +52,14 @@ proc mauve_compute_uses {aName} {
   return [lsort [array names uses]]
 }
 
-# Run all the Mauve tests.
+# Run all the Mauve tests.  Return 1 on success, 0 on any failure.  If
+# the tests are skipped, that is treated like success.
 proc test_mauve {} {
   global srcdir objdir subdir env
 
   if {! [info exists env(MAUVEDIR)]} then {
     verbose "MAUVEDIR not set; not running Mauve tests"
-    return
+    return 1
   }
 
   # Run in subdir so we don't overwrite our own Makefile.
@@ -95,7 +96,7 @@ proc test_mauve {} {
   } msg]} then {
     fail "Mauve configure"
     verbose "configure failed with $msg"
-    return
+    return 0
   }
   pass "Mauve configure"
 
@@ -114,14 +115,14 @@ proc test_mauve {} {
   } msg]} then {
     fail "Mauve build"
     verbose "build failed with $msg"
-    return
+    return 0
   }
   pass "Mauve build"
 
   set srcfile $full_srcdir/$subdir/DejaGNUTestHarness.java
   if {! [bytecompile_file $srcfile [pwd] $env(MAUVEDIR):[pwd]]} then {
     fail "Compile DejaGNUTestHarness.java"
-    return
+    return 0
   }
   pass "Compile DejaGNUTestHarness.java"
 
@@ -149,9 +150,10 @@ proc test_mauve {} {
     lappend objlist $obj
   }
   if {! $ok} then {
-    return
+    return 0
   }
 
+  set proc_ok 1
   set Executable DejaGNUTestHarness
   foreach file $choices {
     # Turn `java/lang/Foo.java' into `java.lang.Foo'.
@@ -174,12 +176,14 @@ proc test_mauve {} {
       }
     }
     if {! $ok} then {
+      set proc_ok 0
       continue
     }
 
     set x [prune_warnings [target_compile [concat $uses($file) $objlist] \
                             $Executable executable $link_args]]
     if {$x != ""} then {
+      set proc_ok 0
       fail "Link for $class"
       continue
     }
@@ -197,23 +201,28 @@ proc test_mauve {} {
        if {$what == "PASS" || $what == "XPASS"} then {
          pass $msg
        } else {
+         set proc_ok 0
          fail $msg
        }
       }
     }
   }
+
+  return $proc_ok
 }
 
 # Run all the Mauve tests in a sim environment.  In this case, the
 # program cannot use argv[] because there's no way to pass in the
 # command line, so tha name of the class to test is substituted by
-# patching the source of the DejaGNUTestHarness.
+# patching the source of the DejaGNUTestHarness.  Return 1 on success,
+# 0 on any failure.  If the tests are skipped, that is treated like
+# success.
 proc test_mauve_sim {} {
   global srcdir subdir env
 
   if {! [info exists env(MAUVEDIR)]} then {
     verbose "MAUVEDIR not set; not running Mauve tests"
-    return
+    return 1
   }
 
   # Run in subdir so we don't overwrite our own Makefile.
@@ -230,7 +239,7 @@ proc test_mauve_sim {} {
   } msg]} then {
     fail "Mauve configure"
     verbose "configure failed with $msg"
-    return
+    return 0
   }
   pass "Mauve configure"
 
@@ -249,7 +258,7 @@ proc test_mauve_sim {} {
   } msg]} then {
     fail "Mauve build"
     verbose "build failed with $msg"
-    return
+    return 0
   }
   pass "Mauve build"
 
@@ -279,11 +288,12 @@ proc test_mauve_sim {} {
     lappend objlist $obj
   }
   if {! $ok} then {
-    return
+    return 0
   }
 
   lappend objlist gnu/testlet/DejaGNUTestHarness.o
 
+  set proc_ok 1
   set Executable DejaGNUTestHarness
   foreach file $choices {
     # Turn `java/lang/Foo.java' into `java.lang.Foo'.
@@ -307,6 +317,7 @@ proc test_mauve_sim {} {
       }
     }
     if {! $ok} then {
+      set proc_ok 0
       continue
     }
 
@@ -328,7 +339,7 @@ proc test_mauve_sim {} {
     if {! [bytecompile_file [pwd]/gnu/testlet/$srcfile [pwd]/gnu/testlet \
               $env(MAUVEDIR):[pwd]]} then {
        fail "Compile DejaGNUTestHarness.java"
-       return
+       return 0
     }
 
     set x [prune_warnings \
@@ -336,12 +347,14 @@ proc test_mauve_sim {} {
                gnu/testlet/DejaGNUTestHarness.o object $compile_args]]
     if {$x != ""} then {
        fail "Compile DejaGNUTestHarness.java"
+        set proc_ok 0
        continue
-      }
+    }
 
     set x [prune_warnings [target_compile [concat $uses($file) $objlist] \
                             $Executable executable $link_args]]
     if {$x != ""} then {
+      set proc_ok 0
       fail "Link for $class"
       continue
     }
@@ -359,19 +372,33 @@ proc test_mauve_sim {} {
        if {$what == "PASS" || $what == "XPASS"} then {
          pass $msg
        } else {
+         set proc_ok 0
          fail $msg
        }
       }
     }
   }
+
+  return $proc_ok
 }
 
-# The test_mauve* procs will change the current directory.  It's
-# simpler to fix this up here than to keep track of this in the procs.
-set here [pwd]
-if { [board_info target exists is_simulator] } {
-    test_mauve_sim
-} else {
-    test_mauve
+proc gcj_run_mauve_tests {} {
+  # The test_mauve* procs will change the current directory.  It's
+  # simpler to fix this up here than to keep track of this in the
+  # procs.
+  set here [pwd]
+  if { [board_info target exists is_simulator] } {
+    set r [test_mauve_sim]
+  } else {
+    set r [test_mauve]
+  }
+  cd $here
+
+  if {$r} {
+    # No need to keep the build around.  FIXME: this knows how the
+    # tests work.  This whole file could use a rewrite.
+    system "rm -rf mauve-build"
+  }
 }
-cd $here
+
+gcj_run_mauve_tests