From fdf448f76bd08212cd2a78425251331099e98847 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 8 Jun 2001 22:12:28 +0000 Subject: [PATCH] re PR libgcj/2874 (libjava testsuite disk space usage) 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 | 10 ++++ libjava/testsuite/lib/libjava.exp | 33 ++++++++++- libjava/testsuite/libjava.mauve/mauve.exp | 69 ++++++++++++++++------- 3 files changed, 89 insertions(+), 23 deletions(-) diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog index 769542954c3..71374659e63 100644 --- a/libjava/testsuite/ChangeLog +++ b/libjava/testsuite/ChangeLog @@ -1,3 +1,13 @@ +2001-06-08 Tom Tromey + + 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 * lib/libjava.exp (libjava_arguments): Build with `-no-install' diff --git a/libjava/testsuite/lib/libjava.exp b/libjava/testsuite/lib/libjava.exp index a9ec73eeefa..f6947ccdf3d 100644 --- a/libjava/testsuite/lib/libjava.exp +++ b/libjava/testsuite/lib/libjava.exp @@ -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" diff --git a/libjava/testsuite/libjava.mauve/mauve.exp b/libjava/testsuite/libjava.mauve/mauve.exp index 0dc7bc80d99..649e451a928 100644 --- a/libjava/testsuite/libjava.mauve/mauve.exp +++ b/libjava/testsuite/libjava.mauve/mauve.exp @@ -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 -- 2.30.2