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