File: [cvs.NetBSD.org] / src / external / mit / expat / dist / tests / minicheck.c (download)
Revision 1.1.1.2.4.1, Wed Jun 21 18:09:08 2017 UTC (6 years, 9 months ago) by snj
Branch: netbsd-8
CVS Tags: netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, matt-nb8-mediatek-base, matt-nb8-mediatek Changes since 1.1.1.2: +1 -4
lines
Pull up following revision(s) (requested by spz in ticket #48):
doc/3RDPARTY: 1.1454
external/mit/expat/dist/AUTHORS: up to 1.1.1.1
external/mit/expat/dist/CMake.README: up to 1.1.1.4
external/mit/expat/dist/CMakeLists.txt: up to 1.1.1.4
external/mit/expat/dist/COPYING: up to 1.1.1.3
external/mit/expat/dist/Changes: up to 1.1.1.5
external/mit/expat/dist/MANIFEST: up to 1.1.1.5
external/mit/expat/dist/Makefile.in: up to 1.1.1.5
external/mit/expat/dist/README: up to 1.1.1.5
external/mit/expat/dist/amiga/Makefile: delete
external/mit/expat/dist/amiga/README.txt: delete
external/mit/expat/dist/amiga/expat.xml: delete
external/mit/expat/dist/amiga/expat_68k.c: delete
external/mit/expat/dist/amiga/expat_68k.h: delete
external/mit/expat/dist/amiga/expat_68k_handler_stubs.c: delete
external/mit/expat/dist/amiga/expat_base.h: delete
external/mit/expat/dist/amiga/expat_lib.c: delete
external/mit/expat/dist/amiga/expat_vectors.c: delete
external/mit/expat/dist/amiga/include/inline4/expat.h: delete
external/mit/expat/dist/amiga/include/interfaces/expat.h: delete
external/mit/expat/dist/amiga/include/libraries/expat.h: delete
external/mit/expat/dist/amiga/include/proto/expat.h: delete
external/mit/expat/dist/amiga/launch.c: delete
external/mit/expat/dist/bcb5/README.txt: delete
external/mit/expat/dist/bcb5/all_projects.bpg: delete
external/mit/expat/dist/bcb5/elements.bpf: delete
external/mit/expat/dist/bcb5/elements.bpr: delete
external/mit/expat/dist/bcb5/elements.mak: delete
external/mit/expat/dist/bcb5/expat.bpf: delete
external/mit/expat/dist/bcb5/expat.bpr: delete
external/mit/expat/dist/bcb5/expat.mak: delete
external/mit/expat/dist/bcb5/expat_static.bpf: delete
external/mit/expat/dist/bcb5/expat_static.bpr: delete
external/mit/expat/dist/bcb5/expat_static.mak: delete
external/mit/expat/dist/bcb5/expatw.bpf: delete
external/mit/expat/dist/bcb5/expatw.bpr: delete
external/mit/expat/dist/bcb5/expatw.mak: delete
external/mit/expat/dist/bcb5/expatw_static.bpf: delete
external/mit/expat/dist/bcb5/expatw_static.bpr: delete
external/mit/expat/dist/bcb5/expatw_static.mak: delete
external/mit/expat/dist/bcb5/libexpat_mtd.def: delete
external/mit/expat/dist/bcb5/libexpatw_mtd.def: delete
external/mit/expat/dist/bcb5/makefile.mak: delete
external/mit/expat/dist/bcb5/outline.bpf: delete
external/mit/expat/dist/bcb5/outline.bpr: delete
external/mit/expat/dist/bcb5/outline.mak: delete
external/mit/expat/dist/bcb5/setup.bat: delete
external/mit/expat/dist/bcb5/xmlwf.bpf: delete
external/mit/expat/dist/bcb5/xmlwf.bpr: delete
external/mit/expat/dist/bcb5/xmlwf.mak: delete
external/mit/expat/dist/configure: up to 1.1.1.5
external/mit/expat/dist/configure.ac: up to 1.1.1.3
external/mit/expat/dist/configure.in: delete
external/mit/expat/dist/doc/reference.html: up to 1.1.1.4
external/mit/expat/dist/examples/elements.c: up to 1.1.1.4
external/mit/expat/dist/examples/elements.dsp: delete
external/mit/expat/dist/examples/outline.c: up to 1.1.1.3
external/mit/expat/dist/examples/outline.dsp: delete
external/mit/expat/dist/expat.dsw: delete
external/mit/expat/dist/expat_config.h.in: up to 1.1.1.5
external/mit/expat/dist/lib/Makefile.MPW: delete
external/mit/expat/dist/lib/amigaconfig.h: delete
external/mit/expat/dist/lib/expat.dsp: delete
external/mit/expat/dist/lib/expat.h: up to 1.1.1.5
external/mit/expat/dist/lib/expat_external.h: up to 1.1.1.3
external/mit/expat/dist/lib/expat_static.dsp: delete
external/mit/expat/dist/lib/expatw.dsp: delete
external/mit/expat/dist/lib/expatw_static.dsp: delete
external/mit/expat/dist/lib/macconfig.h: delete
external/mit/expat/dist/lib/siphash.h: up to 1.1.1.1
external/mit/expat/dist/lib/winconfig.h: up to 1.1.1.2
external/mit/expat/dist/lib/xmlparse.c: up to 1.7
external/mit/expat/dist/lib/xmlrole.c: up to 1.1.1.4
external/mit/expat/dist/lib/xmltok.c: up to 1.4
external/mit/expat/dist/m4/libtool.m4: up to 1.1.1.4
external/mit/expat/dist/run.sh.in: up to 1.1.1.1
external/mit/expat/dist/tests/benchmark/benchmark.c: up to 1.1.1.2
external/mit/expat/dist/tests/benchmark/benchmark.dsp: delete
external/mit/expat/dist/tests/benchmark/benchmark.dsw: delete
external/mit/expat/dist/tests/memcheck.c: up to 1.1.1.1
external/mit/expat/dist/tests/memcheck.h: up to 1.1.1.1
external/mit/expat/dist/tests/minicheck.c: up to 1.1.1.3
external/mit/expat/dist/tests/minicheck.h: up to 1.1.1.4
external/mit/expat/dist/tests/runtests.c: up to 1.1.1.4
external/mit/expat/dist/tests/xmltest.sh: up to 1.3
external/mit/expat/dist/vms/README.vms: delete
external/mit/expat/dist/vms/descrip.mms: delete
external/mit/expat/dist/vms/expat_config.h: delete
external/mit/expat/dist/win32/MANIFEST.txt: up to 1.1.1.2
external/mit/expat/dist/win32/README.txt: up to 1.1.1.4
external/mit/expat/dist/win32/expat.iss: up to 1.1.1.5
external/mit/expat/dist/xmlwf/codepage.c: up to 1.1.1.3
external/mit/expat/dist/xmlwf/filemap.h: up to 1.1.1.2
external/mit/expat/dist/xmlwf/readfilemap.c: up to 1.1.1.4
external/mit/expat/dist/xmlwf/unixfilemap.c: up to 1.1.1.3
external/mit/expat/dist/xmlwf/win32filemap.c: up to 1.1.1.2
external/mit/expat/dist/xmlwf/xmlfile.c: up to 1.1.1.3
external/mit/expat/dist/xmlwf/xmlwf.c: up to 1.1.1.5
external/mit/expat/dist/xmlwf/xmlwf.dsp: delete
Update expat to 2.2.1.
|
/* Miniature re-implementation of the "check" library.
*
* This is intended to support just enough of check to run the Expat
* tests. This interface is based entirely on the portion of the
* check library being used.
*/
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
#include <assert.h>
#include "internal.h" /* for UNUSED_P only */
#include "minicheck.h"
Suite *
suite_create(const char *name)
{
Suite *suite = (Suite *) calloc(1, sizeof(Suite));
if (suite != NULL) {
suite->name = name;
}
return suite;
}
TCase *
tcase_create(const char *name)
{
TCase *tc = (TCase *) calloc(1, sizeof(TCase));
if (tc != NULL) {
tc->name = name;
}
return tc;
}
void
suite_add_tcase(Suite *suite, TCase *tc)
{
assert(suite != NULL);
assert(tc != NULL);
assert(tc->next_tcase == NULL);
tc->next_tcase = suite->tests;
suite->tests = tc;
}
void
tcase_add_checked_fixture(TCase *tc,
tcase_setup_function setup,
tcase_teardown_function teardown)
{
assert(tc != NULL);
tc->setup = setup;
tc->teardown = teardown;
}
void
tcase_add_test(TCase *tc, tcase_test_function test)
{
assert(tc != NULL);
if (tc->allocated == tc->ntests) {
int nalloc = tc->allocated + 100;
size_t new_size = sizeof(tcase_test_function) * nalloc;
tcase_test_function *new_tests = realloc(tc->tests, new_size);
assert(new_tests != NULL);
tc->tests = new_tests;
tc->allocated = nalloc;
}
tc->tests[tc->ntests] = test;
tc->ntests++;
}
SRunner *
srunner_create(Suite *suite)
{
SRunner *runner = calloc(1, sizeof(SRunner));
if (runner != NULL) {
runner->suite = suite;
}
return runner;
}
static jmp_buf env;
static char const *_check_current_function = NULL;
static int _check_current_lineno = -1;
static char const *_check_current_filename = NULL;
void
_check_set_test_info(char const *function, char const *filename, int lineno)
{
_check_current_function = function;
_check_current_lineno = lineno;
_check_current_filename = filename;
}
static void
add_failure(SRunner *runner, int verbosity)
{
runner->nfailures++;
if (verbosity >= CK_VERBOSE) {
printf("%s:%d: %s\n", _check_current_filename,
_check_current_lineno, _check_current_function);
}
}
void
srunner_run_all(SRunner *runner, int verbosity)
{
Suite *suite;
TCase *tc;
assert(runner != NULL);
suite = runner->suite;
tc = suite->tests;
while (tc != NULL) {
int i;
for (i = 0; i < tc->ntests; ++i) {
runner->nchecks++;
if (tc->setup != NULL) {
/* setup */
if (setjmp(env)) {
add_failure(runner, verbosity);
continue;
}
tc->setup();
}
/* test */
if (setjmp(env)) {
add_failure(runner, verbosity);
continue;
}
(tc->tests[i])();
/* teardown */
if (tc->teardown != NULL) {
if (setjmp(env)) {
add_failure(runner, verbosity);
continue;
}
tc->teardown();
}
}
tc = tc->next_tcase;
}
if (verbosity) {
int passed = runner->nchecks - runner->nfailures;
double percentage = ((double) passed) / runner->nchecks;
int display = (int) (percentage * 100);
printf("%d%%: Checks: %d, Failed: %d\n",
display, runner->nchecks, runner->nfailures);
}
}
void
_fail_unless(int UNUSED_P(condition), const char *UNUSED_P(file), int UNUSED_P(line), const char *msg)
{
/* Always print the error message so it isn't lost. In this case,
we have a failure, so there's no reason to be quiet about what
it is.
*/
if (msg != NULL)
printf("%s", msg);
longjmp(env, 1);
}
int
srunner_ntests_failed(SRunner *runner)
{
assert(runner != NULL);
return runner->nfailures;
}
void
srunner_free(SRunner *runner)
{
free(runner->suite);
free(runner);
}