OSDN Git Service

* libjava.jacks/jacks.exp (gcj_jacks_setup_xfail): New function.
[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 proc gcj_jacks_setup_xfail {ary} {
5   upvar $ary array
6   global srcdir
7
8   set fd [open $srcdir/libjava.jacks/jacks.xfail]
9   while {! [eof $fd]} {
10     set array([gets $fd]) {}
11   }
12   close $fd
13 }
14
15 proc gcj_jacks_write {filename} {
16   global GCJ_UNDER_TEST
17
18   set gcjl [split $GCJ_UNDER_TEST]
19   set gcj_cmd [lindex $gcjl 0]
20   set rest [join [lreplace $gcjl 0 0]]
21   append rest " -C"
22
23   set fd [open $filename w]
24   puts $fd "set JAVAC $gcj_cmd"
25   puts $fd "set JAVA_CLASSPATH \"\""
26   puts $fd "set JAVAC_FLAGS [list $rest]"
27   puts $fd "set JAVA [list [libjava_find_gij]]"
28   puts $fd "set JAVA_FLAGS \"\""
29   puts $fd "set JAVAC_ENCODING_FLAG --encoding="
30   puts $fd "set tcltest::testConstraints(encoding) 1"
31   puts $fd "set tcltest::testConstraints(gcj) 1"
32   # "Time-consuming JVM limitation tests".
33   # puts $fd "set tcltest::testConstraints(jvm) 1"
34   close $fd
35 }
36
37 proc gcj_jacks_parse {file} {
38   if {[catch {open $file} fd]} {
39     verbose "couldn't parse Jacks output: $fd"
40     return
41   }
42
43   verbose "Reading jacks.xfail"
44   gcj_jacks_setup_xfail xfails
45
46   while {! [eof $fd]} {
47     set line [gets $fd]
48     if {[string match RESULT* $line]} {
49       set linelist [split $line]
50       set test [lindex $linelist 1]
51       if {[info exists xfails($test)]} {
52         setup_xfail "*-*-*"
53       }
54       if {[lindex $linelist 2] == "PASSED"} {
55         pass $test
56       } else {
57         fail $test
58       }
59     }
60   }
61
62   close $fd
63 }
64
65 proc gcj_jacks_run {} {
66   global srcdir
67
68   if {! [file isdirectory $srcdir/libjava.jacks/jacks]} {
69     # No tests.
70     verbose "Jacks tests not found"
71     return
72   }
73
74   # Jacks forces us to do this.  You can't run it from a separate
75   # tree.
76   verbose "Copying Jacks..."
77   catch {system "rm -rf jacks"}
78   catch {system "cp -r $srcdir/libjava.jacks/jacks jacks"}
79
80   set here [pwd]
81   cd jacks
82
83   verbose "Writing Jacks setup file"
84   gcj_jacks_write gcj_setup
85
86   verbose "Running Jacks..."
87   if {[catch {exec ./jacks gcj} msg]} {
88     verbose "jacks invocation failure: $msg"
89     fail "running jacks"
90   } else {
91     pass "running jacks"
92
93     gcj_jacks_parse logging/gcj.log
94   }
95
96   cd $here
97 }
98
99 gcj_jacks_run