OSDN Git Service

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