]> git.ozlabs.org Git - ccan/blobdiff - ccan/tap/tap.c
base64: fix for unsigned chars (e.g. ARM).
[ccan] / ccan / tap / tap.c
index 9f6d4d066a4e7068d16bc05659cb47fd680b3f6b..b3782104fb2b63274f2a97f0f94fac87cb1b9db3 100644 (file)
@@ -43,10 +43,16 @@ static const char *todo_msg_fixed = "libtap malloc issue";
 static int todo = 0;
 static int test_died = 0;
 static int test_pid;
+void (*tap_fail_callback)(void) = NULL;
 
 /* 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)
@@ -89,7 +95,7 @@ _diag(const char *fmt, ...)
  * 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;
@@ -170,7 +176,7 @@ _gen_result(int ok, const char *func, const char *file, unsigned int line,
        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);
@@ -231,7 +237,7 @@ _cleanup(void)
                _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;
@@ -239,7 +245,7 @@ _cleanup(void)
        }
 
        if(failures)
-               _diag("Looks like you failed %d tests of %d.", 
+               _diag("Looks like you failed %d tests of %d.",
                      failures, test_count);
 
        UNLOCK;
@@ -259,7 +265,7 @@ _tap_init(void)
                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;
@@ -374,8 +380,8 @@ skip(unsigned int n, const char *fmt, ...)
 
        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");
        }
 
@@ -413,8 +419,8 @@ todo_end(void)
        UNLOCK;
 }
 
-int
-exit_status(void)
+static int
+exit_status_(void)
 {
        int r;
 
@@ -434,10 +440,19 @@ exit_status(void)
                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;
+}