* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-/* FIXME: The real fix is an asprintf module. */
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE 1
-#endif
+#include "config.h"
#include <ctype.h>
#include <stdarg.h>
#include <stdio.h>
static unsigned int e_tests = 0; /* Expected number of tests to run */
static unsigned int failures = 0; /* Number of tests that failed */
static char *todo_msg = NULL;
-static char *todo_msg_fixed = "libtap malloc issue";
+static const char *todo_msg_fixed = "libtap malloc issue";
static int todo = 0;
static int test_died = 0;
static int test_pid;
/* Encapsulate the pthread code in a conditional. In the absence of
libpthread the code does nothing */
-#ifdef HAVE_LIBPTHREAD
+#if HAVE_LIBPTHREAD
#include <pthread.h>
static pthread_mutex_t M = PTHREAD_MUTEX_INITIALIZER;
# define LOCK pthread_mutex_lock(&M)
}
static void
-diagv(char *fmt, va_list ap)
+diagv(const char *fmt, va_list ap)
{
fputs("# ", stdout);
vfprintf(stdout, fmt, ap);
}
static void
-_diag(char *fmt, ...)
+_diag(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
* test_comment -- a comment to print afterwards, may be NULL
*/
unsigned int
-_gen_result(int ok, const char *func, char *file, unsigned int line,
- char *test_name, ...)
+_gen_result(int ok, const char *func, const char *file, unsigned int line,
+ const char *test_name, ...)
{
va_list ap;
char *local_test_name = NULL;
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;
}
UNLOCK;
+ if (!ok && tap_fail_callback)
+ tap_fail_callback();
+
/* We only care (when testing) that ok is positive, but here we
specifically only want to return 1 or 0 */
return ok ? 1 : 0;
/* stdout needs to be unbuffered so that the output appears
in the same place relative to stderr output as it does
with Test::Harness */
- setbuf(stdout, 0);
+// setbuf(stdout, 0);
run_once = 1;
}
}
* Note that the plan is to skip all tests
*/
void
-plan_skip_all(char *reason)
+plan_skip_all(const char *reason)
{
LOCK;
}
void
-diag(char *fmt, ...)
+diag(const char *fmt, ...)
{
va_list ap;
}
void
-skip(unsigned int n, char *fmt, ...)
+skip(unsigned int n, const char *fmt, ...)
{
va_list ap;
char *skip_msg;
}
void
-todo_start(char *fmt, ...)
+todo_start(const char *fmt, ...)
{
va_list ap;