This is the mail archive of the
java-patches@sources.redhat.com
mailing list for the Java project.
Patch: test suite fix
- To: Java Patch List <java-patches at sourceware dot cygnus dot com>
- Subject: Patch: test suite fix
- From: Tom Tromey <tromey at redhat dot com>
- Date: 16 Dec 2000 12:17:09 -0700
- Reply-To: tromey at redhat dot com
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