diff --git a/src/tests/test_error.c b/src/tests/test_error.c index 2a83f0917e8..78083cac053 100644 --- a/src/tests/test_error.c +++ b/src/tests/test_error.c @@ -8,7 +8,7 @@ #include #include "test.h" -const char *expect_errpfx=0; +char const* expect_errpfx; int n_handle_error=0; void handle_error (const DB_ENV *dbenv, const char *errpfx, const char *msg) { @@ -35,33 +35,47 @@ int main (int argc, const char *argv[]) { r = env->close(env, 0); assert(r==0); } - int do_errfile, do_errcall; - for (do_errfile=0; do_errfile<2; do_errfile++) { - for (do_errcall=0; do_errcall<2; do_errcall++) { - DB_ENV *env; - char buf[10000]=""; - FILE *write_here = fmemopen(buf, sizeof(buf), "w"); - n_handle_error=0; - r = db_env_create(&env, 0); assert(r==0); - env->set_errfile(env,0); // Turn off those annoying errors - if (do_errfile) - env->set_errfile(env, write_here); - if (do_errcall) - env->set_errcall(env, handle_error); - r = env->open(env, DIR, -1, 0644); - assert(r==EINVAL); - r = env->close(env, 0); assert(r==0); - fclose(write_here); - if (do_errfile) { - assert(buf[0]!=0); - assert(buf[0]!=':'); - } else { - assert(buf[0]==0); - } - if (do_errcall) { - assert(n_handle_error==1); - } else { - assert(n_handle_error==0); + int do_errfile, do_errcall,do_errpfx; + for (do_errpfx=0; do_errpfx<2; do_errpfx++) { + for (do_errfile=0; do_errfile<2; do_errfile++) { + for (do_errcall=0; do_errcall<2; do_errcall++) { + DB_ENV *env; + char buf[10000]=""; + FILE *write_here = fmemopen(buf, sizeof(buf), "w"); + n_handle_error=0; + r = db_env_create(&env, 0); assert(r==0); + if (do_errpfx) { + expect_errpfx="whoopi"; + env->set_errpfx(env, expect_errpfx); + } else { + expect_errpfx=0; + } + env->set_errfile(env,0); // Turn off those annoying errors + if (do_errfile) + env->set_errfile(env, write_here); + if (do_errcall) + env->set_errcall(env, handle_error); + r = env->open(env, DIR, -1, 0644); + assert(r==EINVAL); + r = env->close(env, 0); assert(r==0); + fclose(write_here); + if (do_errfile) { + printf("buf=%s(end of buf)\n", buf); + if (do_errpfx) { + assert(strncmp(buf,"whoopi:",6)==0); + } else { + assert(buf[0]!=0); + assert(buf[0]!=':'); + } + assert(buf[strlen(buf)-1]=='\n'); + } else { + assert(buf[0]==0); + } + if (do_errcall) { + assert(n_handle_error==1); + } else { + assert(n_handle_error==0); + } } } }