]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: Add test-mail-index.h for easily doing init/deinit for mail_index
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 27 Jan 2020 10:11:13 +0000 (12:11 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 31 Jan 2020 12:36:10 +0000 (12:36 +0000)
src/lib-index/Makefile.am
src/lib-index/test-mail-index-modseq.c
src/lib-index/test-mail-index.h [new file with mode: 0644]

index 4c77c00ecc60e80023402427b6ffa51ea94b95c1..e7856e602be127d64b494e76cd896a45214c1da8 100644 (file)
@@ -118,3 +118,5 @@ check-local:
 
 pkginc_libdir=$(pkgincludedir)
 pkginc_lib_HEADERS = $(headers)
+
+noinst_HEADERS = test-mail-index.h
index b5180e990b82e7fa887a49264430e10cd6a5093b..b40d3c4fd3a4bfff0e888fb21b199798d9cc1a16 100644 (file)
@@ -1,15 +1,11 @@
 /* Copyright (c) 2016-2018 Dovecot authors, see the included COPYING file */
 
 #include "lib.h"
-#include "ioloop.h"
-#include "unlink-directory.h"
 #include "test-common.h"
-#include "mail-index-private.h"
+#include "test-mail-index.h"
 #include "mail-index-modseq.h"
 #include "mail-transaction-log-private.h"
 
-#define TESTDIR_NAME ".dovecot.test"
-
 static void test_mail_index_modseq_get_next_log_offset(void)
 {
        static const struct {
@@ -29,17 +25,9 @@ static void test_mail_index_modseq_get_next_log_offset(void)
        struct mail_index_view *view, *view2;
        struct mail_index_transaction *trans;
        uint32_t seq, uid;
-       const char *error;
-
-       (void)unlink_directory(TESTDIR_NAME, UNLINK_DIRECTORY_FLAG_RMDIR, &error);
-       if (mkdir(TESTDIR_NAME, 0700) < 0)
-               i_error("mkdir(%s) failed: %m", TESTDIR_NAME);
-
-       ioloop_time = 1;
 
        test_begin("mail_transaction_log_file_get_modseq_next_offset()");
-       index = mail_index_alloc(NULL, TESTDIR_NAME, "test.dovecot.index");
-       test_assert(mail_index_open_or_create(index, MAIL_INDEX_OPEN_FLAG_CREATE) == 0);
+       index = test_mail_index_init();
        view = mail_index_view_open(index);
        mail_index_modseq_enable(index);
 
@@ -75,10 +63,7 @@ static void test_mail_index_modseq_get_next_log_offset(void)
 
        mail_index_view_close(&view);
        mail_index_view_close(&view2);
-       mail_index_close(index);
-       mail_index_free(&index);
-
-       (void)unlink_directory(TESTDIR_NAME, UNLINK_DIRECTORY_FLAG_RMDIR, &error);
+       test_mail_index_deinit(&index);
        test_end();
 }
 
diff --git a/src/lib-index/test-mail-index.h b/src/lib-index/test-mail-index.h
new file mode 100644 (file)
index 0000000..d860a83
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef TEST_MAIL_INDEX_H
+#define TEST_MAIL_INDEX_H
+
+#include "ioloop.h"
+#include "unlink-directory.h"
+#include "mail-index-private.h"
+
+#define TESTDIR_NAME ".dovecot.test"
+
+static inline struct mail_index *test_mail_index_open(void)
+{
+       struct mail_index *index;
+
+       index = mail_index_alloc(NULL, TESTDIR_NAME, "test.dovecot.index");
+       test_assert(mail_index_open_or_create(index, MAIL_INDEX_OPEN_FLAG_CREATE) == 0);
+       return index;
+}
+
+static inline struct mail_index *test_mail_index_init(void)
+{
+       const char *error;
+
+       (void)unlink_directory(TESTDIR_NAME, UNLINK_DIRECTORY_FLAG_RMDIR, &error);
+       if (mkdir(TESTDIR_NAME, 0700) < 0)
+               i_error("mkdir(%s) failed: %m", TESTDIR_NAME);
+
+       ioloop_time = 1;
+
+       return test_mail_index_open();
+}
+
+static inline void test_mail_index_deinit(struct mail_index **index)
+{
+       const char *error;
+
+       mail_index_close(*index);
+       mail_index_free(index);
+       (void)unlink_directory(TESTDIR_NAME, UNLINK_DIRECTORY_FLAG_RMDIR, &error);
+}
+
+#endif