OSDN Git Service

* lib/target-libpath.exp: New file defining set_ld_library_path_env_vars
[pf3gnuchains/gcc-fork.git] / libjava / testsuite / libjava.jacks / jacks.exp
index 4e49503..32529e3 100644 (file)
@@ -1,8 +1,29 @@
 # Run the Jacks test suite.
 # See http://www-124.ibm.com/developerworks/oss/cvs/jikes/~checkout~/jacks/jacks.html
 
+proc load_gcc_lib { filename } {
+    global srcdir
+    load_file $srcdir/../../gcc/testsuite/lib/$filename
+}
+
+load_gcc_lib target-libpath.exp
+
+proc gcj_jacks_setup_xfail {ary} {
+  upvar $ary array
+  global srcdir
+
+  set fd [open $srcdir/libjava.jacks/jacks.xfail]
+  while {! [eof $fd]} {
+    set array([gets $fd]) {}
+  }
+  close $fd
+}
+
 proc gcj_jacks_write {filename} {
   global GCJ_UNDER_TEST
+  global libgcj_jar
+  global libjava_libgcc_s_path
+  global ld_library_path
 
   set gcjl [split $GCJ_UNDER_TEST]
   set gcj_cmd [lindex $gcjl 0]
@@ -11,16 +32,26 @@ proc gcj_jacks_write {filename} {
 
   set fd [open $filename w]
   puts $fd "set JAVAC $gcj_cmd"
-  puts $fd "set JAVA_CLASSPATH \"\""
+  puts $fd "set JAVA_CLASSPATH \"$libgcj_jar\""
   puts $fd "set JAVAC_FLAGS [list $rest]"
   puts $fd "set JAVA [list [libjava_find_gij]]"
-  puts $fd "set JAVA_FLAGS \"\""
+
+  # Without an explicit limit on the heap size, tests depending on
+  # an OutOfMemoryError (e.g. "15.9.4-runtime-creation-2") can result
+  # in a lot of unnecessary thrashing.
+  puts $fd "set JAVA_FLAGS \"-mx=64m\""
+
   puts $fd "set JAVAC_ENCODING_FLAG --encoding="
+  puts $fd "set JAVAC_DEPRECATION_FLAG -Wdeprecated"
   puts $fd "set tcltest::testConstraints(encoding) 1"
   puts $fd "set tcltest::testConstraints(gcj) 1"
+  puts $fd "set tcltest::testConstraints(assert) 1"
   # "Time-consuming JVM limitation tests".
   # puts $fd "set tcltest::testConstraints(jvm) 1"
   close $fd
+
+  set ld_library_path $libjava_libgcc_s_path
+  set_ld_library_path_env_vars
 }
 
 proc gcj_jacks_parse {file} {
@@ -29,14 +60,21 @@ proc gcj_jacks_parse {file} {
     return
   }
 
+  verbose "Reading jacks.xfail"
+  gcj_jacks_setup_xfail xfails
+
   while {! [eof $fd]} {
     set line [gets $fd]
     if {[string match RESULT* $line]} {
       set linelist [split $line]
+      set test [lindex $linelist 1]
+      if {[info exists xfails($test)]} {
+       setup_xfail "*-*-*"
+      }
       if {[lindex $linelist 2] == "PASSED"} {
-       pass [lindex $linelist 1]
+       pass $test
       } else {
-       fail [lindex $linelist 1]
+       fail $test
       }
     }
   }
@@ -66,13 +104,21 @@ proc gcj_jacks_run {} {
   gcj_jacks_write gcj_setup
 
   verbose "Running Jacks..."
-  if {[catch {exec ./jacks gcj} msg]} {
-    verbose "jacks invocation failure: $msg"
-    fail "running jacks"
-  } else {
-    pass "running jacks"
-
+  # Just ignore error exits from the jacks program.
+  # It will always error exit for us, since don't completely pass.
+  # At the moment jacks has a hardcoded call to tclsh8.3. To override this,
+  # we check here on the version and launch the script directly with the
+  # tclsh$tcl_ver.
+  set tcl_ver [info tclversion]
+  if {[package vcompare  $tcl_ver 8.3] >= 0 } {
+    if {[catch {exec tclsh$tcl_ver jacks gcj} msg]} {
+       send_log "Couldn't run jacks: $msg\n"
+       return
+    }
     gcj_jacks_parse logging/gcj.log
+  } else {
+      send_log "No suitable tclsh found, you need at least version 8.3 or up.\n"
+      return
   }
 
   cd $here