Make sure initialization occurs prior to running tests.

This commit is contained in:
Jason Evans 2014-05-28 11:08:17 -07:00
parent ccf046659a
commit 26f44df742

View File

@ -63,9 +63,22 @@ p_test_fini(void)
test_status_t test_status_t
p_test(test_t *t, ...) p_test(test_t *t, ...)
{ {
test_status_t ret = test_status_pass; test_status_t ret;
va_list ap; va_list ap;
/*
* Make sure initialization occurs prior to running tests. Tests are
* special because they may use internal facilities prior to triggering
* initialization as a side effect of calling into the public API. This
* is a final safety that works even if jemalloc_constructor() doesn't
* run, as for MSVC builds.
*/
if (mallctl("version", NULL, NULL, NULL, 0) != 0) {
malloc_printf("Initialization error");
return (test_status_fail);
}
ret = test_status_pass;
va_start(ap, t); va_start(ap, t);
for (; t != NULL; t = va_arg(ap, test_t *)) { for (; t != NULL; t = va_arg(ap, test_t *)) {
t(); t();