This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch: FYI: jar tests


I'm checking this in on the trunk.

This adds support for testing jar files.  We can now check in simple
jar files and run a couple tests on them (compile, execute compiled,
and execute with gij).

If you fix a bug in jar handling, please add a new test here.

It seemed simplest and most robust to just check in the whole .jar
file instead of trying to create it at runtime.

This is related to PR 12996, a .jar compilation regression I
introduced.

Tom

Index: ChangeLog
from  Tom Tromey  <tromey@redhat.com>

	For PR java/12996:
	* libjava.jar/simple.jar: New file.
	* libjava.jar/simple.xfail: New file.
	* libjava.jar/simple.out: New file.
	* libjava.jar/simple.java: New file.
	* libjava.jar/jar.exp: New file.

Index: libjava.jar/jar.exp
===================================================================
RCS file: libjava.jar/jar.exp
diff -N libjava.jar/jar.exp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ libjava.jar/jar.exp 10 Nov 2003 21:26:29 -0000
@@ -0,0 +1,59 @@
+# Tests for .jar files.
+
+# Compile a single .jar file to an executable.
+# Returns 0 on failure.
+proc gcj_jar_link {jarfile mainclass} {
+}
+
+proc gcj_jar_compile_one {jarfile mainclass} {
+  set base [file rootname [file tail $jarfile]]
+  set out [file rootname $jarfile].out
+
+  if {! [gcj_link $base $mainclass [list $jarfile]]} {
+    return
+  }
+
+  gcj_invoke $base $out {}
+}
+
+proc gcj_jar_interpret {jarfile} {
+  global INTERPRETER srcdir
+
+  set gij [libjava_find_gij] 
+  # libjava_find_gij will return `gij' if it couldn't find the
+  # program; in this case we want to skip the test.
+  if {$INTERPRETER != "yes" || $gij == "gij"} {
+    untested "$jarfile execution - gij test"
+    untested "$jarfile output - gij test"
+    return
+  }
+
+  set opts(_) {}
+  set out [file rootname $jarfile].out
+  libjava_invoke $jarfile "gij test" opts $gij {} $out \
+    -jar $jarfile
+}
+
+proc gcj_jar_run {} {
+  global srcdir subdir
+  foreach jar [lsort [glob -nocomplain ${srcdir}/${subdir}/*.jar]] {
+    set xff [file rootname $jar].xfail
+    set main {}
+    set interp 1
+    foreach item [libjava_read_xfail $xff] {
+      if {[string match main=* $item]} {
+	set main [string range $item 5 end]
+	break
+      } elseif {$item == "no-interpret"} {
+	set interp 0
+      }
+    }
+
+    gcj_jar_compile_one $jar $main
+    if {$interp} {
+      gcj_jar_interpret $jar
+    }
+  }
+}
+
+gcj_jar_run
Index: libjava.jar/simple.jar
===================================================================
RCS file: libjava.jar/simple.jar
diff -N libjava.jar/simple.jar
Binary files /dev/null and simple.jar differ
Index: libjava.jar/simple.java
===================================================================
RCS file: libjava.jar/simple.java
diff -N libjava.jar/simple.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ libjava.jar/simple.java 10 Nov 2003 21:26:29 -0000
@@ -0,0 +1,7 @@
+public class simple
+{
+  public static void main(String[] args)
+  {
+    System.out.println("hi");
+  }
+}
Index: libjava.jar/simple.out
===================================================================
RCS file: libjava.jar/simple.out
diff -N libjava.jar/simple.out
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ libjava.jar/simple.out 10 Nov 2003 21:26:29 -0000
@@ -0,0 +1 @@
+hi
Index: libjava.jar/simple.xfail
===================================================================
RCS file: libjava.jar/simple.xfail
diff -N libjava.jar/simple.xfail
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ libjava.jar/simple.xfail 10 Nov 2003 21:26:29 -0000
@@ -0,0 +1 @@
+main=simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]