OSDN Git Service

* config/i386/i386.md (*sinxf2): Rename to *sinxf2_i387.
[pf3gnuchains/gcc-fork.git] / libjava / testsuite / libjava.jacks / jacks.exp
1 # Run the Jacks test suite.
2 # See http://www-124.ibm.com/developerworks/oss/cvs/jikes/~checkout~/jacks/jacks.html
3
4 load_gcc_lib target-libpath.exp
5
6 proc gcj_jacks_setup_xfail {ary} {
7   upvar $ary array
8   global srcdir
9
10   set fd [open $srcdir/libjava.jacks/jacks.xfail]
11   while {! [eof $fd]} {
12     set array([gets $fd]) {}
13   }
14   close $fd
15 }
16
17 proc gcj_jacks_write {filename} {
18   global GCJ_UNDER_TEST
19   global libgcj_jar
20   global libjava_libgcc_s_path
21   global ld_library_path
22
23   set gcjl [split $GCJ_UNDER_TEST]
24   set gcj_cmd [lindex $gcjl 0]
25   set rest [join [lreplace $gcjl 0 0]]
26   append rest " -C"
27
28   set fd [open $filename w]
29   puts $fd "set JAVAC $gcj_cmd"
30   puts $fd "set JAVA_CLASSPATH \"$libgcj_jar\""
31   puts $fd "set JAVAC_FLAGS [list $rest]"
32   puts $fd "set JAVA [list [libjava_find_gij]]"
33
34   # Without an explicit limit on the heap size, tests depending on
35   # an OutOfMemoryError (e.g. "15.9.4-runtime-creation-2") can result
36   # in a lot of unnecessary thrashing.
37   puts $fd "set JAVA_FLAGS \"-mx=64m\""
38
39   puts $fd "set JAVAC_ENCODING_FLAG --encoding="
40   puts $fd "set JAVAC_DEPRECATION_FLAG -Wdeprecated"
41   puts $fd "set tcltest::testConstraints(encoding) 1"
42   puts $fd "set tcltest::testConstraints(gcj) 1"
43   puts $fd "set tcltest::testConstraints(assert) 1"
44   # "Time-consuming JVM limitation tests".
45   # puts $fd "set tcltest::testConstraints(jvm) 1"
46   close $fd
47
48   set ld_library_path $libjava_libgcc_s_path
49   set_ld_library_path_env_vars
50 }
51
52 proc gcj_jacks_parse {file} {
53   if {[catch {open $file} fd]} {
54     verbose "couldn't parse Jacks output: $fd"
55     return
56   }
57
58   verbose "Reading jacks.xfail"
59   gcj_jacks_setup_xfail xfails
60
61   while {! [eof $fd]} {
62     set line [gets $fd]
63     if {[string match RESULT* $line]} {
64       set linelist [split $line]
65       set test [lindex $linelist 1]
66       if {[info exists xfails($test)]} {
67         setup_xfail "*-*-*"
68       }
69       if {[lindex $linelist 2] == "PASSED"} {
70         pass $test
71       } else {
72         fail $test
73       }
74     }
75   }
76
77   close $fd
78 }
79
80 proc gcj_jacks_run {} {
81   global srcdir
82
83   if {! [file isdirectory $srcdir/libjava.jacks/jacks]} {
84     # No tests.
85     verbose "Jacks tests not found"
86     return
87   }
88
89   # Jacks forces us to do this.  You can't run it from a separate
90   # tree.
91   verbose "Copying Jacks..."
92   catch {system "rm -rf jacks"}
93   catch {system "cp -r $srcdir/libjava.jacks/jacks jacks"}
94
95   set here [pwd]
96   cd jacks
97
98   verbose "Writing Jacks setup file"
99   gcj_jacks_write gcj_setup
100
101   verbose "Running Jacks..."
102   # Just ignore error exits from the jacks program.
103   # It will always error exit for us, since don't completely pass.
104   # At the moment jacks has a hardcoded call to tclsh8.3. To override this,
105   # we check here on the version and launch the script directly with the
106   # tclsh$tcl_ver.
107   set tcl_ver [info tclversion]
108   if {[package vcompare  $tcl_ver 8.3] >= 0 } {
109     if {[catch {exec tclsh$tcl_ver jacks gcj} msg]} {
110         send_log "Couldn't run jacks: $msg\n"
111         return
112     }
113     gcj_jacks_parse logging/gcj.log
114   } else {
115       send_log "No suitable tclsh found, you need at least version 8.3 or up.\n"
116       return
117   }
118
119   cd $here
120 }
121
122 gcj_jacks_run