-/*
- * Copyright (C) 1995-2005, Index Data ApS
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) Index Data
* See the file LICENSE for details.
- *
- * $Id: test.c,v 1.10 2006-07-07 13:39:04 heikki Exp $
*/
/** \file test.c
static int test_todo = 0;
static int test_verbose = 1;
static const char *test_prog = 0;
-static int log_tests = 0;
+static int log_tests = 0;
+static int test_stop = 0;
-static FILE *get_file()
+static FILE *get_file(void)
{
if (test_fout)
return test_fout;
test_verbose = atoi(argv[i]);
continue;
}
+ else if (i < argc && !strcmp(suf, "stop"))
+ {
+ test_stop = 1;
+ continue;
+ }
else if (!strcmp(suf, "help"))
{
- fprintf(stderr,
+ fprintf(stderr,
"--test-help help\n"
"--test-file fname output to fname\n"
+ "--test-stop stop at first failing test\n"
"--test-verbose level verbose level\n"
" 0=Quiet. Only exit code tells what's wrong\n"
" 1=Report+Summary only if tests fail.\n"
fprintf(stderr, "Use --test-help for more info\n");
exit(1);
}
-
+
}
break;
}
void yaz_check_init_log(const char *argv0)
{
char logfilename[2048];
- log_tests = 1;
+ log_tests = 1;
sprintf(logfilename,"%s.log", progname(argv0) );
yaz_log_init_file(logfilename);
yaz_log_trunc();
}
if (test_fout)
fclose(test_fout);
+ yaz_deinit_globals();
if (test_failed)
exit(1);
exit(0);
const char *left, const char *right, int lval, int rval)
{
char formstr[2048];
-
- if (type == YAZ_TEST_TYPE_OK)
+
+ if (type == YAZ_TEST_TYPE_OK)
sprintf(formstr, "%.500s == %.500s ", left, right);
else
sprintf(formstr, "%.500s != %.500s\n %d != %d", left, right, lval,rval);
yaz_check_print1(type, file, line, formstr);
}
-void yaz_check_print1(int type, const char *file, int line,
+void yaz_check_print1(int type, const char *file, int line,
const char *expr)
{
const char *msg = "unknown";
}
if (printit)
{
- fprintf(get_file(), "%s:%d %s: ", file, line, msg);
+ fprintf(get_file(), "%s:%d: %s: ", file, line, msg);
fprintf(get_file(), "%s\n", expr);
}
if (log_tests)
yaz_log(YLOG_LOG, "%s:%d %s: ", file, line, msg);
yaz_log(YLOG_LOG, "%s", expr);
}
+ if ( type == YAZ_TEST_TYPE_FAIL && test_stop )
+ {
+ exit(1);
+ }
}
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab