mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| # 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 {}
 | |
|   if {[file exists $srcdir]} {
 | |
|     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 "" if it couldn't find the
 | |
|   # program; in this case we want to skip the test.
 | |
|   if {$INTERPRETER != "yes" || $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
 |