OSDN Git Service

bff1fea2c8c9613adddc622ddb9026c32d2e1433
[pf3gnuchains/gcc-fork.git] / libjava / testsuite / libjava.jar / jar.exp
1 # Tests for .jar files.
2
3 # Compile a single .jar file to an executable.
4 # Returns 0 on failure.
5 proc gcj_jar_link {jarfile mainclass} {
6 }
7
8 proc gcj_jar_compile_one {jarfile mainclass} {
9   set base [file rootname [file tail $jarfile]]
10   set out [file rootname $jarfile].out
11
12   if {! [gcj_link $base $mainclass [list $jarfile]]} {
13     return
14   }
15
16   gcj_invoke $base $out {}
17 }
18
19 proc gcj_jar_interpret {jarfile} {
20   global INTERPRETER srcdir
21
22   set gij [libjava_find_gij]
23   # libjava_find_gij will return `gij' if it couldn't find the
24   # program; in this case we want to skip the test.
25   if {$INTERPRETER != "yes" || $gij == "gij"} {
26     untested "$jarfile execution - gij test"
27     untested "$jarfile output - gij test"
28     return
29   }
30
31   set opts(_) {}
32   set out [file rootname $jarfile].out
33   libjava_invoke $jarfile "gij test" opts $gij {} $out \
34     -jar $jarfile
35 }
36
37 proc gcj_jar_run {} {
38   global srcdir subdir env
39   foreach jar [lsort [glob -nocomplain ${srcdir}/${subdir}/*.jar]] {
40     set xff [file rootname $jar].xfail
41     set main {}
42     set interp 1
43     foreach item [libjava_read_xfail $xff] {
44       if {[string match main=* $item]} {
45         set main [string range $item 5 end]
46         break
47       } elseif {$item == "no-interpret"} {
48         set interp 0
49       }
50     }
51
52     gcj_jar_compile_one $jar $main
53     if {$interp} {
54       gcj_jar_interpret $jar
55     }
56   }
57     # When we succeed we remove all our clutter.
58     eval gcj_cleanup [glob -nocomplain -- ${main}.*] [list $main ]
59
60     # Reset CLASSPATH that we do not look into testsuite/libjava.jar for *.jar
61     # files which do not belong to the libgcj itself.
62     set env(CLASSPATH) ""
63
64     return 1
65 }
66
67 gcj_jar_run