gnucash stable: [DBI backend] Change DBI test URLs to environment variables.

John Ralls jralls at code.gnucash.org
Thu Sep 21 17:34:09 EDT 2023


Updated	 via  https://github.com/Gnucash/gnucash/commit/90b91420 (commit)
	from  https://github.com/Gnucash/gnucash/commit/a2ae43f3 (commit)



commit 90b9142096277cf3275220cad4d4d70ba8e8da82
Author: John Ralls <jralls at ceridwen.us>
Date:   Thu Sep 21 14:32:19 2023 -0700

    [DBI backend] Change DBI test URLs to environment variables.
    
    From cmake configuration definitions.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1930a7c90a..f6110b7824 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -95,8 +95,6 @@ if (NOT DEFINED GNC_DBD_DIR)
   set(GNC_DBD_DIR $ENV{GNC_DBD_DIR} CACHE PATH "Hint for location of libdbi-drivers.")
 endif()
 set(PKGLIBDIR ${CMAKE_INSTALL_LIBDIR}/gnucash)
-set(TEST_MYSQL_URL "" CACHE STRING "MySQL database URL for testing")
-set(TEST_PGSQL_URL "" CACHE STRING "PgSQL database URL for testing")
 
 set(DATADIR_BUILD    ${CMAKE_BINARY_DIR}/${DATADIRNAME})
 string(REPLACE ${CMAKE_INSTALL_PREFIX} "" LIBDIR_BUILD ${LIBDIR})
diff --git a/libgnucash/backend/dbi/test/CMakeLists.txt b/libgnucash/backend/dbi/test/CMakeLists.txt
index 09ebf36c10..efb193af04 100644
--- a/libgnucash/backend/dbi/test/CMakeLists.txt
+++ b/libgnucash/backend/dbi/test/CMakeLists.txt
@@ -32,8 +32,6 @@ if (WITH_SQL AND NOT WIN32)
   )
 
   target_compile_definitions(test-backend-dbi PRIVATE
-    TEST_MYSQL_URL=\"${TEST_MYSQL_URL}\"
-    TEST_PGSQL_URL=\"${TEST_PGSQL_URL}\"
     DBI_TEST_XML_FILENAME=\"${CMAKE_CURRENT_SOURCE_DIR}/test-dbi.xml\"
     G_LOG_DOMAIN=\"gnc.backend.dbi\"
   )
diff --git a/libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp b/libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp
index ee99937f58..e7d7418de7 100644
--- a/libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp
+++ b/libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp
@@ -71,6 +71,9 @@ static dbi_inst dbi_instance = NULL;
 static const gchar* suitename = "/backend/dbi";
 void test_suite_gnc_backend_dbi (void);
 
+static std::string mysql_url{};
+static std::string pgsql_url{};
+
 using StrVec = std::vector<std::string>;
 
 typedef struct
@@ -663,19 +666,22 @@ test_suite_gnc_backend_dbi (void)
     {
         drivers.push_back(dbi_driver_get_name (driver));
     }
+    mysql_url.append(getenv("TEST_MYSQL_URL") ? getenv("TEST_MYSQL_URL") : "");
+    pgsql_url.append(getenv("TEST_PGSQL_URL") ? getenv("TEST_PGSQL_URL") : "");
+
     for (auto name : drivers)
     {
         if (name == "sqlite3")
             create_dbi_test_suite ("sqlite3", "sqlite3");
-        if (strlen (TEST_MYSQL_URL) > 0 && name == "mysql")
-            create_dbi_test_suite ("mysql", TEST_MYSQL_URL);
-        if (strlen (TEST_PGSQL_URL) > 0 && name == "pgsql")
+        if (!mysql_url.empty() && name == "mysql")
+            create_dbi_test_suite ("mysql", mysql_url.c_str());
+        if (!pgsql_url.empty() && name == "pgsql")
         {
             g_setenv ("PGOPTIONS", "-c client_min_messages=WARNING", FALSE);
-            create_dbi_test_suite ("postgres", TEST_PGSQL_URL);
+            create_dbi_test_suite ("postgres", pgsql_url.c_str());
         }
     }
 
-    GNC_TEST_ADD_FUNC( suitename, "adjust sql options string localtime", 
+    GNC_TEST_ADD_FUNC( suitename, "adjust sql options string localtime",
         test_adjust_sql_options_string );
 }
diff --git a/libgnucash/backend/dbi/test/test-backend-dbi.cpp b/libgnucash/backend/dbi/test/test-backend-dbi.cpp
index e16ba63079..8ab041f6f0 100644
--- a/libgnucash/backend/dbi/test/test-backend-dbi.cpp
+++ b/libgnucash/backend/dbi/test/test-backend-dbi.cpp
@@ -31,6 +31,16 @@ extern void test_suite_gnc_backend_dbi ();
 #define GNC_LIB_NAME_2 "gncmod-backend-xml"
 #define GNC_LIB_REL_PATH_2 "xml"
 
+/* Test the DBI backends. Always tests SQLite3, MySql/MariaDB and
+ * Postgres require setting environment variables to inform them of
+ * available databases of the respective types:
+ *
+ * TEST_MYSQL_URL="mysql://user:password@host/database-name/"
+ * TEST_PGSQL_URL="postgres://user:password@host/database-name/"
+ *
+ * host must be resolvable by the system's network.
+ */
+
 int
 main (int   argc,
       char* argv[])



Summary of changes:
 CMakeLists.txt                                         |  2 --
 libgnucash/backend/dbi/test/CMakeLists.txt             |  2 --
 libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp | 16 +++++++++++-----
 libgnucash/backend/dbi/test/test-backend-dbi.cpp       | 10 ++++++++++
 4 files changed, 21 insertions(+), 9 deletions(-)



More information about the gnucash-changes mailing list