static int test_pid;
/* Encapsulate the pthread code in a conditional. In the absence of
- libpthread the code does nothing */
-#if HAVE_LIBPTHREAD
+ libpthread the code does nothing.
+
+ If you have multiple threads calling ok() etc. at the same time you would
+ need this, but in that case your test numbers will be random and I'm not
+ sure it makes sense. --RR
+*/
+#ifdef WANT_PTHREAD
#include <pthread.h>
static pthread_mutex_t M = PTHREAD_MUTEX_INITIALIZER;
# define LOCK pthread_mutex_lock(&M)
* test_comment -- a comment to print afterwards, may be NULL
*/
unsigned int
-_gen_result(int ok, const char *func, const char *file, unsigned int line,
+_gen_result(int ok, const char *func, const char *file, unsigned int line,
const char *test_name, ...)
{
va_list ap;
if(local_test_name) {
name_is_digits = 1;
for(c = local_test_name; *c != '\0'; c++) {
- if(!isdigit(*c) && !isspace(*c)) {
+ if(!isdigit((unsigned char)*c)
+ && !isspace((unsigned char)*c)) {
name_is_digits = 0;
break;
}
printf("\n");
if(!ok)
- _diag(" Failed %stest (%s:%s() at line %d)",
+ _diag(" Failed %stest (%s:%s() at line %d)",
todo ? "(TODO) " : "", file, func, line);
free(local_test_name);
_diag("Looks like you planned %d tests but only ran %d.",
e_tests, test_count);
if(failures) {
- _diag("Looks like you failed %d tests of %d run.",
+ _diag("Looks like you failed %d tests of %d run.",
failures, test_count);
}
UNLOCK;
}
if(failures)
- _diag("Looks like you failed %d tests of %d.",
+ _diag("Looks like you failed %d tests of %d.",
failures, test_count);
UNLOCK;
atexit(_cleanup);
/* stdout needs to be unbuffered so that the output appears
- in the same place relative to stderr output as it does
+ in the same place relative to stderr output as it does
with Test::Harness */
// setbuf(stdout, 0);
run_once = 1;
while(n-- > 0) {
test_count++;
- printf("ok %d # skip %s\n", test_count,
- skip_msg != NULL ?
+ printf("ok %d # skip %s\n", test_count,
+ skip_msg != NULL ?
skip_msg : "libtap():malloc() failed");
}
UNLOCK;
}
-int
-exit_status(void)
+static int
+exit_status_(void)
{
int r;
return r;
}
- /* Return the number of tests that failed + the number of tests
+ /* Return the number of tests that failed + the number of tests
that weren't run */
r = failures + e_tests - test_count;
UNLOCK;
return r;
}
+
+int
+exit_status(void)
+{
+ int r = exit_status_();
+ if (r > 255)
+ r = 255;
+ return r;
+}