mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-19 01:29:19 +08:00
verify.exp: New file.
* libjava.verify/verify.exp: New file. * libjava.verify/README.verify: New file. From-SVN: r69253
This commit is contained in:
parent
fc0e6222b1
commit
783b7a595b
@ -1,3 +1,8 @@
|
||||
2003-07-10 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* libjava.verify/verify.exp: New file.
|
||||
* libjava.verify/README.verify: New file.
|
||||
|
||||
2003-07-09 Jeff Sturm <jsturm@one-point.com>
|
||||
|
||||
* libjava.lang/SyncTest.java (run): Cache .class value.
|
||||
|
10
libjava/testsuite/libjava.verify/README.verify
Normal file
10
libjava/testsuite/libjava.verify/README.verify
Normal file
@ -0,0 +1,10 @@
|
||||
The verifier tests come from Mauve.
|
||||
See http://sources.redhat.com/mauve
|
||||
|
||||
You want the "verify" module in the Mauve cvs repository.
|
||||
|
||||
In Mauve, only the sources are checked in. However, these need
|
||||
jasmin to be compiled to bytecode. Since jasmin would require either
|
||||
another VM or gcj itself to already be working and installed (just to
|
||||
compile it), we've chose to precompile all the .j files to .class
|
||||
files and then import the result.
|
81
libjava/testsuite/libjava.verify/verify.exp
Normal file
81
libjava/testsuite/libjava.verify/verify.exp
Normal file
@ -0,0 +1,81 @@
|
||||
# Tests for class verifier.
|
||||
|
||||
global gcj_verify_xfail
|
||||
set gcj_verify_xfail("gij verify of call.fail.Static") 1
|
||||
set gcj_verify_xfail("gij verify of simple.fail.dupfield") 1
|
||||
set gcj_verify_xfail("gij verify of simple.fail.dupinterface") 1
|
||||
set gcj_verify_xfail("gij verify of simple.fail.dupmethod") 1
|
||||
set gcj_verify_xfail("gij verify of subr.fail.jsr10") 1
|
||||
set gcj_verify_xfail("gij verify of subr.fail.jsr8") 1
|
||||
|
||||
|
||||
proc gcj_verify_list_tests {srcdir} {
|
||||
set result {}
|
||||
set here [pwd]
|
||||
cd $srcdir
|
||||
foreach item [lsort [glob -nocomplain */*/*.class]] {
|
||||
lappend result [file rootname $item]
|
||||
}
|
||||
cd $here
|
||||
return $result
|
||||
}
|
||||
|
||||
proc gcj_verify_test_gij {gij srcdir test shouldfail} {
|
||||
global gcj_verify_xfail
|
||||
|
||||
set testname "gij verify of $test"
|
||||
verbose "invoking gij $test - shouldfail=$shouldfail"
|
||||
set result [libjava_load $gij [list --cp $srcdir $test] ""]
|
||||
set status [lindex $result 0]
|
||||
set output [lindex $result 1]
|
||||
|
||||
if {$shouldfail} {
|
||||
# We match the few exceptions that are allowed. This may need
|
||||
# updating from time to time. We do this rather than check the
|
||||
# exit status because we want to catch the case where gij dies in
|
||||
# some inappropriate way.
|
||||
if {[string match *VerifyError* $output]
|
||||
|| [string match *AbstractMethodError* $output]
|
||||
|| [string match *IncompatibleClassChangeError* $output]} {
|
||||
set cmd pass
|
||||
} else {
|
||||
set cmd fail
|
||||
}
|
||||
if {[info exists gcj_verify_xfail($testname)]} {
|
||||
setup_xfail *-*-*
|
||||
}
|
||||
} else {
|
||||
if {$status == "pass"} {
|
||||
set cmd pass
|
||||
} else {
|
||||
set cmd fail
|
||||
}
|
||||
}
|
||||
$cmd $testname
|
||||
}
|
||||
|
||||
proc gcj_verify_run {} {
|
||||
global INTERPRETER srcdir
|
||||
|
||||
set gij [libjava_find_gij]
|
||||
set interpret 1
|
||||
# libjava_find_gij will return `gij' if it couldn't find the
|
||||
# program; in this case we want to skip the test.
|
||||
if {$INTERPRETER != "yes" || $gij == "gij"} {
|
||||
set interpret 0
|
||||
}
|
||||
|
||||
set testsdir $srcdir/libjava.verify/verify
|
||||
foreach test [gcj_verify_list_tests $testsdir] {
|
||||
set shouldfail [string match */fail/* $test]
|
||||
|
||||
if {$interpret} {
|
||||
regsub -all -- / $test . gijname
|
||||
gcj_verify_test_gij $gij $testsdir $gijname $shouldfail
|
||||
}
|
||||
|
||||
# FIXME: run gcj --syntax-only here.
|
||||
}
|
||||
}
|
||||
|
||||
gcj_verify_run
|
Loading…
Reference in New Issue
Block a user