]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
verify.exp: New file.
authorTom Tromey <tromey@redhat.com>
Fri, 11 Jul 2003 22:23:13 +0000 (22:23 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 11 Jul 2003 22:23:13 +0000 (22:23 +0000)
* libjava.verify/verify.exp: New file.
* libjava.verify/README.verify: New file.

From-SVN: r69253

libjava/testsuite/ChangeLog
libjava/testsuite/libjava.verify/README.verify [new file with mode: 0644]
libjava/testsuite/libjava.verify/verify.exp [new file with mode: 0644]

index 1771b13dda4514faf489663ecf923e33da71735f..def930069b065e65e29d1dda1887166309f4ca6f 100644 (file)
@@ -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.
diff --git a/libjava/testsuite/libjava.verify/README.verify b/libjava/testsuite/libjava.verify/README.verify
new file mode 100644 (file)
index 0000000..d28cdf8
--- /dev/null
@@ -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.
diff --git a/libjava/testsuite/libjava.verify/verify.exp b/libjava/testsuite/libjava.verify/verify.exp
new file mode 100644 (file)
index 0000000..9074778
--- /dev/null
@@ -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