]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-sql: Convert unit tests to use sql_init_auto()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 27 Nov 2024 13:40:15 +0000 (15:40 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:01 +0000 (10:40 +0200)
src/lib-sql/driver-test.c
src/lib-sql/test-sql-sqlite.c
src/lib-sql/test-sql.c

index f64583a151a7fbc8f5234ea260871c0f7ec1f761..af748e7fffa7ade6f18d4c1ab0d0720a6f1231a4 100644 (file)
@@ -24,9 +24,12 @@ struct test_sql_result {
        const char *error;
 };
 
-static struct sql_db *driver_test_mysql_init(const char *connect_string);
-static struct sql_db *driver_test_cassandra_init(const char *connect_string);
-static struct sql_db *driver_test_sqlite_init(const char *connect_string);
+static int driver_test_mysql_init(struct event *event, struct sql_db **db_r,
+                                 const char **error_r);
+static int driver_test_cassandra_init(struct event *event, struct sql_db **db_r,
+                                     const char **error_r);
+static int driver_test_sqlite_init(struct event *event, struct sql_db **db_r,
+                                  const char **error_r);
 static void driver_test_deinit(struct sql_db *_db);
 static int driver_test_connect(struct sql_db *_db);
 static void driver_test_disconnect(struct sql_db *_db);
@@ -88,7 +91,7 @@ const struct sql_db driver_test_mysql_db = {
        .flags = SQL_DB_FLAG_BLOCKING | SQL_DB_FLAG_ON_DUPLICATE_KEY,
 
        .v = {
-               .init_legacy = driver_test_mysql_init,
+               .init = driver_test_mysql_init,
                .deinit = driver_test_deinit,
                .connect = driver_test_connect,
                .disconnect = driver_test_disconnect,
@@ -111,7 +114,7 @@ const struct sql_db driver_test_cassandra_db = {
        .name = "cassandra",
 
        .v = {
-               .init_legacy = driver_test_cassandra_init,
+               .init = driver_test_cassandra_init,
                .deinit = driver_test_deinit,
                .connect = driver_test_connect,
                .disconnect = driver_test_disconnect,
@@ -135,7 +138,7 @@ const struct sql_db driver_test_sqlite_db = {
        .flags = SQL_DB_FLAG_ON_CONFLICT_DO | SQL_DB_FLAG_BLOCKING,
 
        .v = {
-               .init_legacy = driver_test_sqlite_init,
+               .init = driver_test_sqlite_init,
                .deinit = driver_test_deinit,
                .connect = driver_test_connect,
                .disconnect = driver_test_disconnect,
@@ -184,30 +187,38 @@ void sql_driver_test_unregister(void)
        sql_driver_unregister(&driver_test_sqlite_db);
 }
 
-static struct sql_db *driver_test_init(const struct sql_db *driver,
-                                       const char *connect_string ATTR_UNUSED)
+static int driver_test_init(const struct sql_db *driver,
+                           struct event *event ATTR_UNUSED,
+                           struct sql_db **db_r,
+                           const char **error_r ATTR_UNUSED)
 {
        pool_t pool = pool_alloconly_create(MEMPOOL_GROWING" test sql driver", 2048);
        struct test_sql_db *ret = p_new(pool, struct test_sql_db, 1);
        ret->pool = pool;
        ret->api = *driver;
        p_array_init(&ret->expected, pool, 8);
-       return &ret->api;
+       sql_init_common(&ret->api);
+       *db_r = &ret->api;
+       return 0;
 }
 
-static struct sql_db *driver_test_mysql_init(const char *connect_string)
+static int driver_test_mysql_init(struct event *event, struct sql_db **db_r,
+                                 const char **error_r)
 {
-       return driver_test_init(&driver_test_mysql_db, connect_string);
+       return driver_test_init(&driver_test_mysql_db, event, db_r, error_r);
 }
 
-static struct sql_db *driver_test_cassandra_init(const char *connect_string)
+static int driver_test_cassandra_init(struct event *event, struct sql_db **db_r,
+                                     const char **error_r)
 {
-       return driver_test_init(&driver_test_cassandra_db, connect_string);
+       return driver_test_init(&driver_test_cassandra_db,
+                               event, db_r, error_r);
 }
 
-static struct sql_db *driver_test_sqlite_init(const char *connect_string)
+static int driver_test_sqlite_init(struct event *event, struct sql_db **db_r,
+                                  const char **error_r)
 {
-       return driver_test_init(&driver_test_sqlite_db, connect_string);
+       return driver_test_init(&driver_test_sqlite_db, event, db_r, error_r);
 }
 
 static void driver_test_deinit(struct sql_db *_db ATTR_UNUSED)
index c47180c144f73bb76104961fd174e3fa549497cf..77e13ec1ca5c19b386e81b97dcd5b7140656a89f 100644 (file)
@@ -1,6 +1,7 @@
 /* Copyright (c) 2021 Dovecot authors, see the included COPYING file */
 
 #include "lib.h"
+#include "settings.h"
 #include "sql-api-private.h"
 #include "test-common.h"
 #include "sql-api-private.h"
@@ -24,19 +25,22 @@ static void test_sql_sqlite(void)
 {
        test_begin("test sql api");
 
-       const struct sql_legacy_settings set = {
-               .driver = "sqlite",
-               .connect_string = "test-database.db journal_mode=wal",
-       };
+       struct settings_simple set;
+       settings_simple_init(&set, (const char *const []) {
+               "sql_driver", "sqlite",
+               "sqlite_path", "test-database.db",
+               "sqlite_journal_mode", "wal",
+               NULL,
+       });
        struct sql_db *sql = NULL;
        const char *error = NULL;
 
        sql_drivers_init_without_drivers();
        driver_sqlite_init();
 
-       test_assert(sql_init_legacy_full(&set, &sql, &error) == 0 &&
-                   sql != NULL &&
-                   error == NULL);
+       if (sql_init_auto(set.event, &sql, &error) <= 0)
+               i_fatal("%s", error);
+       test_assert(sql != NULL && error == NULL);
        setup_database(sql);
 
        /* insert data */
@@ -62,6 +66,7 @@ static void test_sql_sqlite(void)
 
        driver_sqlite_deinit();
        sql_drivers_deinit_without_drivers();
+       settings_simple_deinit(&set);
 
        test_end();
 }
index cbb4d3893a36751f35be24eac2c8b314a873c366..f4a432efcdbe2c84caabbc03b389f1351b165eed 100644 (file)
@@ -1,28 +1,31 @@
 /* Copyright (c) 2021 Dovecot authors, see the included COPYING file */
 
 #include "lib.h"
+#include "settings.h"
 #include "test-common.h"
 #include "sql-api-private.h"
 #include "driver-test.h"
 
 static struct sql_db *setup_sql(void)
 {
-       const struct sql_legacy_settings set = {
-               .driver = "sqlite",
-               .connect_string = "",
-       };
+       struct settings_simple set;
+       settings_simple_init(&set, (const char *const []) {
+               "sql_driver", "sqlite",
+               NULL,
+       });
        struct sql_db *sql = NULL;
        const char *error = NULL;
 
        sql_drivers_init_without_drivers();
        sql_driver_test_register();
 
-       test_assert(sql_init_legacy_full(&set, &sql, &error) == 0 &&
-                   sql != NULL &&
-                   error == NULL);
+       if (sql_init_auto(set.event, &sql, &error) <= 0)
+               i_fatal("%s", error);
+       test_assert(sql != NULL && error == NULL);
 
        test_assert(sql_connect(sql) == 0);
        sql_disconnect(sql);
+       settings_simple_deinit(&set);
        return sql;
 }