gnucash stable: Multiple changes pushed
John Ralls
jralls at code.gnucash.org
Tue Aug 19 14:42:53 EDT 2025
Updated via https://github.com/Gnucash/gnucash/commit/5f701785 (commit)
via https://github.com/Gnucash/gnucash/commit/4c81bc3e (commit)
via https://github.com/Gnucash/gnucash/commit/54664359 (commit)
from https://github.com/Gnucash/gnucash/commit/deded468 (commit)
commit 5f7017854b663b00c43ae5beca6ffaa26af43be6
Author: John Ralls <jralls at ceridwen.us>
Date: Mon Aug 18 15:12:23 2025 -0700
Specialize get_row_value_from_object for int64_t.
So that it doesn't try to pass the value in a pointer. That comes out badly on 32-bit systems.
diff --git a/libgnucash/backend/sql/gnc-sql-column-table-entry.cpp b/libgnucash/backend/sql/gnc-sql-column-table-entry.cpp
index 4d3ad94850..a6e0d7ba17 100644
--- a/libgnucash/backend/sql/gnc-sql-column-table-entry.cpp
+++ b/libgnucash/backend/sql/gnc-sql-column-table-entry.cpp
@@ -48,7 +48,6 @@ set_autoinc_id (void* object, void* item)
// Nowhere to put the ID
}
-
QofAccessFunc
GncSqlColumnTableEntry::get_getter (QofIdTypeConst obj_name) const noexcept
{
@@ -257,6 +256,25 @@ GncSqlColumnTableEntryImpl<CT_INT64>::add_to_table(ColVec& vec) const noexcept
vec.emplace_back(std::move(info));
}
+template<> gint64
+GncSqlColumnTableEntry::get_row_value_from_object<int64_t>(QofIdTypeConst obj_name,
+ const void* pObject) const
+{
+ g_return_val_if_fail(obj_name != nullptr && pObject != nullptr,
+ INT64_C(0));
+ int64_t result = INT64_C(0);
+ if (m_gobj_param_name != nullptr)
+ g_object_get(const_cast<void*>(pObject), m_gobj_param_name,
+ &result, nullptr);
+ else
+ {
+ auto getter = (Int64AccessFunc)get_getter(obj_name);
+ if (getter != nullptr)
+ result = (getter)(const_cast<void*>(pObject));
+ }
+ return result;
+}
+
template<> void
GncSqlColumnTableEntryImpl<CT_INT64>::add_to_query(QofIdTypeConst obj_name,
const gpointer pObject,
commit 4c81bc3ea3c249025da43a85384bbffd4ebe9a5a
Author: John Ralls <jralls at ceridwen.us>
Date: Mon Aug 18 15:10:12 2025 -0700
[WIN32]Fix path problems prevneting test-backend-dbi from working.
diff --git a/libgnucash/backend/dbi/test/CMakeLists.txt b/libgnucash/backend/dbi/test/CMakeLists.txt
index 9e119c8b5b..4474a3edcb 100644
--- a/libgnucash/backend/dbi/test/CMakeLists.txt
+++ b/libgnucash/backend/dbi/test/CMakeLists.txt
@@ -39,9 +39,24 @@ if (WITH_SQL)
gnc_add_test(test-backend-dbi "${test_dbi_backend_SOURCES}"
BACKEND_DBI_TEST_INCLUDE_DIRS BACKEND_DBI_TEST_LIBS
)
+ if (DEFINED ENV{TMPDIR})
+ set(temp_dir "$ENV{TMPDIR}")
+ elseif (DEFINED ENV{TMP})
+ set(temp_dir "$ENV{TMP}")
+ elseif (DEFINED ENV{TEMP})
+ set(temp_dir "$ENV{TEMP}")
+ else()
+ set(temp_dir "${CMAKE_TOP_BUILD_DIR}/tmp")
+ file(MAKE_DIRECTORY ${temp_dir})
+ endif()
+
+ if (MINGW64)
+ string(REGEX REPLACE "\\\\" "/" temp_dir ${temp_dir})
+ endif()
target_compile_definitions(test-backend-dbi PRIVATE
DBI_TEST_XML_FILENAME=\"${CMAKE_CURRENT_SOURCE_DIR}/test-dbi.xml\"
+ TEMPDIR=\"${temp_dir}\"
G_LOG_DOMAIN=\"gnc.backend.dbi\"
)
endif()
diff --git a/libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp b/libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp
index 8923f74f77..8ba7ce591e 100644
--- a/libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp
+++ b/libgnucash/backend/dbi/test/test-backend-dbi-basic.cpp
@@ -83,6 +83,17 @@ typedef struct
GSList* hdlrs;
} Fixture;
+
+static char*
+normalize_path(char* path)
+{
+ g_return_val_if_fail(path, nullptr);
+ auto rv = gnc_uri_normalize_uri (path, FALSE);
+ g_free (path);
+ return rv;
+}
+
+
static void
setup (Fixture* fixture, gconstpointer pData)
{
@@ -94,14 +105,17 @@ setup (Fixture* fixture, gconstpointer pData)
* prevents creating the lock file. Force the session to get
* around that.
*/
- qof_session_begin (fixture->session, DBI_TEST_XML_FILENAME,
+ qof_session_begin (fixture->session,
+ normalize_path (g_strdup (DBI_TEST_XML_FILENAME)),
SESSION_BREAK_LOCK);
g_assert_cmpint (qof_session_get_error (fixture->session), == ,
ERR_BACKEND_NO_ERR);
qof_session_load (fixture->session, NULL);
if (g_strcmp0 (url, "sqlite3") == 0)
- fixture->filename = g_strdup_printf ("/tmp/test-sqlite-%d", getpid ());
+ fixture->filename =
+ normalize_path (g_strdup_printf (TEMPDIR "/test-sqlite-%d",
+ getpid ()));
else
fixture->filename = NULL;
}
@@ -158,7 +172,9 @@ setup_memory (Fixture* fixture, gconstpointer pData)
fixture->session = session;
if (g_strcmp0 (url, "sqlite3") == 0)
- fixture->filename = g_strdup_printf ("/tmp/test-sqlite-%d", getpid ());
+ fixture->filename =
+ normalize_path (g_strdup_printf (TEMPDIR "/test-sqlite-%d",
+ getpid ()));
else
fixture->filename = NULL;
}
@@ -237,7 +253,9 @@ setup_business (Fixture* fixture, gconstpointer pData)
fixture->session = session;
if (g_strcmp0 (url, "sqlite3") == 0)
- fixture->filename = g_strdup_printf ("/tmp/test-sqlite-%d", getpid ());
+ fixture->filename =
+ normalize_path (g_strdup_printf (TEMPDIR "/test-sqlite-%d",
+ getpid ()));
else
fixture->filename = NULL;
}
commit 54664359dc4dd18557e0cbecc7f00cf0a000f853
Author: John Ralls <jralls at ceridwen.us>
Date: Tue Jul 15 15:11:33 2025 -0700
Fix building tests on Win32.
They don't pass, but at least they build and sort of run.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9db2b6b6e3..10d9609e0e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -204,8 +204,11 @@ if (WIN32)
set(REGEX_LDFLAGS "-L${REGEX_LIB_PATH} -lregex")
#set(LIBXSLT_INCLUDE_DIR ${CMAKE_PREFIX_PATH}/libxslt/include)
#set(LIBXSLT_XSLTPROC_EXECUTABLE ${CMAKE_PREFIX_PATH}/libxslt/bin/xsltproc)
-#Prevent creating a console window on startup and harden the executable.
+ #Prevent creating a console window on startup and harden the executable.
set(CMAKE_EXE_LINKER_FLAGS "-mwindows -Wl,--nxcompat -Wl,--dynamicbase")
+ #Find the winsock2 library
+ find_library(WINSOCK_LIB wsock32)
+ find_library(WS2_LIB ws2_32)
endif()
find_package(Threads REQUIRED)
diff --git a/common/cmake_modules/GncAddTest.cmake b/common/cmake_modules/GncAddTest.cmake
index 6f62f32480..629bbf8010 100644
--- a/common/cmake_modules/GncAddTest.cmake
+++ b/common/cmake_modules/GncAddTest.cmake
@@ -100,6 +100,9 @@ function(gnc_add_test _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_
endif()
add_executable(${_TARGET} EXCLUDE_FROM_ALL ${_SOURCE_FILES})
target_link_libraries(${_TARGET} PRIVATE ${TEST_LIBS})
+if (MINGW)
+ target_link_options(${_TARGET} PRIVATE -mconsole)
+endif()
target_include_directories(${_TARGET} PRIVATE ${TEST_INCLUDE_DIRS})
set_tests_properties(${_TARGET} PROPERTIES ENVIRONMENT "${ENVVARS}$<$<CONFIG:Asan>:;ASAN_OPTIONS=${ASAN_TEST_OPTIONS}>")
add_dependencies(testbuild ${_TARGET})
diff --git a/gnucash/import-export/test/CMakeLists.txt b/gnucash/import-export/test/CMakeLists.txt
index 0c9b34dab2..0c1859462f 100644
--- a/gnucash/import-export/test/CMakeLists.txt
+++ b/gnucash/import-export/test/CMakeLists.txt
@@ -42,6 +42,7 @@ set(gtest_import_backend_INCLUDE_DIRS
${CMAKE_SOURCE_DIR}/libgnucash/engine/mocks
${GTEST_INCLUDE_DIR}
${GMOCK_INCLUDE_DIR}
+ ${CMAKE_SOURCE_DIR}/borrowed/libc # for strptime.h
)
set(gtest_import_backend_LIBS
@@ -73,8 +74,14 @@ set(gtest_import_backend_SOURCES
${CMAKE_SOURCE_DIR}/libgnucash/engine/gnc-datetime.cpp
${CMAKE_SOURCE_DIR}/libgnucash/engine/gnc-timezone.cpp
${CMAKE_SOURCE_DIR}/libgnucash/core-utils/gnc-locale-utils.cpp
+ $<$<BOOL:${WIN32}>:${CMAKE_SOURCE_DIR}/libgnucash/engine/qof-win32.cpp>
+ $<$<BOOL:${WIN32}>:${CMAKE_SOURCE_DIR}/borrowed/libc/strptime.c>
)
+if (WIN32)
+ add_definitions(-DOS_WIN32)
+endif()
+
gnc_add_test(test-import-backend "${gtest_import_backend_SOURCES}"
gtest_import_backend_INCLUDE_DIRS gtest_import_backend_LIBS)
diff --git a/libgnucash/app-utils/test/CMakeLists.txt b/libgnucash/app-utils/test/CMakeLists.txt
index b2da73c39c..c8143a333e 100644
--- a/libgnucash/app-utils/test/CMakeLists.txt
+++ b/libgnucash/app-utils/test/CMakeLists.txt
@@ -47,7 +47,10 @@ set(test_gnc_quotes_LIBS
${Boost_LOCALE_LIBRARY}
${Boost_PROPERTY_TREE_LIBRARY}
${Boost_SYSTEM_LIBRARY}
- )
+ $<$<BOOL:${WIN32}>:${WINSOCK_LIB}>
+ $<$<BOOL:${WIN32}>:${WS2_LIB}>
+ )
+
gnc_add_test(test-gnc-quotes "${test_gnc_quotes_SOURCES}" test_gnc_quotes_INCLUDES test_gnc_quotes_LIBS
"GTEST_FILTER=-GncQuotesTest.online_wiggle")
diff --git a/libgnucash/backend/dbi/test/CMakeLists.txt b/libgnucash/backend/dbi/test/CMakeLists.txt
index efb193af04..9e119c8b5b 100644
--- a/libgnucash/backend/dbi/test/CMakeLists.txt
+++ b/libgnucash/backend/dbi/test/CMakeLists.txt
@@ -9,7 +9,16 @@ set(BACKEND_DBI_TEST_INCLUDE_DIRS
${CMAKE_SOURCE_DIR}/common/test-core
${LIBDBI_INCLUDE_PATH}
)
-set(BACKEND_DBI_TEST_LIBS gnc-backend-sql gnc-engine gnc-test-engine test-core ${Boost_REGEX_LIBRARY} ${LIBDBI_LIBRARY})
+set(BACKEND_DBI_TEST_LIBS
+ gnc-backend-sql
+ gnc-engine
+ gnc-test-engine
+ test-core
+ ${Boost_REGEX_LIBRARY}
+ ${LIBDBI_LIBRARY}
+ $<$<BOOL:${WIN32}>:${WINSOCK_LIB}>
+ $<$<BOOL:${WIN32}>:${WS2_LIB}>
+)
set(test_dbi_backend_SOURCES
test-backend-dbi.cpp
@@ -26,7 +35,7 @@ set(test_dbi_backend_HEADERS test-dbi-business-stuff.h test-dbi-stuff.h)
set_dist_list(test_dbi_backend_DIST ${test_dbi_backend_SOURCES} ${test_dbi_backend_HEADERS} test-dbi.xml CMakeLists.txt )
# This test does not work on Win32
-if (WITH_SQL AND NOT WIN32)
+if (WITH_SQL)
gnc_add_test(test-backend-dbi "${test_dbi_backend_SOURCES}"
BACKEND_DBI_TEST_INCLUDE_DIRS BACKEND_DBI_TEST_LIBS
)
diff --git a/libgnucash/backend/xml/test/gtest-xml-contents.cpp b/libgnucash/backend/xml/test/gtest-xml-contents.cpp
index d2ddcf02e7..d5db6912a1 100644
--- a/libgnucash/backend/xml/test/gtest-xml-contents.cpp
+++ b/libgnucash/backend/xml/test/gtest-xml-contents.cpp
@@ -96,7 +96,7 @@ TEST_F(LoadFile, LoadAndVerifyKVP)
// THE FOLLOWING TESTS BANK ACCOUNT
const auto& bank_splitlist = xaccAccountGetSplits (bank_acct);
- ASSERT_EQ (bank_splitlist.size(), static_cast<uint>(4));
+ ASSERT_EQ (bank_splitlist.size(), static_cast<uint32_t>(4));
// first split is from a regular transaction
auto bank_reg_split{bank_splitlist[0]};
@@ -168,7 +168,7 @@ TEST_F(LoadFile, LoadAndVerifyKVP)
ASSERT_TRUE (AR_acct != nullptr);
const auto& AR_splitlist{xaccAccountGetSplits (AR_acct)};
- ASSERT_EQ (AR_splitlist.size(), static_cast<uint>(3));
+ ASSERT_EQ (AR_splitlist.size(), static_cast<uint32_t>(3));
// 1st split is invoice posting txn
auto inv_post_txn{xaccSplitGetParent(AR_splitlist[0])};
@@ -195,7 +195,7 @@ TEST_F(LoadFile, LoadAndVerifyKVP)
ASSERT_TRUE (close_acct != nullptr);
const auto& close_splitlist{xaccAccountGetSplits (close_acct)};
- ASSERT_EQ (close_splitlist.size(), static_cast<uint>(1));
+ ASSERT_EQ (close_splitlist.size(), static_cast<uint32_t>(1));
// 3rd split is a closing txn
auto closing_txn{xaccSplitGetParent(close_splitlist[0])};
Summary of changes:
CMakeLists.txt | 5 +++-
common/cmake_modules/GncAddTest.cmake | 3 +++
gnucash/import-export/test/CMakeLists.txt | 7 ++++++
libgnucash/app-utils/test/CMakeLists.txt | 5 +++-
libgnucash/backend/dbi/test/CMakeLists.txt | 28 ++++++++++++++++++++--
.../backend/dbi/test/test-backend-dbi-basic.cpp | 26 ++++++++++++++++----
.../backend/sql/gnc-sql-column-table-entry.cpp | 20 +++++++++++++++-
libgnucash/backend/xml/test/gtest-xml-contents.cpp | 6 ++---
8 files changed, 88 insertions(+), 12 deletions(-)
More information about the gnucash-changes
mailing list