From: Phil Carmody Date: Mon, 15 Jun 2015 11:31:19 +0000 (+0300) Subject: lib: test-failures - tests get/set handlers and the various log levels X-Git-Tag: 2.2.19.rc1~340 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8549b59aa3499ddf0b7b59bc2e083933ebbb4f1f;p=thirdparty%2Fdovecot%2Fcore.git lib: test-failures - tests get/set handlers and the various log levels Also indirectoy tests the new lib-test test_expect* family. Signed-off-by: Phil Carmody --- diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index 698a5fcb7c..a6f47e0759 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -294,6 +294,7 @@ test_lib_SOURCES = \ test-buffer.c \ test-crc32.c \ test-data-stack.c \ + test-failures.c \ test-guid.c \ test-hash.c \ test-hash-format.c \ diff --git a/src/lib/test-failures.c b/src/lib/test-failures.c new file mode 100644 index 0000000000..27ca88f17f --- /dev/null +++ b/src/lib/test-failures.c @@ -0,0 +1,71 @@ +/* Copyright (c) 2001-2015 Dovecot authors, see the included COPYING file */ + +/* Unit tests for failure helpers */ + +#include "test-lib.h" +#include "failures.h" + +static int handlers_set_me; + +static void test_failures_handler(const struct failure_context *ctx, + const char *format ATTR_UNUSED, + va_list args ATTR_UNUSED) +{ + handlers_set_me = ctx->type; +} +static void test_get_set_handlers(void) +{ + failure_callback_t *handlers[4]; + test_begin("get_handlers"); + i_get_failure_handlers(handlers, handlers+1, handlers+2, handlers+3); + test_end(); + + test_begin("set_handlers"); + + i_set_debug_handler(&test_failures_handler); + i_debug("If you see this debug, something's gone wrong"); + test_assert(handlers_set_me == LOG_TYPE_DEBUG); + i_set_debug_handler(handlers[3]); + + i_set_info_handler(&test_failures_handler); + i_info("If you see this info, something's gone wrong"); + test_assert(handlers_set_me == LOG_TYPE_INFO); + i_set_info_handler(handlers[2]); + + i_set_error_handler(&test_failures_handler); + i_warning("If you see this warning, something's gone wrong"); + test_assert(handlers_set_me == LOG_TYPE_WARNING); + i_error("If you see this error, something's gone wrong"); + test_assert(handlers_set_me == LOG_TYPE_ERROR); + i_set_error_handler(handlers[1]); + + //i_set_fatal_handler(&test_failures_handler); + //i_fatal("If you see this fatal, something's gone wrong"); + //test_assert(handlers_set_me == LOG_TYPE_FATAL); + //i_set_fatal_handler(handlers[0]); + + test_end(); +} +static void test_expected(void) +{ + test_begin("expected messages"); + test_expect_errors(1); + i_warning("deliberate warning - be happy you're seeing this"); + test_expect_no_more_errors(); + test_end(); +} +static void test_expected_str(void) +{ + test_begin("expected strings in messages"); + test_expect_error_string("be happy"); + i_error("deliberate error - be happy you're seeing this"); + test_expect_no_more_errors(); + test_end(); +} + +void test_failures(void) +{ + test_get_set_handlers(); + test_expected(); + test_expected_str(); +} diff --git a/src/lib/test-lib.c b/src/lib/test-lib.c index 9f1d8f7482..70caa87f0e 100644 --- a/src/lib/test-lib.c +++ b/src/lib/test-lib.c @@ -14,6 +14,7 @@ int main(void) test_buffer, test_crc32, test_data_stack, + test_failures, test_guid, test_hash, test_hash_format, diff --git a/src/lib/test-lib.h b/src/lib/test-lib.h index c01c4f25bd..e6ed093568 100644 --- a/src/lib/test-lib.h +++ b/src/lib/test-lib.h @@ -15,6 +15,7 @@ void test_buffer(void); void test_crc32(void); void test_data_stack(void); enum fatal_test_state fatal_data_stack(int); +void test_failures(void); void test_guid(void); void test_hash(void); void test_hash_format(void);