This is the mail archive of the java-patches@sources.redhat.com 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]

Patch: test suite fix


It turns out to be a pain to get down to 0 FAIL and 0 XPASS.  Some
tests only fail along one specific branch, and our test infrastructure
isn't good enough to isolate them.

So I decided to go with XPASS being nonzero in order to get FAIL to
0.  I think this will be more likely to yield useful results.

2000-12-16  Tom Tromey  <tromey@redhat.com>

	* lib/libjava.exp (test_libjava_from_javac): Strange quoting trick
	for `.class' link case.
	(bytecompile_file): Change directory outside of `catch'.

	* libjava.lang/Thread_1.java: Removed.
	* libjava.lang/Thread_1.out: Likewise.

	* libjava.lang/N19990310_4.xfail: New file.
	* libjava.lang/stub.xfail: Added new failure modes.
	* libjava.lang/stringconst.xfail: New file.
	* libjava.lang/PR162.xfail: New file.
	* libjava.lang/Final.xfail: Removed.

Tom

Index: lib/libjava.exp
===================================================================
RCS file: /cvs/gcc/egcs/libjava/testsuite/lib/libjava.exp,v
retrieving revision 1.20
diff -u -r1.20 libjava.exp
--- libjava.exp	2000/12/16 02:06:29	1.20
+++ libjava.exp	2000/12/16 18:53:14
@@ -18,8 +18,6 @@
     # This strange-looking expression really does quote the `$'.
     regsub -all -- {\$} $source {\$} source
     regsub -all -- {\$} $destfile {\$} destfile
-    verbose "Now source = $source"
-    verbose "Now destfile = $destfile"
     return [target_compile $source $destfile $type $options]
 }
 
@@ -88,19 +86,17 @@
     if {$classpath != ""} then {
         set env(CLASSPATH) $classpath
     }
+    set here [pwd]
+    cd $dirname
     if {[catch {
-	set here [pwd]
-	cd $dirname
 	set q [eval exec "$javac [list $file] -d $objdir 2>@ stdout"]
-	cd $here
-	# "return" a result
-	set q $q
     } msg]} then {
 	verbose "couldn't compile $file: $msg"
 	set r 0
     } else {
 	set r 1
     }
+    cd $here
     return $r
 }
 
@@ -581,8 +577,15 @@
 	    }
 	}
     } else {
+	# This is no evil: we de-listify CLASS_FILES so that we can
+	# turn around and quote the `$' in it for the shell.  I really
+	# hate DejaGNU.  It is so !@#$!@# unpredictable.
+	set hack ""
+	foreach stupid $class_files {
+	    set hack "$hack $stupid"
+	}
 	set x [prune_warnings \
-		 [libjava_tcompile $class_files "$executable" $type $args]]
+		 [libjava_tcompile $hack "$executable" $type $args]]
     }
     if {[info exists opts(xfail-byte)]} {
 	setup_xfail *-*-*
Index: libjava.lang/Final.xfail
===================================================================
RCS file: Final.xfail
diff -N Final.xfail
--- /sourceware/cvs-tmp/cvs8Kd4SQ	Sat Dec 16 10:53:14 2000
+++ /dev/null	Tue May  5 13:32:27 1998
@@ -1 +0,0 @@
-xfail-output
Index: libjava.lang/N19990310_4.xfail
===================================================================
RCS file: N19990310_4.xfail
diff -N N19990310_4.xfail
--- /dev/null	Tue May  5 13:32:27 1998
+++ N19990310_4.xfail	Sat Dec 16 10:53:14 2000
@@ -0,0 +1 @@
+xfail-output
Index: libjava.lang/PR162.xfail
===================================================================
RCS file: PR162.xfail
diff -N PR162.xfail
--- /dev/null	Tue May  5 13:32:27 1998
+++ PR162.xfail	Sat Dec 16 10:53:14 2000
@@ -0,0 +1 @@
+xfail-output
Index: libjava.lang/Thread_1.java
===================================================================
RCS file: Thread_1.java
diff -N Thread_1.java
--- /sourceware/cvs-tmp/cvsUFaQMd	Sat Dec 16 10:53:14 2000
+++ /dev/null	Tue May  5 13:32:27 1998
@@ -1,184 +0,0 @@
-// Various thread tests.
-
-public class Thread_1 extends Thread
-{
-  // The group for the workers.
-  static ThreadGroup subgroup;
-
-  // Which piece of test code to try.
-  static int test_case;
-
-  // Names of the tests.
-  static final int JOIN_GOOD = 0;
-  static final int JOIN_TIMEOUT = 1;
-  static final int JOIN_INTERRUPTED = 2;
-  static final int THREAD_EXIT = 3;
-
-  // True if this is normal; false if daemon.
-  boolean normal;
-  // The other thread in the test.
-  Thread_1 other;
-  // True when the thread has entered run().
-  boolean started;
-
-  public void run ()
-  {
-    try
-      {
-	if (normal)
-	  {
-	    System.out.println ("test " + test_case);
-	    // Tell the main thread to start the daemon thread.
-	    synchronized (this)
-	      {
-		started = true;
-		notify ();
-	      }
-	    // Now wait for daemon to start.
-	    synchronized (other)
-	      {
-		while (! other.started)
-		  other.wait ();
-	      }
-	    switch (test_case)
-	      {
-	      case JOIN_GOOD:
-		other.join ();
-		System.out.println ("joined");
-		break;
-	      case JOIN_TIMEOUT:
-		other.join (10);
-		System.out.println (other.isAlive());
-		other.join ();
-		break;
-	      case JOIN_INTERRUPTED:
-		other.join ();
-		System.out.println ("joined");
-		break;
-	      case THREAD_EXIT:
-		// Nothing.
-		break;
-
-	      default:
-		System.out.println ("failure");
-		break;
-	      }
-	  }
-	else
-	  {
-	    // Let the normal thread start first.
-	    synchronized (other)
-	      {
-		while (! other.started)
-		  other.wait();
-	      }
-	    // Tell normal thread that we've started.
-	    synchronized (this)
-	      {
-		started = true;
-		notify ();
-	      }
-	    switch (test_case)
-	      {
-	      case JOIN_GOOD:
-		System.out.println ("daemon done");
-		break;
-	      case JOIN_TIMEOUT:
-		sleep (50);
-		break;
-	      case JOIN_INTERRUPTED:
-		other.interrupt ();
-		break;
-	      case THREAD_EXIT:
-		// Wait for a while.  However, don't wait indefinitely
-		// -- we want this thread to terminate so that the
-		// process won't hang if there is a bug.
-		sleep (10000);
-		System.out.println ("daemon still alive");
-		break;
-
-	      default:
-		System.out.println ("failure");
-		break;
-	      }
-	  }
-      }
-    catch (InterruptedException e)
-      {
-	System.out.println ("interrupted");
-      }
-  }
-
-  public void setOther (Thread_1 x)
-  {
-    other = x;
-  }
-
-  Thread_1 (String name, boolean x)
-  {
-    super (subgroup, name);
-    normal = x;
-    started = false;
-    setDaemon (! normal);
-  }
-
-  // Run a single test.
-  static Thread_1 doit (int what)
-  {
-    // FIXME: we used to just use the same threads each time.  That
-    // didn't work -- must debug.
-    Thread_1 dt = new Thread_1 ("daemon", false);
-    Thread_1 nt = new Thread_1 ("normal", true);
-
-    dt.setOther(nt);
-    nt.setOther(dt);
-
-    test_case = what;
-    try
-      {
-	nt.start();
-	dt.start();
-
-	// Don't wait for the threads if we're doing the exit test.
-	if (what != THREAD_EXIT)
-	  {
-	    nt.join ();
-	    dt.join ();
-	  }
-      }
-    catch (InterruptedException e)
-      {
-	System.out.println ("caught bad exception");
-      }
-
-    return dt;
-  }
-
-  public static void main (String[] args)
-  {
-    subgroup = new ThreadGroup ("sub");
-
-    doit (JOIN_GOOD);
-
-    System.out.println ("active count = " + subgroup.activeCount ());
-
-    Thread_1 dt = doit (JOIN_TIMEOUT);
-    // Make sure that joining a dead thread works.
-    System.out.println ("still alive: " + dt.isAlive ());
-    try
-      {
-	dt.join ();
-      }
-    catch (InterruptedException e)
-      {
-	System.out.println ("exception caught");
-      }
-
-    doit (JOIN_INTERRUPTED);
-
-    // Note: this test has a race conditoin.  So we don't run it any
-    // more.
-    // This test must come last.
-    // doit (THREAD_EXIT);
-  }
-}
Index: libjava.lang/Thread_1.out
===================================================================
RCS file: Thread_1.out
diff -N Thread_1.out
--- /sourceware/cvs-tmp/cvs6LYLlA	Sat Dec 16 10:53:14 2000
+++ /dev/null	Tue May  5 13:32:27 1998
@@ -1,9 +0,0 @@
-test 0
-daemon done
-joined
-active count = 0
-test 1
-true
-still alive: false
-test 2
-interrupted
Index: libjava.lang/stringconst.xfail
===================================================================
RCS file: stringconst.xfail
diff -N stringconst.xfail
--- /dev/null	Tue May  5 13:32:27 1998
+++ stringconst.xfail	Sat Dec 16 10:53:14 2000
@@ -0,0 +1 @@
+xfail-output
Index: libjava.lang/stub.xfail
===================================================================
RCS file: /cvs/gcc/egcs/libjava/testsuite/libjava.lang/stub.xfail,v
retrieving revision 1.1
diff -u -r1.1 stub.xfail
--- stub.xfail	2000/12/16 05:59:45	1.1
+++ stub.xfail	2000/12/16 18:53:14
@@ -1 +1,3 @@
 xfail-byte
+xfail-gcj
+xfail-gcjC

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