summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrpj <rpj>2011-07-03 02:52:34 +0000
committerrpj <rpj>2011-07-03 02:52:34 +0000
commit36d058cf99f56deb90b7551c0fefdaf0180c0a90 (patch)
treeffd69f560140879dba52132b8ca0367b2d3feaa4
parent0839be6d0a321aa805d2b31bf38ea13e76ccb532 (diff)
See the ChangeLog
-rw-r--r--tests/ChangeLog5
-rw-r--r--tests/cancel2.c8
-rw-r--r--tests/exception3.c21
-rw-r--r--tests/exit2.c2
-rw-r--r--tests/exit3.c2
5 files changed, 18 insertions, 20 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 784c329..c4120ea 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -2,6 +2,11 @@
* create3.c: Removed; testing a condition that is not in the library's
scope and was more trouble than it was worth.
+ * cancel2.c: Ensure this test only runs for Structured or C++ EH.
+ * exit2.c: Shorten Sleep() time.
+ * exit3.c: Likewise.
+ * exception3.c: Likewise; make terminate routine consistent for all
+ build environments.
2011-07-02 Ross Johnson <ross dot johnson at homemail dot com dot au>
diff --git a/tests/cancel2.c b/tests/cancel2.c
index 83cb6eb..0eff4a0 100644
--- a/tests/cancel2.c
+++ b/tests/cancel2.c
@@ -72,7 +72,10 @@
* - Process returns non-zero exit status.
*/
-#if defined(_MSC_VER) || defined(__cplusplus)
+/*
+ * EXCEPTION_CONTINUE_SEARCH is used to identify that we are using SEH
+ */
+#if defined(EXCEPTION_CONTINUE_SEARCH) || defined(__cplusplus)
#include "test.h"
@@ -242,9 +245,12 @@ main()
#else /* defined(_MSC_VER) || defined(__cplusplus) */
+#include <stdio.h>
+
int
main()
{
+ fprintf(stderr, "Test N/A for this compiler environment.\n");
return 0;
}
diff --git a/tests/exception3.c b/tests/exception3.c
index 3e8b9e7..65bcdbe 100644
--- a/tests/exception3.c
+++ b/tests/exception3.c
@@ -101,7 +101,7 @@ terminateFunction ()
{
assert(pthread_mutex_lock(&caughtLock) == 0);
caught++;
-#if 1
+#if 0
{
FILE * fp = fopen("pthread.log", "a");
fprintf(fp, "Caught = %d\n", caught);
@@ -110,18 +110,6 @@ terminateFunction ()
#endif
assert(pthread_mutex_unlock(&caughtLock) == 0);
-#if defined(__MINGW32__)
- /*
- * Seems to work. That is, threads exit and the process
- * continues. Note: need to check correct POSIX behaviour.
- * My guess is: this is because of the
- * eh incompatibility between g++ and MSVC++. That is,
- * an exception thrown in g++ code doesn't propogate
- * through or to MSVC++ code, and vice versa.
- * Applications should probably not depend on this.
- */
- pthread_exit((void *) 0);
-#else
/*
* Notes from the MSVC++ manual:
* 1) A term_func() should call exit(), otherwise
@@ -129,13 +117,12 @@ terminateFunction ()
* abort() raises SIGABRT. The default signal handler
* for all signals terminates the calling program with
* exit code 3.
- * 2) A term_func() must not throw an exception. Therefore
+ * 2) A term_func() must not throw an exception. Dev: Therefore
* term_func() should not call pthread_exit() if an
- * an exception-using version of pthreads-win32 library
+ * exception-using version of pthreads-win32 library
* is being used (i.e. either pthreadVCE or pthreadVSE).
*/
exit(0);
-#endif
}
void *
@@ -172,7 +159,7 @@ main()
assert(pthread_create(&et[i], NULL, exceptionedThread, NULL) == 0);
}
- Sleep(5000);
+ Sleep(NUMTHREADS * 100);
assert(caught == NUMTHREADS);
diff --git a/tests/exit2.c b/tests/exit2.c
index 196139a..b9f785e 100644
--- a/tests/exit2.c
+++ b/tests/exit2.c
@@ -58,7 +58,7 @@ main(int argc, char * argv[])
assert(pthread_create(&t, NULL, func, (void *) NULL) == 0);
- Sleep(1000);
+ Sleep(100);
return 0;
}
diff --git a/tests/exit3.c b/tests/exit3.c
index a8b12c8..18859e4 100644
--- a/tests/exit3.c
+++ b/tests/exit3.c
@@ -61,7 +61,7 @@ main(int argc, char * argv[])
assert(pthread_create(&id[i], NULL, func, (void *)(size_t)i) == 0);
}
- Sleep(1000);
+ Sleep(400);
/* Success. */
return 0;