]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: test-failures - tests get/set handlers and the various log levels
authorPhil Carmody <phil@dovecot.fi>
Mon, 15 Jun 2015 11:31:19 +0000 (14:31 +0300)
committerPhil Carmody <phil@dovecot.fi>
Mon, 15 Jun 2015 11:31:19 +0000 (14:31 +0300)
Also indirectoy tests the new lib-test test_expect* family.

Signed-off-by: Phil Carmody <phil@dovecot.fi>
src/lib/Makefile.am
src/lib/test-failures.c [new file with mode: 0644]
src/lib/test-lib.c
src/lib/test-lib.h

index 698a5fcb7c0d6c5389434ee765cecf003ba80cfb..a6f47e075923929b12c8e2edfc0e9473355b1eaa 100644 (file)
@@ -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 (file)
index 0000000..27ca88f
--- /dev/null
@@ -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();
+}
index 9f1d8f74826824f802bed181a0ec171583f64e19..70caa87f0ed28acddbeb5073f30904d9192f625b 100644 (file)
@@ -14,6 +14,7 @@ int main(void)
                test_buffer,
                test_crc32,
                test_data_stack,
+               test_failures,
                test_guid,
                test_hash,
                test_hash_format,
index c01c4f25bda56d096aed3910332c5e16396871b6..e6ed09356853612a73998b2a74679680cce88e5f 100644 (file)
@@ -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);