From: Timo Sirainen Date: Wed, 27 Nov 2024 13:40:15 +0000 (+0200) Subject: lib-sql: Convert unit tests to use sql_init_auto() X-Git-Tag: 2.4.1~374 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=063057b4c96499bd075c85084b5133e257cc538c;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: Convert unit tests to use sql_init_auto() --- diff --git a/src/lib-sql/driver-test.c b/src/lib-sql/driver-test.c index f64583a151..af748e7fff 100644 --- a/src/lib-sql/driver-test.c +++ b/src/lib-sql/driver-test.c @@ -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) diff --git a/src/lib-sql/test-sql-sqlite.c b/src/lib-sql/test-sql-sqlite.c index c47180c144..77e13ec1ca 100644 --- a/src/lib-sql/test-sql-sqlite.c +++ b/src/lib-sql/test-sql-sqlite.c @@ -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(); } diff --git a/src/lib-sql/test-sql.c b/src/lib-sql/test-sql.c index cbb4d3893a..f4a432efcd 100644 --- a/src/lib-sql/test-sql.c +++ b/src/lib-sql/test-sql.c @@ -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; }