gnucash master: Multiple changes pushed
John Ralls
jralls at code.gnucash.org
Tue Jan 26 12:32:00 EST 2016
Updated via https://github.com/Gnucash/gnucash/commit/7f65a335 (commit)
via https://github.com/Gnucash/gnucash/commit/326f3cc0 (commit)
via https://github.com/Gnucash/gnucash/commit/42e5dd5c (commit)
via https://github.com/Gnucash/gnucash/commit/9b82651d (commit)
via https://github.com/Gnucash/gnucash/commit/2bf0fed4 (commit)
via https://github.com/Gnucash/gnucash/commit/7ab481a1 (commit)
via https://github.com/Gnucash/gnucash/commit/9be5a8be (commit)
via https://github.com/Gnucash/gnucash/commit/9ea58f26 (commit)
via https://github.com/Gnucash/gnucash/commit/80317a2a (commit)
via https://github.com/Gnucash/gnucash/commit/2e8407ed (commit)
via https://github.com/Gnucash/gnucash/commit/1ecb1235 (commit)
via https://github.com/Gnucash/gnucash/commit/aa2c1303 (commit)
via https://github.com/Gnucash/gnucash/commit/ed8e79c6 (commit)
from https://github.com/Gnucash/gnucash/commit/24273119 (commit)
commit 7f65a3356ef3b6a5a8c2b54fac84dbe43956082c
Merge: 326f3cc 42e5dd5
Author: John Ralls <jralls at ceridwen.us>
Date: Tue Jan 26 09:30:00 2016 -0800
Merge branch 'maint'
diff --cc CMakeLists.txt
index 3fccad4,13632ae..d29fd03
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@@ -11,6 -11,8 +11,8 @@@ ENDIF(
PROJECT (Gnucash)
-ENABLE_TESTING()
++#ENABLE_TESTING()
+
# Version number of gnucash
SET (GNUCASH_MAJOR_VERSION 2)
SET (GNUCASH_MINOR_VERSION 6)
@@@ -43,6 -45,7 +45,7 @@@ INCLUDE (CheckIncludeFiles
INCLUDE (GncAddSchemeTargets)
INCLUDE (GncConfigure)
INCLUDE (GncAddGSchemaTargets)
-INCLUDE (GncAddTest)
++#INCLUDE (GncAddTest)
# ############################################################
# These options are settable from the CMake command line. For example, to disable
@@@ -76,6 -79,8 +79,8 @@@ SET(DATADIRNAME share
SET(GNC_SYSTEM_XDG_DATA_DIRS /usr/local/share /usr/share)
SET(GNC_DBD_DIR ${CMAKE_PREFIX_PATH}/lib/dbd CACHE PATH "specify location of libdbi drivers")
SET(PKGLIBDIR ${CMAKE_INSTALL_PREFIX}/lib/gnucash)
-SET(TEST_MYSQL_URL "" CACHE STRING "MySQL database URL for testing")
-SET(TEST_PGSQL_URL "" CACHE STRING "PgSQL database URL for testing")
++#SET(TEST_MYSQL_URL "" CACHE STRING "MySQL database URL for testing")
++#SET(TEST_PGSQL_URL "" CACHE STRING "PgSQL database URL for testing")
IF(GNC_BUILD_AS_INSTALL)
SET(DATADIR_BUILD ${CMAKE_BINARY_DIR}/${DATADIRNAME})
@@@ -85,6 -90,11 +90,11 @@@
ENDIF()
-SET(SHELL_FROM_ENV $ENV{SHELL})
-SET(SHELL bin/bash)
-IF (SHELL_FROM_ENV) # Replacing this with IF ($ENV{SHELL}) doesn't work.
- SET(SHELL ${SHELL_FROM_ENV})
-ENDIF()
++#SET(SHELL_FROM_ENV $ENV{SHELL})
++#SET(SHELL bin/bash)
++#IF (SHELL_FROM_ENV) # Replacing this with IF ($ENV{SHELL}) doesn't work.
++# SET(SHELL ${SHELL_FROM_ENV})
++#ENDIF()
IF (WIN32)
# Help Windows find the various dependencies. We assume here that the standard advice for building
@@@ -379,7 -362,7 +389,7 @@@ ENDIF (APPLE AND WITH_GNUCASH
IF (UNIX AND NOT APPLE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib:${CMAKE_INSTALL_PREFIX}/lib/gnucash")
--ENDIF()
++ENDIF()
SET(BUILD_SHARED_LIBS ON)
@@@ -406,6 -389,25 +416,25 @@@ IF (GNC_BUILD_AS_INSTALL
ENDIF()
# ############################################################
-SET(CMAKE_CTEST_COMMAND ctest)
-IF (XCODE_VERSION)
- SET(CMAKE_CTEST_COMMAND ctest -C Debug)
-ENDIF()
++#SET(CMAKE_CTEST_COMMAND ctest)
++#IF (XCODE_VERSION)
++# SET(CMAKE_CTEST_COMMAND ctest -C Debug)
++#ENDIF()
+
+ # There are targets that need to build before tests will run
-ADD_CUSTOM_TARGET(check
- COMMAND ${CMAKE_CTEST_COMMAND}
- DEPENDS gnucash scm-app-utils scm-gnome-utils scm-report-gnome
- scm-engine scm-gnc-module scm-test-engine scm-report-system-3
- scm-test-core scm-test-report-system scm-standard-reports-2
- scm-test-standard-reports foo gncmodfoo baz gncmodbaz
- bar gncmodbar gncmod_agedver gncmod_incompatdep
- gncmod_futuremodsys
-)
-IF (NOT WIN32)
- ADD_DEPENDENCIES(check gncmod-backend-xml-link)
-ENDIF()
++#ADD_CUSTOM_TARGET(check
++# COMMAND ${CMAKE_CTEST_COMMAND}
++# DEPENDS gnucash scm-app-utils scm-gnome-utils scm-report-gnome
++# scm-engine scm-gnc-module scm-test-engine scm-report-system-3
++# scm-test-core scm-test-report-system scm-standard-reports-2
++# scm-test-standard-reports foo gncmodfoo baz gncmodbaz
++# bar gncmodbar gncmod_agedver gncmod_incompatdep
++# gncmod_futuremodsys
++#)
++#IF (NOT WIN32)
++# ADD_DEPENDENCIES(check gncmod-backend-xml-link)
++#ENDIF()
+
# The subdirectories
ADD_SUBDIRECTORY (accounts)
ADD_SUBDIRECTORY (checks)
diff --cc src/app-utils/CMakeLists.txt
index dd4f97a,62b7cf9..6318fc0
--- a/src/app-utils/CMakeLists.txt
+++ b/src/app-utils/CMakeLists.txt
@@@ -1,4 -1,4 +1,4 @@@
-
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
# Build the library
SET (app_utils_noinst_HEADERS
@@@ -190,4 -190,4 +190,4 @@@ GNC_ADD_SCHEME_TARGETS(scm-app-utils-
FALSE
)
--ADD_CUSTOM_TARGET(scm-app-utils ALL DEPENDS scm-app-utils-3 scm-app-utils-2 scm-app-utils-1 scm-gettext)
++ADD_CUSTOM_TARGET(scm-app-utils ALL DEPENDS scm-app-utils-3 scm-app-utils-2 scm-app-utils-1 scm-gettext)
diff --cc src/backend/dbi/CMakeLists.txt
index 8e96b81,de96c05..a6f3c02
--- a/src/backend/dbi/CMakeLists.txt
+++ b/src/backend/dbi/CMakeLists.txt
@@@ -1,5 -1,7 +1,7 @@@
# CMakeLists.txt for src/backend/dbi
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
+
# Source file gncmod-backend-dbi.c does not appear to be use in Makefile.in, so not included here.
SET (backend_dbi_SOURCES
diff --cc src/backend/sql/CMakeLists.txt
index 4da6bfa,077ed90..c9293e2
--- a/src/backend/sql/CMakeLists.txt
+++ b/src/backend/sql/CMakeLists.txt
@@@ -1,31 -1,31 +1,31 @@@
# CMakeLists.txt for src/backend/dbi
-
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET (backend_sql_SOURCES
- gnc-backend-sql.c
- gnc-account-sql.c
- gnc-address-sql.c
- gnc-bill-term-sql.c
- gnc-book-sql.c
- gnc-budget-sql.c
- gnc-commodity-sql.c
- gnc-customer-sql.c
- gnc-employee-sql.c
- gnc-entry-sql.c
- gnc-invoice-sql.c
- gnc-job-sql.c
- gnc-lots-sql.c
- gnc-order-sql.c
- gnc-owner-sql.c
- gnc-price-sql.c
- gnc-recurrence-sql.c
- gnc-schedxaction-sql.c
- gnc-slots-sql.c
- gnc-tax-table-sql.c
- gnc-transaction-sql.c
- gnc-vendor-sql.c
- escape.c
+ gnc-backend-sql.cpp
+ gnc-account-sql.cpp
+ gnc-address-sql.cpp
+ gnc-bill-term-sql.cpp
+ gnc-book-sql.cpp
+ gnc-budget-sql.cpp
+ gnc-commodity-sql.cpp
+ gnc-customer-sql.cpp
+ gnc-employee-sql.cpp
+ gnc-entry-sql.cpp
+ gnc-invoice-sql.cpp
+ gnc-job-sql.cpp
+ gnc-lots-sql.cpp
+ gnc-order-sql.cpp
+ gnc-owner-sql.cpp
+ gnc-price-sql.cpp
+ gnc-recurrence-sql.cpp
+ gnc-schedxaction-sql.cpp
+ gnc-slots-sql.cpp
+ gnc-tax-table-sql.cpp
+ gnc-transaction-sql.cpp
+ gnc-vendor-sql.cpp
+ escape.cpp
)
SET (backend_sql_noinst_HEADERS
gnc-account-sql.h
diff --cc src/backend/xml/CMakeLists.txt
index 99fd698,4df0cef..22eeaa7
--- a/src/backend/xml/CMakeLists.txt
+++ b/src/backend/xml/CMakeLists.txt
@@@ -1,5 -1,7 +1,7 @@@
# CMakeLists.txt for src/backend/xml
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
+
# Command to generate the swig-engine.c wrapper file
SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i)
diff --cc src/bin/CMakeLists.txt
index 98e3c2a,bf109c5..aa24740
--- a/src/bin/CMakeLists.txt
+++ b/src/bin/CMakeLists.txt
@@@ -1,5 -1,5 +1,5 @@@
ADD_SUBDIRECTORY(overrides)
-
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
# Some settings are platform dependent. Let's define them per platform.
IF (WIN32)
# Windows specific settings go here:
diff --cc src/core-utils/CMakeLists.txt
index 55eab99,c5af60c..2d52410
--- a/src/core-utils/CMakeLists.txt
+++ b/src/core-utils/CMakeLists.txt
@@@ -1,6 -1,6 +1,6 @@@
# CMakeLists.txt for src/core-utils
-
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
# Command to generate the swig-engine.c wrapper file
SET (SWIG_CORE_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils.c)
GNC_ADD_SWIG_COMMAND (${SWIG_CORE_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
diff --cc src/engine/CMakeLists.txt
index 9bb9fbb,cc4d303..4d911f5
--- a/src/engine/CMakeLists.txt
+++ b/src/engine/CMakeLists.txt
@@@ -1,5 -1,8 +1,8 @@@
# CMakeLists.txt for src/engine
-ADD_SUBDIRECTORY(test-core)
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test-core)
++#ADD_SUBDIRECTORY(test)
+
SET(engine_noinst_HEADERS
AccountP.h
ScrubP.h
diff --cc src/gnc-module/CMakeLists.txt
index d06f982,0863fd3..ebad85a
--- a/src/gnc-module/CMakeLists.txt
+++ b/src/gnc-module/CMakeLists.txt
@@@ -1,4 -1,5 +1,5 @@@
# CMakeLists.txt for src/gnc-module
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
# Command to generate the swig-engine.c wrapper file
SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
diff --cc src/gnome-utils/CMakeLists.txt
index 73f6390,2f353ba..cc60e44
--- a/src/gnome-utils/CMakeLists.txt
+++ b/src/gnome-utils/CMakeLists.txt
@@@ -3,6 -3,7 +3,7 @@@
ADD_SUBDIRECTORY(gschemas)
ADD_SUBDIRECTORY(gtkbuilder)
ADD_SUBDIRECTORY(ui)
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c)
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i)
@@@ -261,4 -262,4 +262,4 @@@ GNC_ADD_SCHEME_TARGETS(scm-gnome-utils-
FALSE
)
--ADD_CUSTOM_TARGET(scm-gnome-utils ALL DEPENDS scm-gnome-utils-2 scm-gnome-utils-1)
++ADD_CUSTOM_TARGET(scm-gnome-utils ALL DEPENDS scm-gnome-utils-2 scm-gnome-utils-1)
diff --cc src/gnome/dialog-sx-editor.c
index 2fe8a59,b5cf59a..e53b6c5
--- a/src/gnome/dialog-sx-editor.c
+++ b/src/gnome/dialog-sx-editor.c
@@@ -638,12 -638,13 +638,14 @@@ gnc_sxed_split_check_account (GncSxEdit
{
gnc_commodity *split_cmdty = NULL;
gnc_numeric split_amount = gnc_numeric_zero ();
- Account *acct;
- KvpFrame *f = xaccSplitGetSlots (s);
- KvpValue *v = kvp_frame_get_slot_path(f, GNC_SX_ID, GNC_SX_ACCOUNT, NULL);
- GncGUID *acct_guid = kvp_value_get_guid (v);
- acct = xaccAccountLookup( acct_guid, gnc_get_current_book ());
+ Account *acct = NULL;
+ GncGUID *acct_guid = NULL;
+ qof_instance_get (QOF_INSTANCE (s),
+ "sx-account", &acct_guid,
+ NULL);
+ acct = xaccAccountLookup (acct_guid, gnc_get_current_book ());
+ if (acct == NULL)
+ return FALSE;
split_cmdty = xaccAccountGetCommodity(acct);
split_amount = xaccSplitGetAmount(s);
if (!gnc_numeric_zero_p(split_amount) && base_cmdty == NULL)
@@@ -685,6 -687,100 +687,100 @@@ gnc_sxed_split_calculate_formula (GncSx
return TRUE;
}
+ typedef struct
+ {
+ GncSxEditorDialog *sxed;
+ GHashTable *txns;
+ GHashTable *vars;
+ txnCreditDebitSums *tcds;
+ gboolean multi_commodity;
+ gboolean err;
+ } CheckTxnSplitData;
+
+ static void
+ split_error_warning_dialog (GtkWidget *parent, const gchar *title,
+ gchar *message)
+ {
+ GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (parent), 0,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "%s", title);
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+ "%s", message);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
+ g_signal_connect_swapped (dialog, "response",
+ G_CALLBACK(gtk_widget_destroy), dialog);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+
+ }
+ static gboolean
+ check_transaction_splits (Transaction *txn, gpointer data)
+ {
+ GList *splitList = xaccTransGetSplitList (txn);
+ CheckTxnSplitData *sd = (CheckTxnSplitData*)data;
+
+ for ( ; splitList; splitList = splitList->next )
+ {
+ gnc_commodity *base_cmdty = NULL;
+ txnCreditDebitSums *tcds;
+ Split *s = (Split*)splitList->data;
+
+ tcds = (txnCreditDebitSums*)g_hash_table_lookup (sd->txns,
+ (gpointer)txn);
+ if (sd->tcds == NULL)
+ {
+ sd->tcds = tcds_new ();
+ g_hash_table_insert (sd->txns, (gpointer)txn, (gpointer)(sd->tcds));
+ }
+
+ if (!gnc_sxed_split_check_account (sd->sxed, s, base_cmdty,
+ &sd->multi_commodity))
+ {
+ gchar *message = g_strdup_printf
+ (_("Split with memo %s has an invalid account."),
+ xaccSplitGetMemo (s));
+ split_error_warning_dialog (sd->sxed->dialog,
+ _("Invalid Account in Split"),
+ message);
+ g_free (message);
+ sd->err = TRUE;
+ return FALSE;
+ }
+
+ if (!gnc_sxed_split_calculate_formula (sd->sxed, s, sd->vars,
- GNC_SX_CREDIT_FORMULA,
++ "sx-credit-formula",
+ sd->tcds))
+ {
+ gchar *message = g_strdup_printf
+ (_("Split with memo %s has an unparseable Credit Formula."),
+ xaccSplitGetMemo (s));
+ split_error_warning_dialog (sd->sxed->dialog,
+ _("Unparsable Formula in Split"),
+ message);
+ g_free (message);
+ sd->err = TRUE;
+ return FALSE;
+ }
+
+ if (!gnc_sxed_split_calculate_formula (sd->sxed, s, sd->vars,
- GNC_SX_DEBIT_FORMULA,
++ "sx-debit-formula",
+ sd->tcds))
+
+ {
+ gchar *message = g_strdup_printf
+ (_("Split with memo %s has an unparseable Debit Formula."),
+ xaccSplitGetMemo (s));
+ split_error_warning_dialog (sd->sxed->dialog,
+ _("Unparsable Formula in Split"),
+ message);
+ g_free (message);
+ sd->err = TRUE;
+ return FALSE;
+ }
+ }
+ return TRUE;
+ }
+
/*******************************************************************************
* Checks to make sure that the SX is in a reasonable state to save.
* @return true if checks out okay, false otherwise.
diff --cc src/import-export/CMakeLists.txt
index 55c7fad,bcfb2cc..ca1c1e7
--- a/src/import-export/CMakeLists.txt
+++ b/src/import-export/CMakeLists.txt
@@@ -1,5 -1,7 +1,7 @@@
# CMakeLists.txt for src/import-export
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
+
# ############################################################
IF (WITH_AQBANKING)
ADD_SUBDIRECTORY(aqb)
diff --cc src/import-export/csv-imp/CMakeLists.txt
index dc42986,c55f7e3..f946e19
--- a/src/import-export/csv-imp/CMakeLists.txt
+++ b/src/import-export/csv-imp/CMakeLists.txt
@@@ -1,4 -1,5 +1,5 @@@
ADD_SUBDIRECTORY(gschemas)
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET(csv_import_SOURCES
gncmod-csv-import.c
diff --cc src/import-export/ofx/CMakeLists.txt
index de0d7ed,4ee34c7..0edd5b6
--- a/src/import-export/ofx/CMakeLists.txt
+++ b/src/import-export/ofx/CMakeLists.txt
@@@ -1,4 -1,5 +1,5 @@@
ADD_SUBDIRECTORY(gschemas)
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET(ofx_SOURCES
gnc-ofx-import.c
@@@ -38,4 -39,4 +39,4 @@@ INSTALL(FILES ${ofx_UI} DESTINATION sha
IF (GNC_BUILD_AS_INSTALL)
FILE(COPY ${ofx_UI}
DESTINATION ${DATADIR_BUILD}/gnucash/ui)
--ENDIF()
++ENDIF()
diff --cc src/import-export/qif-imp/CMakeLists.txt
index 7205543,05bc16e..6baeda7
--- a/src/import-export/qif-imp/CMakeLists.txt
+++ b/src/import-export/qif-imp/CMakeLists.txt
@@@ -1,6 -1,7 +1,7 @@@
# CMakeLists.txt for src/import_export/qif-imp
ADD_SUBDIRECTORY(gschemas)
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET (qif_import_SOURCES
dialog-account-picker.c
@@@ -87,4 -88,4 +88,4 @@@ IF (GNC_BUILD_AS_INSTALL
DESTINATION ${DATADIR_BUILD}/gnucash/ui)
FILE(COPY ${qif_import_GLADE}
DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder)
--ENDIF()
++ENDIF()
diff --cc src/import-export/qif/CMakeLists.txt
index 0bb858a,6c9ee11..94114e3
--- a/src/import-export/qif/CMakeLists.txt
+++ b/src/import-export/qif/CMakeLists.txt
@@@ -1,4 -1,7 +1,7 @@@
+ #Tests for this directory are not run.
-#ADD_SUBDIRECTORY(test)
++##ADD_SUBDIRECTORY(test)
+
SET(qif_SOURCES
qif-context.c
qif-defaults.c
diff --cc src/libqof/CMakeLists.txt
index 88afdc2,0928143..100a9a9
--- a/src/libqof/CMakeLists.txt
+++ b/src/libqof/CMakeLists.txt
@@@ -1,47 -1,49 +1,49 @@@
# CMakeLists.txt for src/libqof
-ADD_SUBDIRECTORY(qof/test)
++#ADD_SUBDIRECTORY(qof/test)
+
SET (gnc_qof_HEADERS
-
- qof/gnc-date-p.h
- qof/gnc-date.h
- qof/gnc-numeric.h
- qof/guid.h
- qof/kvp-util-p.h
- qof/kvp-util.h
- qof/kvp_frame.h
- qof/qof.h
- qof/qofbackend-p.h
- qof/qofbackend.h
- qof/qofbook.h
- qof/qofbookslots.h
- qof/qofchoice.h
- qof/qofclass.h
- qof/qofevent.h
- qof/qofid-p.h
- qof/qofid.h
- qof/qofinstance-p.h
- qof/qofinstance.h
- qof/qoflog.h
- qof/qofobject.h
- qof/qofquery.h
- qof/qofquerycore.h
- qof/qofreference.h
- qof/qofsession.h
- qof/qof-string-cache.h
- qof/qofutil.h
- qof/qof-gobject.h
-
+ qof/gnc-aqbanking-templates.h
+ qof/gnc-date-p.h
+ qof/gnc-date.h
+ qof/gnc-numeric.h
+ qof/gnc-datetime.hpp
+ qof/gnc-rational.hpp
+ qof/gnc-timezone.hpp
+ qof/guid.h
+ qof/kvp_frame.hpp
+ qof/kvp-value.hpp
+ qof/qof.h
+ qof/qofbackend-p.h
+ qof/qofbackend.h
+ qof/qofbook.h
+ qof/qofbookslots.h
+ qof/qofchoice.h
+ qof/qofclass.h
+ qof/qofevent.h
+ qof/qofid-p.h
+ qof/qofid.h
+ qof/qofinstance-p.h
+ qof/qofinstance.h
+ qof/qoflog.h
+ qof/qofobject.h
+ qof/qofquery.h
+ qof/qofquerycore.h
+ qof/qofsession.h
+ qof/qofutil.h
+ qof/qof-gobject.h
+ qof/qof-string-cache.h
)
SET (gnc_qof_noinst_HEADERS
- qof/md5.h
- qof/qofbook-p.h
- qof/qofclass-p.h
- qof/qofevent-p.h
- qof/qofmath128-p.h
- qof/qofobject-p.h
- qof/qofquery-p.h
- qof/qofquerycore-p.h
- qof/qofsession-p.h
+ qof/qofbook-p.h
+ qof/qofclass-p.h
+ qof/gnc-date-p.h
+ qof/qofevent-p.h
+ qof/gnc-int128.hpp
+ qof/qofobject-p.h
+ qof/qofquery-p.h
+ qof/qofquerycore-p.h
+ qof/qofsession-p.h
)
SET (gnc_qof_SOURCES
diff --cc src/register/ledger-core/CMakeLists.txt
index 09b3fbc,6e629df..f72dd78
--- a/src/register/ledger-core/CMakeLists.txt
+++ b/src/register/ledger-core/CMakeLists.txt
@@@ -1,4 -1,5 +1,5 @@@
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET (ledger_core_SOURCES
gnc-ledger-display.c
@@@ -40,4 -41,4 +41,4 @@@ INSTALL(TARGETS gncmod-ledger-cor
LIBRARY DESTINATION lib/gnucash
ARCHIVE DESTINATION lib/gnucash
RUNTIME DESTINATION bin)
--# No headers to install
++# No headers to install
diff --cc src/register/register-core/CMakeLists.txt
index c5ab961,bfdae12..0407a1f
--- a/src/register/register-core/CMakeLists.txt
+++ b/src/register/register-core/CMakeLists.txt
@@@ -1,4 -1,4 +1,4 @@@
-
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET (register_core_SOURCES
gncmod-register-core.c
@@@ -56,4 -56,4 +56,4 @@@ INSTALL(TARGETS gncmod-register-cor
ARCHIVE DESTINATION lib/gnucash
RUNTIME DESTINATION bin)
--INSTALL(FILES ${register_core_HEADERS} DESTINATION include/gnucash)
++INSTALL(FILES ${register_core_HEADERS} DESTINATION include/gnucash)
diff --cc src/register/register-gnome/CMakeLists.txt
index 9f0a5db,3c4d222..f3fe444
--- a/src/register/register-gnome/CMakeLists.txt
+++ b/src/register/register-gnome/CMakeLists.txt
@@@ -1,3 -1,4 +1,4 @@@
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET (register_gnome_SOURCES
gncmod-register-gnome.c
@@@ -55,4 -56,4 +56,4 @@@ INSTALL(TARGETS gncmod-register-gnom
LIBRARY DESTINATION lib/gnucash
ARCHIVE DESTINATION lib/gnucash
RUNTIME DESTINATION bin)
--# No headers to install
++# No headers to install
diff --cc src/report/locale-specific/us/CMakeLists.txt
index 1945079,2cd1e47..c0da971
--- a/src/report/locale-specific/us/CMakeLists.txt
+++ b/src/report/locale-specific/us/CMakeLists.txt
@@@ -1,4 -1,4 +1,4 @@@
-
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET(locale_reports_us_SOURCES
gncmod-locale-reports-us.c
@@@ -51,4 -51,4 +51,4 @@@ GNC_ADD_SCHEME_TARGETS(scm-report-local
"${GUILE_LIBRARY_DIRS}"
"scm-report-locale-specific-1;${GUILE_DEPENDS}"
FALSE
--)
++)
diff --cc src/report/report-gnome/CMakeLists.txt
index 8df635e,9678a3d..94ef547
--- a/src/report/report-gnome/CMakeLists.txt
+++ b/src/report/report-gnome/CMakeLists.txt
@@@ -1,4 -1,4 +1,4 @@@
-
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET (report_gnome_HEADERS
dialog-report-column-view.h
@@@ -74,4 -74,4 +74,4 @@@ IF (GNC_BUILD_AS_INSTALL
DESTINATION ${DATADIR_BUILD}/gnucash/ui)
FILE(COPY ${report_gnome_GLADE}
DESTINATION ${DATADIR_BUILD}/gnucash/gtkbuilder)
--ENDIF()
++ENDIF()
diff --cc src/report/report-system/CMakeLists.txt
index 33db0fd,74bffc7..1c4b314
--- a/src/report/report-system/CMakeLists.txt
+++ b/src/report/report-system/CMakeLists.txt
@@@ -1,3 -1,4 +1,4 @@@
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET (report_system_HEADERS
gnc-report.h
diff --cc src/report/standard-reports/CMakeLists.txt
index 53bb1cd,57f667b..8a35848
--- a/src/report/standard-reports/CMakeLists.txt
+++ b/src/report/standard-reports/CMakeLists.txt
@@@ -1,4 -1,6 +1,6 @@@
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
+
SET(standard_reports_SOURCES gncmod-standard-reports.c)
ADD_LIBRARY (gncmod-standard-reports ${standard_reports_SOURCES})
@@@ -81,4 -83,4 +83,4 @@@ FILE(MAKE_DIRECTORY ${STD_RPT_DIR}
FILE(COPY standard-reports.scm DESTINATION ${STD_RPT_DIR})
FILE(MAKE_DIRECTORY ${STD_RPT_DIR}/standard-reports)
--FILE(COPY ${standard_reports_SCHEME_2} DESTINATION ${STD_RPT_DIR}/standard-reports)
++FILE(COPY ${standard_reports_SCHEME_2} DESTINATION ${STD_RPT_DIR}/standard-reports)
diff --cc src/report/stylesheets/CMakeLists.txt
index acb58a3,585309c..5ceba71
--- a/src/report/stylesheets/CMakeLists.txt
+++ b/src/report/stylesheets/CMakeLists.txt
@@@ -1,3 -1,4 +1,4 @@@
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET(stylesheets_SOURCES
gnc-plugin-stylesheets.c
diff --cc src/report/utility-reports/CMakeLists.txt
index c0110c4,b8857f2..66c73ca
--- a/src/report/utility-reports/CMakeLists.txt
+++ b/src/report/utility-reports/CMakeLists.txt
@@@ -1,4 -1,4 +1,4 @@@
-
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
SET(utility_reports_SOURCES
gncmod-utility-reports.c
diff --cc src/tax/us/CMakeLists.txt
index 0424b78,fe4eec7..514a9ae
--- a/src/tax/us/CMakeLists.txt
+++ b/src/tax/us/CMakeLists.txt
@@@ -1,3 -1,5 +1,5 @@@
-ADD_SUBDIRECTORY(test)
++#ADD_SUBDIRECTORY(test)
+
SET(tax_us_SOURCES gncmod-tax-us.c)
# Add dependency on config.h
diff --cc src/test-core/CMakeLists.txt
index 63177b6,cccaa3a..d6aca03
--- a/src/test-core/CMakeLists.txt
+++ b/src/test-core/CMakeLists.txt
@@@ -1,4 -1,4 +1,3 @@@
--
SET(test_core_SOURCES
test-stuff.c
unittest-support.c
commit 326f3cc0a20369ea98d523c55c4ba9a66e66314e
Author: RobGowin <robgowin at gmail.com>
Date: Fri Jan 15 12:38:23 2016 -0600
Remove extra symlink command
* Remove symlink command that is now done a few lines later.
* Relocate comment.
* Do not install INSTALL (not needed) and COPYING (linked/copied elsewhere).
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d0d1b99..3fccad4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -440,11 +440,6 @@ IF (GNC_BUILD_AS_INSTALL)
ENDIF()
# Install DOC files from top level directory
-#Link LICENSE to COPYING so that people expecting to find it,
-#will. COPYING is normally linked by autogen.sh to the latest
-#automake-provided version.
-execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "create_symlink" "${CMAKE_SOURCE_DIR}/LICENSE" "${CMAKE_SOURCE_DIR}/COPYING")
-
SET(gnucash_DOCS
AUTHORS
ChangeLog
@@ -470,13 +465,13 @@ SET(gnucash_DOCS
LICENSE
NEWS
README.dependencies
- COPYING
- INSTALL
)
INSTALL(FILES ${gnucash_DOCS} DESTINATION share/doc/gnucash)
-# Link COPYING to LICENSE
+#Link LICENSE to COPYING so that people expecting to find it,
+#will. COPYING is normally linked by autogen.sh to the latest
+#automake-provided version.
SET (_CMD create_symlink)
IF (WIN32)
SET(_CMD copy)
commit 42e5dd5c8ca251126f94df186d57192b832ffd19
Author: RobGowin <robgowin at gmail.com>
Date: Mon Jan 18 10:33:34 2016 -0600
cmake - Add ability to run tests under CMake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bac8b0e..13632ae 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,6 +11,8 @@ ENDIF()
PROJECT (Gnucash)
+ENABLE_TESTING()
+
# Version number of gnucash
SET (GNUCASH_MAJOR_VERSION 2)
SET (GNUCASH_MINOR_VERSION 6)
@@ -43,6 +45,7 @@ INCLUDE (CheckIncludeFiles)
INCLUDE (GncAddSchemeTargets)
INCLUDE (GncConfigure)
INCLUDE (GncAddGSchemaTargets)
+INCLUDE (GncAddTest)
# ############################################################
# These options are settable from the CMake command line. For example, to disable
@@ -76,6 +79,8 @@ SET(DATADIRNAME share)
SET(GNC_SYSTEM_XDG_DATA_DIRS /usr/local/share /usr/share)
SET(GNC_DBD_DIR ${CMAKE_PREFIX_PATH}/lib/dbd CACHE PATH "specify location of libdbi drivers")
SET(PKGLIBDIR ${CMAKE_INSTALL_PREFIX}/lib/gnucash)
+SET(TEST_MYSQL_URL "" CACHE STRING "MySQL database URL for testing")
+SET(TEST_PGSQL_URL "" CACHE STRING "PgSQL database URL for testing")
IF(GNC_BUILD_AS_INSTALL)
SET(DATADIR_BUILD ${CMAKE_BINARY_DIR}/${DATADIRNAME})
@@ -85,6 +90,11 @@ IF(GNC_BUILD_AS_INSTALL)
ENDIF()
+SET(SHELL_FROM_ENV $ENV{SHELL})
+SET(SHELL bin/bash)
+IF (SHELL_FROM_ENV) # Replacing this with IF ($ENV{SHELL}) doesn't work.
+ SET(SHELL ${SHELL_FROM_ENV})
+ENDIF()
IF (WIN32)
# Help Windows find the various dependencies. We assume here that the standard advice for building
@@ -379,6 +389,25 @@ IF (GNC_BUILD_AS_INSTALL)
ENDIF()
# ############################################################
+SET(CMAKE_CTEST_COMMAND ctest)
+IF (XCODE_VERSION)
+ SET(CMAKE_CTEST_COMMAND ctest -C Debug)
+ENDIF()
+
+# There are targets that need to build before tests will run
+ADD_CUSTOM_TARGET(check
+ COMMAND ${CMAKE_CTEST_COMMAND}
+ DEPENDS gnucash scm-app-utils scm-gnome-utils scm-report-gnome
+ scm-engine scm-gnc-module scm-test-engine scm-report-system-3
+ scm-test-core scm-test-report-system scm-standard-reports-2
+ scm-test-standard-reports foo gncmodfoo baz gncmodbaz
+ bar gncmodbar gncmod_agedver gncmod_incompatdep
+ gncmod_futuremodsys
+)
+IF (NOT WIN32)
+ ADD_DEPENDENCIES(check gncmod-backend-xml-link)
+ENDIF()
+
# The subdirectories
ADD_SUBDIRECTORY (accounts)
ADD_SUBDIRECTORY (checks)
@@ -441,7 +470,9 @@ SET(gnucash_DOCS
INSTALL(FILES ${gnucash_DOCS} DESTINATION share/doc/gnucash)
-# Link COPYING to LICENSE
+#Link LICENSE to COPYING so that people expecting to find it,
+#will. COPYING is normally linked by autogen.sh to the latest
+#automake-provided version.
SET (_CMD create_symlink)
IF (WIN32)
SET(_CMD copy)
diff --git a/cmake/README_CMAKE.txt b/cmake/README_CMAKE.txt
index 439a048..c9249e1 100644
--- a/cmake/README_CMAKE.txt
+++ b/cmake/README_CMAKE.txt
@@ -29,10 +29,10 @@ faster that using the default Makefile generator to me.)
== Scope
-The scope of the current work is to duplicate the `make` and `make
-install` actions as the Autotools system would. Currently, there is no
-support for `make check`, `make dist`, `make distcheck` or similar
-targets. Other limitations include:
+The scope of the current work is to duplicate the `make`,
+`make check` and `make install` actions as the Autotools system would.
+Currently, there is no support for `make dist`, `make distcheck` or
+similar targets. Other limitations include:
* Not all options available in `./configure` have been ported to
this CMake system.
@@ -152,6 +152,24 @@ For Xcode via the command line (see below to build from within Xcode):
$ xcodebuild -jobs N [-target=install]
+=== Running tests
+
+To run the Gnucash tests (also called checks), use the `check` target.
+For ninja, use:
+
+ $ ninja check
+
+For Makefiles:
+
+ $ make check
+
+For Xcode via the command line:
+
+ $ xcodebuild -jobs N -target=check
+
+A test summary will appear in the terminal. Full logs are available
+in at Testing/Temporary/LastTest.log in the build directory.
+
=== Launching GnuCash
Assuming the build completes successfully, in all cases you can run
@@ -186,7 +204,6 @@ Then continue to follow the existing build instructions.
At this writing, generating a distribution with the CMake build
via dist.sh has not been tested.
-
== Using Xcode on OS X
CMake can generate build files for Xcode such that GnuCash can be
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3b67f3b..c7045bf 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -103,6 +103,7 @@ IF (APPLE)
# FIXME: HANDLE gtk-mac-integration-gtk2
SET(GNC_PLATFORM_DARWIN 1)
SET(GNC_PLATFORM_OSX 1)
+ SET(PLATFORM_OSX 1)
SET(HAVE_OSX_KEYCHAIN 1)
ENDIF(APPLE)
diff --git a/src/app-utils/CMakeLists.txt b/src/app-utils/CMakeLists.txt
index dd4f97a..62b7cf9 100644
--- a/src/app-utils/CMakeLists.txt
+++ b/src/app-utils/CMakeLists.txt
@@ -1,4 +1,4 @@
-
+ADD_SUBDIRECTORY(test)
# Build the library
SET (app_utils_noinst_HEADERS
diff --git a/src/app-utils/test/CMakeLists.txt b/src/app-utils/test/CMakeLists.txt
new file mode 100644
index 0000000..3b48ecc
--- /dev/null
+++ b/src/app-utils/test/CMakeLists.txt
@@ -0,0 +1,28 @@
+
+SET(APP_UTILS_TEST_INCLUDE_DIRS
+ ${CMAKE_SOURCE_DIR}/src/app-utils
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.h
+ ${CMAKE_SOURCE_DIR}/src/test-core
+ ${CMAKE_SOURCE_DIR}/src/engine/test-core
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${GLIB2_INCLUDE_DIRS}
+ ${GUILE_INCLUDE_DIRS}
+)
+
+SET(APP_UTILS_TEST_LIBS gncmod-app-utils gncmod-test-engine gnc-qof test-core ${GUILE_LDFLAGS})
+
+MACRO(ADD_APP_UTILS_TEST _TARGET _SOURCE_FILES)
+ GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" APP_UTILS_TEST_INCLUDE_DIRS APP_UTILS_TEST_LIBS)
+ENDMACRO()
+
+ADD_APP_UTILS_TEST(test-exp-parser test-exp-parser.c)
+GNC_ADD_TEST_WITH_GUILE(test-link-module test-link-module APP_UTILS_TEST_INCLUDE_DIRS APP_UTILS_TEST_LIBS)
+ADD_APP_UTILS_TEST(test-print-parse-amount test-print-parse-amount.c)
+# This test not run in autotools build.
+#GNC_ADD_TEST_WITH_GUILE(test-print-queries test-print-queries.c APP_UTILS_TEST_INCLUDE_DIRS APP_UTILS_TEST_LIBS)
+GNC_ADD_TEST_WITH_GUILE(test-scm-query-string test-scm-query-string.c
+ APP_UTILS_TEST_INCLUDE_DIRS APP_UTILS_TEST_LIBS
+)
+ADD_APP_UTILS_TEST(test-sx test-sx.c)
+
+GNC_ADD_SCHEME_TEST(scm-test-load-module test-load-module.in)
diff --git a/src/backend/dbi/CMakeLists.txt b/src/backend/dbi/CMakeLists.txt
index ef3cc86..de96c05 100644
--- a/src/backend/dbi/CMakeLists.txt
+++ b/src/backend/dbi/CMakeLists.txt
@@ -1,5 +1,7 @@
# CMakeLists.txt for src/backend/dbi
+ADD_SUBDIRECTORY(test)
+
# Source file gncmod-backend-dbi.c does not appear to be use in Makefile.in, so not included here.
SET (backend_dbi_SOURCES
diff --git a/src/backend/dbi/test/CMakeLists.txt b/src/backend/dbi/test/CMakeLists.txt
new file mode 100644
index 0000000..d3e7c80
--- /dev/null
+++ b/src/backend/dbi/test/CMakeLists.txt
@@ -0,0 +1,31 @@
+
+SET(BACKEND_DBI_TEST_INCLUDE_DIRS
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src/core-utils
+ ${CMAKE_SOURCE_DIR}/src/backend/dbi/test
+ ${CMAKE_SOURCE_DIR}/src/backend/sql
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.h
+ ${CMAKE_SOURCE_DIR}/src/engine
+ ${CMAKE_SOURCE_DIR}/src/engine/test-core
+ ${CMAKE_SOURCE_DIR}/src/test-core
+ ${LIBDBI_INCLUDE_PATH}
+ ${GLIB2_INCLUDE_DIRS}
+)
+SET(BACKEND_DBI_TEST_LIBS gnc-backend-sql gncmod-engine gncmod-test-engine gnc-qof test-core ${LIBDBI_LIBRARY})
+
+SET(test_dbi_backend_SOURCES
+ test-backend-dbi.c
+ test-backend-dbi-basic.c
+ test-dbi-business-stuff.c
+ test-dbi-stuff.c
+)
+
+GNC_ADD_TEST(test-backend-dbi "${test_dbi_backend_SOURCES}"
+ BACKEND_DBI_TEST_INCLUDE_DIRS BACKEND_DBI_TEST_LIBS
+)
+
+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\"
+)
\ No newline at end of file
diff --git a/src/backend/sql/CMakeLists.txt b/src/backend/sql/CMakeLists.txt
index 644d165..077ed90 100644
--- a/src/backend/sql/CMakeLists.txt
+++ b/src/backend/sql/CMakeLists.txt
@@ -1,6 +1,6 @@
# CMakeLists.txt for src/backend/dbi
-
+ADD_SUBDIRECTORY(test)
SET (backend_sql_SOURCES
gnc-backend-sql.c
diff --git a/src/backend/sql/test/CMakeLists.txt b/src/backend/sql/test/CMakeLists.txt
new file mode 100644
index 0000000..2d6a63f
--- /dev/null
+++ b/src/backend/sql/test/CMakeLists.txt
@@ -0,0 +1,23 @@
+
+SET(BACKEND_SQL_TEST_INCLUDE_DIRS
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src/backend/sql
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.
+ ${CMAKE_SOURCE_DIR}/src/engine
+ ${CMAKE_SOURCE_DIR}/src/test-core
+ ${GLIB2_INCLUDE_DIRS}
+)
+
+SET(BACKEND_SQL_TEST_LIBS gnc-backend-sql gncmod-engine gnc-qof test-core)
+
+# This test does not actually do anything.
+GNC_ADD_TEST(test-column-types test-column-types.c
+ BACKEND_SQL_TEST_INCLUDE_DIRS BACKEND_SQL_TEST_LIBS
+)
+
+
+
+GNC_ADD_TEST(test-sqlbe "test-sqlbe.c;utest-gnc-backend-sql.c"
+ BACKEND_SQL_TEST_INCLUDE_DIRS BACKEND_SQL_TEST_LIBS
+)
+TARGET_COMPILE_DEFINITIONS(test-sqlbe PRIVATE TESTPROG=test_sqlbe)
\ No newline at end of file
diff --git a/src/backend/xml/CMakeLists.txt b/src/backend/xml/CMakeLists.txt
index 3125f77..4df0cef 100644
--- a/src/backend/xml/CMakeLists.txt
+++ b/src/backend/xml/CMakeLists.txt
@@ -1,5 +1,7 @@
# CMakeLists.txt for src/backend/xml
+ADD_SUBDIRECTORY(test)
+
# Command to generate the swig-engine.c wrapper file
SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
GNC_ADD_SWIG_COMMAND (${SWIG_GNC_MODULE_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnc-module.i)
diff --git a/src/backend/xml/test/CMakeLists.txt b/src/backend/xml/test/CMakeLists.txt
new file mode 100644
index 0000000..d9e4c7c
--- /dev/null
+++ b/src/backend/xml/test/CMakeLists.txt
@@ -0,0 +1,99 @@
+# Common stuff
+
+SET(XML_TEST_INCLUDE_DIRS
+ ${CMAKE_SOURCE_DIR}/src/backend/xml
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/test
+ ${CMAKE_SOURCE_DIR}/src/engine
+ ${CMAKE_SOURCE_DIR}/src/engine/test-core
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.h
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src/test-core # for unittest-support.h
+ ${GLIB2_INCLUDE_DIRS}
+ ${LIBXML2_INCLUDE_DIRS}
+ ${ZLIB_INCLUDE_DIRS}
+)
+
+
+SET(XML_TEST_LIBS gncmod-engine gnc-qof gncmod-test-engine test-core ${LIBXML2_LDFLAGS} -lz)
+
+FUNCTION(ADD_XML_TEST _TARGET _SOURCE_FILES)
+ GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" XML_TEST_INCLUDE_DIRS XML_TEST_LIBS ${ARGN})
+ENDFUNCTION()
+
+
+################################
+
+SET(test_backend_xml_base_SOURCES
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/sixtp-dom-parsers.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/sixtp-dom-generators.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/sixtp-utils.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/sixtp.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/sixtp-stack.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/sixtp-to-dom-parser.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-xml-helper.c
+)
+
+## the xml backend is now a GModule - this test does
+## not load it as a module and cannot link to it
+## and remain portable.
+
+SET(test_backend_xml_module_SOURCES
+ ${test_backend_xml_base_SOURCES}
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/io-example-account.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/io-gncxml-gen.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/io-gncxml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/io-utils.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-account-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-budget-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-lot-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-recurrence-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-schedxaction-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-freqspec-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-transaction-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-commodity-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-book-xml-v2.c
+ ${CMAKE_SOURCE_DIR}/src/backend/xml/gnc-pricedb-xml-v2.c
+)
+
+# The test test-dom-parser1.c is not run by Makefile.am
+
+ADD_XML_TEST(test-date-converting "${test_backend_xml_base_SOURCES};test-date-converting.c")
+ADD_XML_TEST(test-dom-converters1 "${test_backend_xml_base_SOURCES};test-dom-converters1.c")
+ADD_XML_TEST(test-kvp-frames "${test_backend_xml_base_SOURCES};test-kvp-frames.c")
+ADD_XML_TEST(test-load-backend test-load-backend.c)
+ADD_XML_TEST(test-load-xml2 test-load-xml2.c
+ GNC_TEST_FILES=${CMAKE_CURRENT_SOURCE_DIR}/test-files/xml2
+)
+# Not run in autotools.
+#ADD_XML_TEST(test-save-in-lang test-save-in-lang.c
+# GNC_TEST_FILES=${CMAKE_CURRENT_SOURCE_DIR}/test-files/xml2
+#)
+
+GNC_ADD_TEST_WITH_GUILE(test-load-example-account
+ "${test_backend_xml_module_SOURCES};test-load-example-account.c"
+ XML_TEST_INCLUDE_DIRS XML_TEST_LIBS
+ GNC_ACCOUNT_PATH=${CMAKE_SOURCE_DIR}/accounts/C
+)
+ADD_XML_TEST(test-string-converters "${test_backend_xml_base_SOURCES};test-string-converters.c")
+ADD_XML_TEST(test-xml-account "${test_backend_xml_module_SOURCES};test-xml-account.c;test-file-stuff.c")
+ADD_XML_TEST(test-xml-commodity "${test_backend_xml_module_SOURCES};test-xml-commodity.c;test-file-stuff.c")
+ADD_XML_TEST(test-xml-pricedb "${test_backend_xml_module_SOURCES};test-xml-pricedb.c;test-file-stuff.c")
+ADD_XML_TEST(test-xml-transaction "${test_backend_xml_module_SOURCES};test-xml-transaction.c;test-file-stuff.c")
+ADD_XML_TEST(test-xml2-is-file "${test_backend_xml_module_SOURCES};test-xml2-is-file.c"
+ GNC_TEST_FILES=${CMAKE_CURRENT_SOURCE_DIR}/test-files/xml2)
+
+SET(CMAKE_COMMAND_TMP "")
+IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
+ SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
+ENDIF()
+
+SET(test-real-data-env
+ SRCDIR=${CMAKE_CURRENT_SOURCE_DIR}
+ VERBOSE=yes
+ TEST_PATH=${CMAKE_BINARY_DIR}/bin
+)
+ADD_TEST(NAME test-real-data
+ COMMAND ${CMAKE_COMMAND_TMP}
+ ${SHELL} ${CMAKE_CURRENT_SOURCE_DIR}/test-real-data.sh.in
+)
+SET_TESTS_PROPERTIES(test-real-data PROPERTIES ENVIRONMENT "${test-real-data-env}")
diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt
index 98e3c2a..bf109c5 100644
--- a/src/bin/CMakeLists.txt
+++ b/src/bin/CMakeLists.txt
@@ -1,5 +1,5 @@
ADD_SUBDIRECTORY(overrides)
-
+ADD_SUBDIRECTORY(test)
# Some settings are platform dependent. Let's define them per platform.
IF (WIN32)
# Windows specific settings go here:
diff --git a/src/bin/test/CMakeLists.txt b/src/bin/test/CMakeLists.txt
new file mode 100644
index 0000000..540e015
--- /dev/null
+++ b/src/bin/test/CMakeLists.txt
@@ -0,0 +1,3 @@
+
+ADD_TEST(NAME test-version
+ COMMAND ${CMAKE_BINARY_DIR}/bin/gnucash --version)
\ No newline at end of file
diff --git a/src/cmake_modules/GncAddTest.cmake b/src/cmake_modules/GncAddTest.cmake
new file mode 100644
index 0000000..3284ce8
--- /dev/null
+++ b/src/cmake_modules/GncAddTest.cmake
@@ -0,0 +1,64 @@
+
+FUNCTION(GNC_ADD_TEST _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_NAME)
+ SET(HAVE_ENV_VARS FALSE)
+ IF (${ARGC} GREATER 4)
+ # Extra arguments are treated as environment variables
+ SET(HAVE_ENV_VARS TRUE)
+ ENDIF()
+ SET(TEST_INCLUDE_DIRS ${${TEST_INCLUDE_VAR_NAME}})
+ SET(TEST_LIBS ${${TEST_LIBS_VAR_NAME}})
+ SET_SOURCE_FILES_PROPERTIES (${_SOURCE_FILES} PROPERTIES OBJECT_DEPENDS ${CONFIG_H})
+ ADD_EXECUTABLE(${_TARGET} EXCLUDE_FROM_ALL ${_SOURCE_FILES})
+ TARGET_LINK_LIBRARIES(${_TARGET} ${TEST_LIBS})
+ TARGET_INCLUDE_DIRECTORIES(${_TARGET} PRIVATE ${TEST_INCLUDE_DIRS})
+ IF (${HAVE_ENV_VARS})
+ SET(CMAKE_COMMAND_TMP "")
+ IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
+ SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
+ ENDIF()
+ ADD_TEST(${_TARGET} ${CMAKE_COMMAND_TMP}
+ ${CMAKE_BINARY_DIR}/bin/${_TARGET}
+ )
+ SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${ARGN}")
+ ELSE()
+ ADD_TEST(NAME ${_TARGET} COMMAND ${_TARGET})
+ ENDIF()
+ ADD_DEPENDENCIES(check ${_TARGET})
+ENDFUNCTION()
+
+FUNCTION(GNC_ADD_TEST_WITH_GUILE _TARGET _SOURCE_FILES TEST_INCLUDE_VAR_NAME TEST_LIBS_VAR_NAME)
+ SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
+ GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" "${TEST_INCLUDE_VAR_NAME}" "${TEST_LIBS_VAR_NAME}"
+ GNC_UNINSTALLED=yes
+ GNC_BUILDDIR=${CMAKE_BINARY_DIR}
+ GUILE_WARN_DEPRECATED=no
+ GNC_MODULE_PATH=${_GNC_MODULE_PATH}
+ DYLD_LIBRARY_PATH=${_GNC_MODULE_PATH}
+ LD_LIBRARY_PATH=${_GNC_MODULE_PATH}
+ GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0
+ ${ARGN}
+ )
+ENDFUNCTION()
+
+
+FUNCTION(GNC_ADD_SCHEME_TEST _TARGET _SOURCE_FILE)
+ SET(CMAKE_COMMAND_TMP "")
+ IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
+ SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
+ ENDIF()
+ SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
+ SET(GUILE_ENV
+ GNC_UNINSTALLED=yes
+ GNC_BUILDDIR=${CMAKE_BINARY_DIR}
+ GUILE_WARN_DEPRECATED=no
+ GNC_MODULE_PATH=${_GNC_MODULE_PATH}
+ DYLD_LIBRARY_PATH=${_GNC_MODULE_PATH}
+ LD_LIBRARY_PATH=${_GNC_MODULE_PATH}
+ GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0
+ ${ARGN}
+ )
+ ADD_TEST(${_TARGET} ${CMAKE_COMMAND_TMP}
+ ${GUILE_EXECUTABLE} --debug -l ${CMAKE_CURRENT_SOURCE_DIR}/${_SOURCE_FILE} -c "(exit (run-test))"
+ )
+ SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV}")
+ENDFUNCTION()
diff --git a/src/config.h.cmake.in b/src/config.h.cmake.in
index c4754cb..cd9b250 100644
--- a/src/config.h.cmake.in
+++ b/src/config.h.cmake.in
@@ -36,6 +36,7 @@
/* Running on OSX, either X11 or Quartz */
#cmakedefine GNC_PLATFORM_OSX 1
+#cmakedefine PLATFORM_OSX 1
/* POSIX-compliant OS */
#cmakedefine GNC_PLATFORM_POSIX 1
diff --git a/src/core-utils/CMakeLists.txt b/src/core-utils/CMakeLists.txt
index 55eab99..c5af60c 100644
--- a/src/core-utils/CMakeLists.txt
+++ b/src/core-utils/CMakeLists.txt
@@ -1,6 +1,6 @@
# CMakeLists.txt for src/core-utils
-
+ADD_SUBDIRECTORY(test)
# Command to generate the swig-engine.c wrapper file
SET (SWIG_CORE_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-core-utils.c)
GNC_ADD_SWIG_COMMAND (${SWIG_CORE_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/core-utils.i)
diff --git a/src/core-utils/test/CMakeLists.txt b/src/core-utils/test/CMakeLists.txt
new file mode 100644
index 0000000..c701343
--- /dev/null
+++ b/src/core-utils/test/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+
+SET(CORE_UTILS_TEST_INCLUDE_DIRS
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src/core-utils
+ ${CMAKE_SOURCE_DIR}/src/test-core
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.h
+ ${GLIB2_INCLUDE_DIRS}
+)
+SET(CORE_UTILS_TEST_LIBS gnc-core-utils gnc-qof test-core)
+
+MACRO(ADD_CORE_UTILS_TEST _TARGET _SOURCE_FILES)
+ GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" CORE_UTILS_TEST_INCLUDE_DIRS CORE_UTILS_TEST_LIBS)
+ENDMACRO()
+
+ADD_CORE_UTILS_TEST(test-gnc-glib-utils test-gnc-glib-utils.c)
+ADD_CORE_UTILS_TEST(test-gnc-uri-utils test-gnc-uri-utils.c)
+ADD_CORE_UTILS_TEST(test-resolve-file-path test-resolve-file-path.c)
\ No newline at end of file
diff --git a/src/engine/CMakeLists.txt b/src/engine/CMakeLists.txt
index 051c424..cc4d303 100644
--- a/src/engine/CMakeLists.txt
+++ b/src/engine/CMakeLists.txt
@@ -1,5 +1,8 @@
# CMakeLists.txt for src/engine
+ADD_SUBDIRECTORY(test-core)
+ADD_SUBDIRECTORY(test)
+
SET(engine_noinst_HEADERS
AccountP.h
ScrubP.h
diff --git a/src/engine/test-core/CMakeLists.txt b/src/engine/test-core/CMakeLists.txt
new file mode 100644
index 0000000..d5b7790
--- /dev/null
+++ b/src/engine/test-core/CMakeLists.txt
@@ -0,0 +1,17 @@
+
+
+SET(libgncmod_test_engine_SOURCES
+ gncmod-test-engine.c test-engine-stuff.c
+)
+
+ADD_LIBRARY(gncmod-test-engine STATIC ${libgncmod_test_engine_SOURCES})
+
+TARGET_INCLUDE_DIRECTORIES(gncmod-test-engine PRIVATE
+ ${GMODULE_INCLUDE_DIRS}
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src/engine
+ ${CMAKE_SOURCE_DIR}/src/test-core
+)
\ No newline at end of file
diff --git a/src/engine/test/CMakeLists.txt b/src/engine/test/CMakeLists.txt
new file mode 100644
index 0000000..b66c1bc
--- /dev/null
+++ b/src/engine/test/CMakeLists.txt
@@ -0,0 +1,91 @@
+# Common stuff
+
+SET(ENGINE_TEST_INCLUDE_DIRS
+ ${CMAKE_SOURCE_DIR}/src/backend/xml
+ ${CMAKE_SOURCE_DIR}/src/engine
+ ${CMAKE_SOURCE_DIR}/src/engine/test-core
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.h
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src/test-core # for unittest-support.h
+ ${GLIB2_INCLUDE_DIRS}
+)
+
+SET(ENGINE_TEST_LIBS gncmod-engine gnc-qof gncmod-test-engine test-core ${LIBXML2_LDFLAGS})
+
+MACRO(ADD_ENGINE_TEST _TARGET _SOURCE_FILES)
+ GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" ENGINE_TEST_INCLUDE_DIRS ENGINE_TEST_LIBS)
+ENDMACRO()
+
+# Not via macro because of unique link requirements
+
+ADD_EXECUTABLE(test-link EXCLUDE_FROM_ALL test-link.c)
+TARGET_LINK_LIBRARIES(test-link gnc-qof gnc-core-utils)
+ADD_TEST(NAME test-link COMMAND test-link)
+ADD_DEPENDENCIES(check test-link)
+
+#################################################
+
+ADD_ENGINE_TEST(test-load-engine test-load-engine.c)
+ADD_ENGINE_TEST(test-guid test-guid.c)
+ADD_ENGINE_TEST(test-numeric test-numeric.c)
+ADD_ENGINE_TEST(test-date test-date.c)
+ADD_ENGINE_TEST(test-object test-object.c)
+ADD_ENGINE_TEST(test-commodities test-commodities.c)
+
+SET(test_engine_SOURCES
+ test-engine.c
+ utest-Account.c
+ utest-Budget.c
+ utest-Entry.c
+ utest-Invoice.c
+ utest-Split.c
+ utest-Transaction.c
+)
+
+ADD_ENGINE_TEST(test-engine "${test_engine_SOURCES}")
+TARGET_COMPILE_OPTIONS(test-engine PRIVATE -Wno-write-strings)
+
+ADD_ENGINE_TEST(test-account-object test-account-object.c)
+ADD_ENGINE_TEST(test-group-vs-book test-group-vs-book.c)
+ADD_ENGINE_TEST(test-lots test-lots.c)
+ADD_ENGINE_TEST(test-querynew test-querynew.c)
+ADD_ENGINE_TEST(test-query test-query.c)
+ADD_ENGINE_TEST(test-split-vs-account test-split-vs-account.c)
+ADD_ENGINE_TEST(test-transaction-reversal test-transaction-reversal.c)
+ADD_ENGINE_TEST(test-transaction-voiding test-transaction-voiding.c)
+ADD_ENGINE_TEST(test-recurrence test-recurrence.c)
+ADD_ENGINE_TEST(test-business test-business.c)
+ADD_ENGINE_TEST(test-address test-address.c)
+ADD_ENGINE_TEST(test-customer test-customer.c)
+ADD_ENGINE_TEST(test-employee test-employee.c)
+ADD_ENGINE_TEST(test-job test-job.c)
+ADD_ENGINE_TEST(test-vendor test-vendor.c)
+
+############################
+# This is a C test that needs GUILE environment variables set.
+GNC_ADD_TEST_WITH_GUILE(test-scm-query test-scm-query.c ENGINE_TEST_INCLUDE_DIRS ENGINE_TEST_LIBS)
+############################
+
+GNC_ADD_SCHEME_TEST(scm-test-account test-account.scm)
+GNC_ADD_SCHEME_TEST(scm-test-create-account test-create-account.scm)
+GNC_ADD_SCHEME_TEST(scm-test-test-extra test-test-extras.scm)
+GNC_ADD_SCHEME_TEST(scm-test-split test-split.scm)
+# This check not run in autotools. Doesn't pass.
+#GNC_ADD_SCHEME_TEST(scm-test-scm-query-import test-scm-query-import.scm)
+
+SET(engine_test_SCHEME test-extras.scm)
+
+SET(GUILE_MODULES "")
+SET(GUILE_LOAD_DIRS src/app-utils src/scm)
+SET(GUILE_LIBRARY_DIRS "")
+SET(GUILE_DEPENDS scm-app-utils scm-scm)
+
+GNC_ADD_SCHEME_TARGETS(scm-test-engine
+ "${engine_test_SCHEME}"
+ gnucash/engine/test
+ "${GUILE_MODULES}"
+ "${GUILE_LOAD_DIRS}"
+ "${GUILE_LIBRARY_DIRS}"
+ "${GUILE_DEPENDS}"
+ FALSE
+)
diff --git a/src/gnc-module/CMakeLists.txt b/src/gnc-module/CMakeLists.txt
index d06f982..0863fd3 100644
--- a/src/gnc-module/CMakeLists.txt
+++ b/src/gnc-module/CMakeLists.txt
@@ -1,4 +1,5 @@
# CMakeLists.txt for src/gnc-module
+ADD_SUBDIRECTORY(test)
# Command to generate the swig-engine.c wrapper file
SET (SWIG_GNC_MODULE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnc-module.c)
diff --git a/src/gnc-module/test/CMakeLists.txt b/src/gnc-module/test/CMakeLists.txt
new file mode 100644
index 0000000..b9de8a4
--- /dev/null
+++ b/src/gnc-module/test/CMakeLists.txt
@@ -0,0 +1,103 @@
+
+# TESTCOUNTS: { dir: gnc-module/test, test_count: 12 }
+
+ADD_SUBDIRECTORY(mod-foo)
+ADD_SUBDIRECTORY(mod-bar)
+ADD_SUBDIRECTORY(mod-baz)
+ADD_SUBDIRECTORY(misc-mods)
+
+SET(GNC_MODULE_TEST_INCLUDE_DIRS
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${CMAKE_SOURCE_DIR}/src/test-core
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.h
+ ${GLIB2_INCLUDE_DIRS}
+ ${GUILE_INCLUDE_DIRS}
+)
+
+SET(GNC_MODULE_TEST_LIBS gnc-module gnc-qof test-core)
+
+MACRO(ADD_GNC_MODULE_TEST _TARGET _SOURCE_FILES)
+ GNC_ADD_TEST(${_TARGET} "${_SOURCE_FILES}" GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS)
+ENDMACRO()
+
+SET(_GNC_MODULE_PATH ${CMAKE_BINARY_DIR}/lib:${CMAKE_BINARY_DIR}/lib/gnucash)
+SET(GUILE_ENV
+ GNC_UNINSTALLED=yes
+ GNC_BUILDDIR=${CMAKE_BINARY_DIR}
+ GUILE_WARN_DEPRECATED=no
+ GNC_MODULE_PATH=${_GNC_MODULE_PATH}
+ DYLD_LIBRARY_PATH=${_GNC_MODULE_PATH}
+ LD_LIBRARY_PATH=${_GNC_MODULE_PATH}
+ GUILE_LOAD_COMPILED_PATH=${CMAKE_BINARY_DIR}/lib/gnucash/scm/ccache/2.0
+)
+
+
+FUNCTION(RUN_TEST_WITH_GUILE _TARGET _SOURCE_FILE)
+ SET(CMAKE_COMMAND_TMP "")
+ IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
+ SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
+ ENDIF()
+ ADD_TEST(NAME ${_TARGET}
+ COMMAND ${CMAKE_COMMAND_TMP}
+ ${GUILE_EXECUTABLE} -s ${_SOURCE_FILE}
+ )
+ SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};${ARGN}")
+ENDFUNCTION()
+
+GNC_ADD_TEST_WITH_GUILE(test-load-c test-load-c.c GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
+ GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo
+)
+
+RUN_TEST_WITH_GUILE(test-load-scm ${CMAKE_CURRENT_SOURCE_DIR}/test-load-scm.in
+ GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo
+)
+RUN_TEST_WITH_GUILE(test-load-deps ${CMAKE_CURRENT_SOURCE_DIR}/test-load-deps.in
+ GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo:${CMAKE_CURRENT_SOURCE_DIR}/mod-baz
+)
+RUN_TEST_WITH_GUILE(test-scm-init ${CMAKE_CURRENT_SOURCE_DIR}/test-scm-init.in)
+
+RUN_TEST_WITH_GUILE(test-scm-multi ${CMAKE_CURRENT_SOURCE_DIR}/test-scm-multi.in
+ GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo:${CMAKE_CURRENT_SOURCE_DIR}/mod-bar
+)
+RUN_TEST_WITH_GUILE(test-scm-dynload ${CMAKE_CURRENT_SOURCE_DIR}/test-scm-dynload.in)
+
+GNC_ADD_TEST_WITH_GUILE(test-modsysver test-modsysver.c
+ GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
+)
+GNC_ADD_TEST_WITH_GUILE(test-incompatdep test-incompatdep.c
+ GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
+)
+GNC_ADD_TEST_WITH_GUILE(test-agedver test-agedver.c
+ GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
+)
+
+GNC_ADD_TEST(test-dynload test-dynload.c
+ GNC_MODULE_TEST_INCLUDE_DIRS GNC_MODULE_TEST_LIBS
+ LIBDIR=${CMAKE_BINARY_DIR}/lib
+)
+
+SET(GUILE ${GUILE_EXECUTABLE})
+CONFIGURE_FILE(test-gwrapped-c.in test-gwrapped-c)
+CONFIGURE_FILE(test-scm-module.in test-scm-module)
+
+FUNCTION(RUN_GUILE_SHELL_TEST _TARGET _SOURCE_FILE)
+ SET(CMAKE_COMMAND_TMP "")
+ IF (${CMAKE_VERSION} VERSION_GREATER 3.1)
+ SET(CMAKE_COMMAND_TMP ${CMAKE_COMMAND} -E env)
+ ENDIF()
+ ADD_TEST(NAME ${_TARGET}
+ COMMAND ${CMAKE_COMMAND_TMP}
+ ${SHELL} ${_SOURCE_FILE}
+ )
+ SET_TESTS_PROPERTIES(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};${ARGN}")
+ENDFUNCTION()
+
+RUN_GUILE_SHELL_TEST(test-gwrapped-c ${CMAKE_CURRENT_BINARY_DIR}/test-gwrapped-c
+ GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo
+)
+
+RUN_GUILE_SHELL_TEST(test-scm-module ${CMAKE_CURRENT_BINARY_DIR}/test-scm-module
+ GUILE_LOAD_PATH=${CMAKE_CURRENT_SOURCE_DIR}/mod-foo
+)
+
diff --git a/src/gnc-module/test/misc-mods/CMakeLists.txt b/src/gnc-module/test/misc-mods/CMakeLists.txt
new file mode 100644
index 0000000..71f7ed1
--- /dev/null
+++ b/src/gnc-module/test/misc-mods/CMakeLists.txt
@@ -0,0 +1,14 @@
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${GLIB2_INCLUDE_DIRS}
+)
+
+ADD_LIBRARY(gncmod_agedver EXCLUDE_FROM_ALL agedver.c)
+TARGET_LINK_LIBRARIES(gncmod_agedver ${GLIB2_LDFLAGS})
+
+ADD_LIBRARY(gncmod_futuremodsys EXCLUDE_FROM_ALL futuremodsys.c)
+TARGET_LINK_LIBRARIES(gncmod_futuremodsys ${GLIB2_LDFLAGS})
+
+ADD_LIBRARY(gncmod_incompatdep EXCLUDE_FROM_ALL incompatdep.c)
+TARGET_LINK_LIBRARIES(gncmod_incompatdep gnc-module ${GLIB2_LDFLAGS})
\ No newline at end of file
diff --git a/src/gnc-module/test/mod-bar/CMakeLists.txt b/src/gnc-module/test/mod-bar/CMakeLists.txt
new file mode 100644
index 0000000..6ebf789
--- /dev/null
+++ b/src/gnc-module/test/mod-bar/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+SET (SWIG_BAR_C ${CMAKE_CURRENT_BINARY_DIR}/swig-bar.c)
+GNC_ADD_SWIG_COMMAND (${SWIG_BAR_C} ${CMAKE_CURRENT_SOURCE_DIR}/bar.i bar.h)
+
+ADD_LIBRARY(bar EXCLUDE_FROM_ALL bar.c bar.h)
+ADD_LIBRARY(gncmodbar EXCLUDE_FROM_ALL gnc-mod-bar.c)
+SET_SOURCE_FILES_PROPERTIES (gnc-mod-bar.c PROPERTY OBJECT_DEPENDS ${SWIG_BAR_C})
+
+TARGET_LINK_LIBRARIES(gncmodbar bar gnc-module)
+TARGET_INCLUDE_DIRECTORIES(gncmodbar PRIVATE
+ ${CMAKE_BINARY_DIR}/src
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${GLIB2_INCLUDE_DIRS}
+ ${GUILE_INCLUDE_DIRS}
+)
diff --git a/src/gnc-module/test/mod-baz/CMakeLists.txt b/src/gnc-module/test/mod-baz/CMakeLists.txt
new file mode 100644
index 0000000..376ff07
--- /dev/null
+++ b/src/gnc-module/test/mod-baz/CMakeLists.txt
@@ -0,0 +1,24 @@
+
+SET (SWIG_BAZ_C ${CMAKE_CURRENT_BINARY_DIR}/swig-baz.c)
+GNC_ADD_SWIG_COMMAND (${SWIG_BAZ_C} ${CMAKE_CURRENT_SOURCE_DIR}/baz.i baz.h)
+
+ADD_LIBRARY(baz EXCLUDE_FROM_ALL baz.c baz.h)
+TARGET_INCLUDE_DIRECTORIES(baz PRIVATE
+ ${CMAKE_SOURCE_DIR}/src/gnc-module/test/mod-foo
+)
+TARGET_LINK_LIBRARIES(baz foo)
+
+
+ADD_LIBRARY(gncmodbaz EXCLUDE_FROM_ALL gnc-mod-baz.c)
+SET_SOURCE_FILES_PROPERTIES (gnc-mod-baz.c PROPERTY OBJECT_DEPENDS ${SWIG_BAZ_C})
+
+TARGET_LINK_LIBRARIES(gncmodbaz baz gnc-module)
+TARGET_INCLUDE_DIRECTORIES(gncmodbaz PRIVATE
+ ${CMAKE_BINARY_DIR}/src
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${GLIB2_INCLUDE_DIRS}
+ ${GUILE_INCLUDE_DIRS}
+)
diff --git a/src/gnc-module/test/mod-foo/CMakeLists.txt b/src/gnc-module/test/mod-foo/CMakeLists.txt
new file mode 100644
index 0000000..13dc098
--- /dev/null
+++ b/src/gnc-module/test/mod-foo/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+SET (SWIG_FOO_C ${CMAKE_CURRENT_BINARY_DIR}/swig-foo.c)
+GNC_ADD_SWIG_COMMAND (${SWIG_FOO_C} ${CMAKE_CURRENT_SOURCE_DIR}/foo.i foo.h)
+
+ADD_LIBRARY(foo EXCLUDE_FROM_ALL foo.c foo.h)
+ADD_LIBRARY(gncmodfoo EXCLUDE_FROM_ALL gnc-mod-foo.c)
+SET_SOURCE_FILES_PROPERTIES (gnc-mod-foo.c PROPERTY OBJECT_DEPENDS ${SWIG_FOO_C})
+
+TARGET_LINK_LIBRARIES(gncmodfoo foo gnc-module)
+TARGET_INCLUDE_DIRECTORIES(gncmodfoo PRIVATE
+ ${CMAKE_BINARY_DIR}/src
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${GLIB2_INCLUDE_DIRS}
+ ${GUILE_INCLUDE_DIRS}
+)
diff --git a/src/gnome-utils/CMakeLists.txt b/src/gnome-utils/CMakeLists.txt
index 73f6390..2f353ba 100644
--- a/src/gnome-utils/CMakeLists.txt
+++ b/src/gnome-utils/CMakeLists.txt
@@ -3,6 +3,7 @@
ADD_SUBDIRECTORY(gschemas)
ADD_SUBDIRECTORY(gtkbuilder)
ADD_SUBDIRECTORY(ui)
+ADD_SUBDIRECTORY(test)
SET (SWIG_GNOME_UTILS_C ${CMAKE_CURRENT_BINARY_DIR}/swig-gnome-utils.c)
GNC_ADD_SWIG_COMMAND (${SWIG_GNOME_UTILS_C} ${CMAKE_CURRENT_SOURCE_DIR}/gnome-utils.i)
diff --git a/src/gnome-utils/test/CMakeLists.txt b/src/gnome-utils/test/CMakeLists.txt
new file mode 100644
index 0000000..f3d241a
--- /dev/null
+++ b/src/gnome-utils/test/CMakeLists.txt
@@ -0,0 +1,32 @@
+
+SET(GNOME_UTILS_TEST_INCLUDE_DIRS
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${GLIB2_INCLUDE_DIRS}
+ ${GUILE_INCLUDE_DIRS}
+)
+SET(GNOME_UTILS_TEST_LIBS gnc-module test-core)
+
+GNC_ADD_TEST_WITH_GUILE(test-link-module-gnome-utils test-link-module.c
+ GNOME_UTILS_TEST_INCLUDE_DIRS GNOME_UTILS_TEST_LIBS
+)
+
+
+SET(GNOME_UTILS_GUI_TEST_INCLUDE_DIRS
+ ${GNOME_UTILS_TEST_INCLUDE_DIRS}
+ ${CMAKE_BINARY_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src/gnome-utils
+ ${CMAKE_SOURCE_DIR}/src/engine
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.h
+ ${GTK2_INCLUDE_DIRS}
+)
+SET(GNOME_UTILS_GUI_TEST_LIBS
+ ${GNOME_UTILS_TEST_LIBS}
+ gncmod-gnome-utils
+)
+#This is a GUI test
+#GNC_ADD_TEST(test-gnc-recurrence test-gnc-recurrence.c
+# GNOME_UTILS_GUI_TEST_INCLUDE_DIRS
+# GNOME_UTILS_GUI_TEST_LIBS
+#
+
+GNC_ADD_SCHEME_TEST(test-load-module-gnome-utils test-load-module.in)
diff --git a/src/import-export/CMakeLists.txt b/src/import-export/CMakeLists.txt
index 4750c44..bcfb2cc 100644
--- a/src/import-export/CMakeLists.txt
+++ b/src/import-export/CMakeLists.txt
@@ -1,5 +1,7 @@
# CMakeLists.txt for src/import-export
+ADD_SUBDIRECTORY(test)
+
# ############################################################
IF (WITH_AQBANKING)
ADD_SUBDIRECTORY(aqb)
diff --git a/src/import-export/csv-imp/CMakeLists.txt b/src/import-export/csv-imp/CMakeLists.txt
index 940453e..c55f7e3 100644
--- a/src/import-export/csv-imp/CMakeLists.txt
+++ b/src/import-export/csv-imp/CMakeLists.txt
@@ -1,4 +1,5 @@
ADD_SUBDIRECTORY(gschemas)
+ADD_SUBDIRECTORY(test)
SET(csv_import_SOURCES
gncmod-csv-import.c
diff --git a/src/import-export/csv-imp/test/CMakeLists.txt b/src/import-export/csv-imp/test/CMakeLists.txt
new file mode 100644
index 0000000..6dd3fc3
--- /dev/null
+++ b/src/import-export/csv-imp/test/CMakeLists.txt
@@ -0,0 +1,22 @@
+
+SET(CSV_IMP_TEST_INCLUDE_DIRS
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src/engine
+ ${CMAKE_SOURCE_DIR}/src/test-core
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof
+ ${CMAKE_SOURCE_DIR}/lib
+ ${GLIB2_INCLUDE_DIRS}
+)
+SET(CSV_IMP_TEST_LIBS gncmod-csv-import gncmod-engine gnc-qof test-core)
+
+SET(test_csv_imp_SOURCES
+ test-csv-imp.c
+ utest-gnc-csv-model.c
+)
+
+GNC_ADD_TEST(test-csv-imp "${test_csv_imp_SOURCES}"
+ CSV_IMP_TEST_INCLUDE_DIRS CSV_IMP_TEST_LIBS
+ SRCDIR=${CMAKE_CURRENT_SOURCE_DIR}
+)
+
diff --git a/src/import-export/ofx/CMakeLists.txt b/src/import-export/ofx/CMakeLists.txt
index de0d7ed..4ee34c7 100644
--- a/src/import-export/ofx/CMakeLists.txt
+++ b/src/import-export/ofx/CMakeLists.txt
@@ -1,4 +1,5 @@
ADD_SUBDIRECTORY(gschemas)
+ADD_SUBDIRECTORY(test)
SET(ofx_SOURCES
gnc-ofx-import.c
diff --git a/src/import-export/ofx/test/CMakeLists.txt b/src/import-export/ofx/test/CMakeLists.txt
new file mode 100644
index 0000000..ac81789
--- /dev/null
+++ b/src/import-export/ofx/test/CMakeLists.txt
@@ -0,0 +1,8 @@
+
+
+SET(OFX_TEST_INCLUDE_DIRS
+ ${LIBOFX_INCLUDE_DIRS}
+)
+SET(OFX_TEST_LIBS)
+
+GNC_ADD_TEST(test-link-ofx test-link.c OFX_TEST_INCLUDE_DIRS OFX_TEST_LIBS)
\ No newline at end of file
diff --git a/src/import-export/qif-imp/CMakeLists.txt b/src/import-export/qif-imp/CMakeLists.txt
index 7205543..05bc16e 100644
--- a/src/import-export/qif-imp/CMakeLists.txt
+++ b/src/import-export/qif-imp/CMakeLists.txt
@@ -1,6 +1,7 @@
# CMakeLists.txt for src/import_export/qif-imp
ADD_SUBDIRECTORY(gschemas)
+ADD_SUBDIRECTORY(test)
SET (qif_import_SOURCES
dialog-account-picker.c
diff --git a/src/import-export/qif-imp/test/CMakeLists.txt b/src/import-export/qif-imp/test/CMakeLists.txt
new file mode 100644
index 0000000..f502445
--- /dev/null
+++ b/src/import-export/qif-imp/test/CMakeLists.txt
@@ -0,0 +1,6 @@
+
+
+SET(QIF_IMP_TEST_INCLUDE_DIRS)
+SET(QIF_IMP_TEST_LIBS)
+
+GNC_ADD_TEST(test-link-qif-imp test-link.c QIF_IMP_TEST_INCLUDE_DIRS QIF_IMP_TEST_LIBS)
diff --git a/src/import-export/qif/CMakeLists.txt b/src/import-export/qif/CMakeLists.txt
index 0bb858a..6c9ee11 100644
--- a/src/import-export/qif/CMakeLists.txt
+++ b/src/import-export/qif/CMakeLists.txt
@@ -1,4 +1,7 @@
+#Tests for this directory are not run.
+#ADD_SUBDIRECTORY(test)
+
SET(qif_SOURCES
qif-context.c
qif-defaults.c
diff --git a/src/import-export/qif/test/CMakeLists.txt b/src/import-export/qif/test/CMakeLists.txt
new file mode 100644
index 0000000..659f987
--- /dev/null
+++ b/src/import-export/qif/test/CMakeLists.txt
@@ -0,0 +1,13 @@
+
+SET(QIF_TEST_INCLUDE_DIRS
+ ${CMAKE_BINARY_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src/import-export/qif
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof
+ ${CMAKE_SOURCE_DIR}/src/test-core
+ ${GLIB2_INCLUDE_DIRS}
+)
+SET(QIF_TEST_LIBS gncmod-qif test-core)
+
+GNC_ADD_TEST(test-link-qif test-link.c QIF_TEST_INCLUDE_DIRS QIF_TEST_LIBS)
+GNC_ADD_TEST(test-qif test-qif.c QIF_TEST_INCLUDE_DIRS QIF_TEST_LIBS
+ GNC_TEST_FILES=${CMAKE_CURRENT_SOURCE_DIR}/test-files)
\ No newline at end of file
diff --git a/src/import-export/test/CMakeLists.txt b/src/import-export/test/CMakeLists.txt
new file mode 100644
index 0000000..5e7ffae
--- /dev/null
+++ b/src/import-export/test/CMakeLists.txt
@@ -0,0 +1,19 @@
+
+
+SET(GENERIC_IMPORT_TEST_INCLUDE_DIRS
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${CMAKE_SOURCE_DIR}/src/import-export
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof
+ ${CMAKE_SOURCE_DIR}/src/test-core
+ ${GLIB2_INCLUDE_DIRS}
+ ${GUILE_INCLUDE_DIRS}
+)
+SET(GENERIC_IMPORT_TEST_LIBS gncmod-generic-import gnc-qof test-core)
+
+GNC_ADD_TEST_WITH_GUILE(test-import-parse test-import-parse.c
+ GENERIC_IMPORT_TEST_INCLUDE_DIRS GENERIC_IMPORT_TEST_LIBS
+)
+GNC_ADD_TEST(test-link-generic-import test-link.c
+ GENERIC_IMPORT_TEST_INCLUDE_DIRS GENERIC_IMPORT_TEST_LIBS
+)
diff --git a/src/libqof/CMakeLists.txt b/src/libqof/CMakeLists.txt
index 4b2f1a2..0928143 100644
--- a/src/libqof/CMakeLists.txt
+++ b/src/libqof/CMakeLists.txt
@@ -1,5 +1,7 @@
# CMakeLists.txt for src/libqof
+ADD_SUBDIRECTORY(qof/test)
+
SET (gnc_qof_HEADERS
qof/gnc-date-p.h
diff --git a/src/libqof/qof/test/CMakeLists.txt b/src/libqof/qof/test/CMakeLists.txt
new file mode 100644
index 0000000..61fdc68
--- /dev/null
+++ b/src/libqof/qof/test/CMakeLists.txt
@@ -0,0 +1,26 @@
+
+SET(TEST_QOF_INCLUDE_DIRS
+ ${CMAKE_BINARY_DIR}/src # for config.h
+ ${CMAKE_SOURCE_DIR}/src/test-core # for unittest-support.h
+ ${CMAKE_SOURCE_DIR}/src/libqof/qof # for qof.h
+ ${GLIB2_INCLUDE_DIRS}
+)
+
+SET(TEST_QOF_LIBS
+ gnc-qof test-core ${GLIB2_LDFLAGS} -lm
+)
+
+SET(test_qof_SOURCES
+ test-gnc-date.c
+ test-qof.c
+ test-qofbook.c
+ test-qofinstance.c
+ test-kvp_frame.c
+ test-qofobject.c
+ test-qofsession.c
+ test-qof-string-cache.c
+ ${CMAKE_SOURCE_DIR}/src/test-core/unittest-support.c
+)
+
+GNC_ADD_TEST(test-qof "${test_qof_SOURCES}" TEST_QOF_INCLUDE_DIRS TEST_QOF_LIBS)
+TARGET_COMPILE_DEFINITIONS(test-qof PRIVATE TESTPROG=test_qof)
diff --git a/src/register/ledger-core/CMakeLists.txt b/src/register/ledger-core/CMakeLists.txt
index 09b3fbc..6e629df 100644
--- a/src/register/ledger-core/CMakeLists.txt
+++ b/src/register/ledger-core/CMakeLists.txt
@@ -1,4 +1,5 @@
+ADD_SUBDIRECTORY(test)
SET (ledger_core_SOURCES
gnc-ledger-display.c
diff --git a/src/register/ledger-core/test/CMakeLists.txt b/src/register/ledger-core/test/CMakeLists.txt
new file mode 100644
index 0000000..1ec9b92
--- /dev/null
+++ b/src/register/ledger-core/test/CMakeLists.txt
@@ -0,0 +1,7 @@
+
+SET(LEDGER_CORE_TEST_INCLUDE_DIRS "")
+SET(LEDGER_CORE_TEST_LIBS)
+
+GNC_ADD_TEST(test-link-module-ledger-core test-link-module.c
+ LEDGER_CORE_TEST_INCLUDE_DIRS LEDGER_CORE_TEST_LIBS
+)
\ No newline at end of file
diff --git a/src/register/register-core/CMakeLists.txt b/src/register/register-core/CMakeLists.txt
index c5ab961..bfdae12 100644
--- a/src/register/register-core/CMakeLists.txt
+++ b/src/register/register-core/CMakeLists.txt
@@ -1,4 +1,4 @@
-
+ADD_SUBDIRECTORY(test)
SET (register_core_SOURCES
gncmod-register-core.c
diff --git a/src/register/register-core/test/CMakeLists.txt b/src/register/register-core/test/CMakeLists.txt
new file mode 100644
index 0000000..4bf1f05
--- /dev/null
+++ b/src/register/register-core/test/CMakeLists.txt
@@ -0,0 +1,7 @@
+
+SET(REGISTER_CORE_TEST_INCLUDE_DIRS "")
+SET(REGISTER_CORE_TEST_LIBS)
+
+GNC_ADD_TEST(test-link-module-register-core test-link-module.c
+ REGISTER_CORE_TEST_INCLUDE_DIRS REGISTER_CORE_TEST_LIBS
+)
\ No newline at end of file
diff --git a/src/register/register-gnome/CMakeLists.txt b/src/register/register-gnome/CMakeLists.txt
index 9f0a5db..3c4d222 100644
--- a/src/register/register-gnome/CMakeLists.txt
+++ b/src/register/register-gnome/CMakeLists.txt
@@ -1,3 +1,4 @@
+ADD_SUBDIRECTORY(test)
SET (register_gnome_SOURCES
gncmod-register-gnome.c
diff --git a/src/register/register-gnome/test/CMakeLists.txt b/src/register/register-gnome/test/CMakeLists.txt
new file mode 100644
index 0000000..38251b8
--- /dev/null
+++ b/src/register/register-gnome/test/CMakeLists.txt
@@ -0,0 +1,7 @@
+
+SET(REGISTER_GNOME_TEST_INCLUDE_DIRS "")
+SET(REGISTER_GNOME_TEST_LIBS)
+
+GNC_ADD_TEST(test-link-module-register-gnome test-link-module.c
+REGISTER_GNOME_TEST_INCLUDE_DIRS REGISTER_GNOME_TEST_LIBS
+)
\ No newline at end of file
diff --git a/src/report/locale-specific/us/CMakeLists.txt b/src/report/locale-specific/us/CMakeLists.txt
index 1945079..2cd1e47 100644
--- a/src/report/locale-specific/us/CMakeLists.txt
+++ b/src/report/locale-specific/us/CMakeLists.txt
@@ -1,4 +1,4 @@
-
+ADD_SUBDIRECTORY(test)
SET(locale_reports_us_SOURCES
gncmod-locale-reports-us.c
diff --git a/src/report/locale-specific/us/test/CMakeLists.txt b/src/report/locale-specific/us/test/CMakeLists.txt
new file mode 100644
index 0000000..72cab04
--- /dev/null
+++ b/src/report/locale-specific/us/test/CMakeLists.txt
@@ -0,0 +1,11 @@
+SET(LOCALE_SPECIFIC_US_TEST_INCLUDE_DIRS "")
+SET(LOCALE_SPECIFIC_US_TEST_LIBS)
+
+GNC_ADD_TEST(test-link-module-report-locale-specific-us test-link-module.c
+ LOCALE_SPECIFIC_US_TEST_INCLUDE_DIRS LOCALE_SPECIFIC_US_TEST_LIBS
+)
+
+# This test not run in the autotools build.
+#GNC_ADD_SCHEME_TEST(test-load-module-report-locale-specific-us
+# test-load-module.in
+#)
\ No newline at end of file
diff --git a/src/report/report-gnome/CMakeLists.txt b/src/report/report-gnome/CMakeLists.txt
index 8df635e..9678a3d 100644
--- a/src/report/report-gnome/CMakeLists.txt
+++ b/src/report/report-gnome/CMakeLists.txt
@@ -1,4 +1,4 @@
-
+ADD_SUBDIRECTORY(test)
SET (report_gnome_HEADERS
dialog-report-column-view.h
diff --git a/src/report/report-gnome/test/CMakeLists.txt b/src/report/report-gnome/test/CMakeLists.txt
new file mode 100644
index 0000000..29f7dd0
--- /dev/null
+++ b/src/report/report-gnome/test/CMakeLists.txt
@@ -0,0 +1,14 @@
+SET(REPORT_GNOME_TEST_INCLUDE_DIRS
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${GUILE_INCLUDE_DIRS}
+
+)
+SET(REPORT_GNOME_TEST_LIBS gnc-module)
+
+GNC_ADD_TEST_WITH_GUILE(test-link-module-report-gnome test-link-module.c
+ REPORT_GNOME_TEST_INCLUDE_DIRS REPORT_GNOME_TEST_LIBS
+)
+
+GNC_ADD_SCHEME_TEST(test-load-module-report-gnome
+ test-load-module.in
+)
\ No newline at end of file
diff --git a/src/report/report-system/CMakeLists.txt b/src/report/report-system/CMakeLists.txt
index 33db0fd..74bffc7 100644
--- a/src/report/report-system/CMakeLists.txt
+++ b/src/report/report-system/CMakeLists.txt
@@ -1,3 +1,4 @@
+ADD_SUBDIRECTORY(test)
SET (report_system_HEADERS
gnc-report.h
diff --git a/src/report/report-system/test/CMakeLists.txt b/src/report/report-system/test/CMakeLists.txt
new file mode 100644
index 0000000..f04e7c7
--- /dev/null
+++ b/src/report/report-system/test/CMakeLists.txt
@@ -0,0 +1,26 @@
+SET(REPORT_SYSTEM_TEST_INCLUDE_DIRS
+ ${CMAKE_SOURCE_DIR}/src/gnc-module
+ ${GUILE_INCLUDE_DIRS}
+)
+SET(REPORT_SYSTEM_TEST_LIBS gnc-module)
+
+GNC_ADD_TEST_WITH_GUILE(test-link-module-report-system test-link-module.c
+ REPORT_SYSTEM_TEST_INCLUDE_DIRS REPORT_SYSTEM_TEST_LIBS
+)
+
+GNC_ADD_SCHEME_TEST(test-load-module-report-system test-load-module.in)
+GNC_ADD_SCHEME_TEST(test-collectors test-collectors.scm)
+GNC_ADD_SCHEME_TEST(test-list-extras test-list-extras.scm)
+GNC_ADD_SCHEME_TEST(test-report-utilities test-report-utilities.scm)
+# This test is not run in the autotools build.
+#GNC_ADD_SCHEME_TEST(test-test-extras test-test-extras.scm)
+
+GNC_ADD_SCHEME_TARGETS(scm-test-report-system
+ test-extras.scm
+ gnucash/report/report-system/test
+ ""
+ ""
+ ""
+ "scm-gnc-module;scm-test-engine;scm-report-system-3"
+ FALSE
+)
\ No newline at end of file
diff --git a/src/report/standard-reports/CMakeLists.txt b/src/report/standard-reports/CMakeLists.txt
index 53bb1cd..57f667b 100644
--- a/src/report/standard-reports/CMakeLists.txt
+++ b/src/report/standard-reports/CMakeLists.txt
@@ -1,4 +1,6 @@
+ADD_SUBDIRECTORY(test)
+
SET(standard_reports_SOURCES gncmod-standard-reports.c)
ADD_LIBRARY (gncmod-standard-reports ${standard_reports_SOURCES})
diff --git a/src/report/standard-reports/test/CMakeLists.txt b/src/report/standard-reports/test/CMakeLists.txt
new file mode 100644
index 0000000..d754176
--- /dev/null
+++ b/src/report/standard-reports/test/CMakeLists.txt
@@ -0,0 +1,22 @@
+
+GNC_ADD_SCHEME_TEST(test-cash-flow test-cash-flow.scm)
+GNC_ADD_SCHEME_TEST(test-standard-category-report test-standard-category-report.scm)
+GNC_ADD_SCHEME_TEST(test-standard-net-barchart test-standard-net-barchart.scm)
+GNC_ADD_SCHEME_TEST(test-standard-net-linechart test-standard-net-linechart.scm)
+GNC_ADD_SCHEME_TEST(test-load-module-report-standard-reports test-load-module.in)
+
+SET(scm_test_standard_reports_SOURCES
+ test-generic-category-report.scm
+ test-generic-net-barchart.scm
+ test-generic-net-linechart.scm
+)
+
+GNC_ADD_SCHEME_TARGETS(scm-test-standard-reports
+ "${scm_test_standard_reports_SOURCES}"
+ gnucash/report/standard-reports/test
+ ""
+ ""
+ ""
+ "scm-gnc-module;scm-test-report-system"
+ FALSE
+)
\ No newline at end of file
diff --git a/src/report/stylesheets/CMakeLists.txt b/src/report/stylesheets/CMakeLists.txt
index 8cf782d..585309c 100644
--- a/src/report/stylesheets/CMakeLists.txt
+++ b/src/report/stylesheets/CMakeLists.txt
@@ -1,3 +1,4 @@
+ADD_SUBDIRECTORY(test)
SET(stylesheets_SOURCES
gnc-plugin-stylesheets.c
diff --git a/src/report/stylesheets/test/CMakeLists.txt b/src/report/stylesheets/test/CMakeLists.txt
new file mode 100644
index 0000000..89b5db4
--- /dev/null
+++ b/src/report/stylesheets/test/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+GNC_ADD_SCHEME_TEST(test-load-module-report-stylesheets
+ test-load-module.in
+)
\ No newline at end of file
diff --git a/src/report/utility-reports/CMakeLists.txt b/src/report/utility-reports/CMakeLists.txt
index c0110c4..b8857f2 100644
--- a/src/report/utility-reports/CMakeLists.txt
+++ b/src/report/utility-reports/CMakeLists.txt
@@ -1,4 +1,4 @@
-
+ADD_SUBDIRECTORY(test)
SET(utility_reports_SOURCES
gncmod-utility-reports.c
diff --git a/src/report/utility-reports/test/CMakeLists.txt b/src/report/utility-reports/test/CMakeLists.txt
new file mode 100644
index 0000000..540abb9
--- /dev/null
+++ b/src/report/utility-reports/test/CMakeLists.txt
@@ -0,0 +1,4 @@
+
+GNC_ADD_SCHEME_TEST(test-load-module-report-utility-reports
+ test-load-module.in
+)
\ No newline at end of file
diff --git a/src/tax/us/CMakeLists.txt b/src/tax/us/CMakeLists.txt
index 0424b78..fe4eec7 100644
--- a/src/tax/us/CMakeLists.txt
+++ b/src/tax/us/CMakeLists.txt
@@ -1,3 +1,5 @@
+ADD_SUBDIRECTORY(test)
+
SET(tax_us_SOURCES gncmod-tax-us.c)
# Add dependency on config.h
diff --git a/src/tax/us/test/CMakeLists.txt b/src/tax/us/test/CMakeLists.txt
new file mode 100644
index 0000000..60fe2c7
--- /dev/null
+++ b/src/tax/us/test/CMakeLists.txt
@@ -0,0 +1,9 @@
+SET(TAX_US_TEST_INCLUDE_DIRS "")
+SET(TAX_US_TEST_LIBS "")
+
+GNC_ADD_TEST(test-link-module-tax-us test-link-module.c
+ TAX_US_TEST_INCLUDE_DIRS TAX_US_TEST_LIBS
+)
+
+# This test not run in autotools build.
+#GNC_ADD_SCHEME_TEST(test-load-module-tax-us test-load-module.in)
diff --git a/src/test-core/CMakeLists.txt b/src/test-core/CMakeLists.txt
index 63177b6..cccaa3a 100644
--- a/src/test-core/CMakeLists.txt
+++ b/src/test-core/CMakeLists.txt
@@ -19,8 +19,11 @@ INCLUDE_DIRECTORIES(
${GUILE_INCLUDE_DIRS}
)
-ADD_LIBRARY(test-core ${test_core_SOURCES} ${test_core_noinst_HEADERS})
-TARGET_LINK_LIBRARIES(test-core gnc-qof ${GLIB2_LDFLAGS})
+ADD_LIBRARY(test-core STATIC ${test_core_SOURCES} ${test_core_noinst_HEADERS})
+TARGET_LINK_LIBRARIES(test-core gncmod-engine gnc-qof ${GLIB2_LDFLAGS})
+IF (UNIX)
+ TARGET_COMPILE_OPTIONS(test-core PRIVATE -fPIC)
+ENDIF()
SET (SWIG_UNITTEST_SUPPORT_GUILE_C ${CMAKE_CURRENT_BINARY_DIR}/swig-unittest-support-guile.c)
GNC_ADD_SWIG_COMMAND (${SWIG_UNITTEST_SUPPORT_GUILE_C}
@@ -41,7 +44,7 @@ SET(GUILE_LIBRARY_DIRS src/test-core src/libqof)
SET(GUILE_DEPENDS test-core-guile)
-GNC_ADD_SCHEME_TARGETS(scm_test_core
+GNC_ADD_SCHEME_TARGETS(scm-test-core
${test_core_SCHEME}
${GUILE_OUTPUT_DIR}
"${GUILE_MODULES}"
@@ -51,4 +54,4 @@ GNC_ADD_SCHEME_TARGETS(scm_test_core
FALSE
)
-INSTALL(FILES unittest-support.h DESTINATION libexec/gnucash/src/libqof/qof/test)
\ No newline at end of file
+INSTALL(FILES unittest-support.h DESTINATION libexec/gnucash/src/libqof/qof/test)
commit 9b82651d3afe3d9fc429d881fb53115893cbe98f
Author: RobGowin <robgowin at gmail.com>
Date: Sat Jan 23 23:09:49 2016 -0600
Don't skip test under clang when using Guile 2.x
diff --git a/src/app-utils/test/test-scm-query-string.c b/src/app-utils/test/test-scm-query-string.c
index b98014c..ef4ca17 100644
--- a/src/app-utils/test/test-scm-query-string.c
+++ b/src/app-utils/test/test-scm-query-string.c
@@ -140,7 +140,7 @@ main (int argc, char **argv)
/* When built with clang, guile-1.8.8's scm_c_eval_string truncates all
* integer values to int32, which causes this test to fail.
*/
-#ifndef __clang__
+#if !(defined(__clang__)) || defined(HAVE_GUILE20)
scm_boot_guile (argc, argv, main_helper, NULL);
#endif
return 0;
commit 2bf0fed4a3897eede998f2ae4b6760c4ec546c4f
Author: RobGowin <robgowin at gmail.com>
Date: Sat Jan 23 16:45:34 2016 -0600
Change test to use LIBDIR to find dynamic libraries
diff --git a/src/gnc-module/test/test-dynload.c b/src/gnc-module/test/test-dynload.c
index 3b83242..def77bf 100644
--- a/src/gnc-module/test/test-dynload.c
+++ b/src/gnc-module/test/test-dynload.c
@@ -40,10 +40,16 @@ guile_main(void *closure, int argc, char ** argv)
gchar *logdomain = "gnc.module";
gchar *modpath;
guint loglevel = G_LOG_LEVEL_WARNING;
+ const char *libdir = g_getenv("LIBDIR");
TestErrorStruct check = { loglevel, logdomain, msg };
g_log_set_handler (logdomain, loglevel,
(GLogFunc)test_checked_handler, &check);
+ if (libdir == NULL)
+ {
+ libdir = "../.libs";
+ }
+
g_test_message(" test-dynload.c: testing dynamic linking of libgnc-module ...");
#ifdef G_OS_WIN32
/* MinGW builds libgnc-module-0.dll */
@@ -53,9 +59,16 @@ guile_main(void *closure, int argc, char ** argv)
* that means that g_module_build_path (), which uses ".so", doesn't
* build the right path name.
*/
- modpath = g_build_filename ("..", ".libs", "libgnc-module.dylib", NULL);
+ if (libdir == NULL)
+ {
+ modpath = g_build_filename ("..", ".libs", "libgnc-module.dylib", NULL);
+ }
+ else
+ {
+ modpath = g_build_filename (libdir, "libgnc-module.dylib", NULL);
+ }
#else /* Regular Unix */
- modpath = g_module_build_path ("../.libs", "gnc-module");
+ modpath = g_module_build_path (libdir, "gnc-module");
#endif
gmodule = g_module_open(modpath, 0);
commit 7ab481a134a888ebc0a7d0f6188517168c08bbb8
Author: RobGowin <robgowin at gmail.com>
Date: Sat Jan 23 12:16:11 2016 -0600
Add TEST_PATH variable to test
This allows the tests to run from some place other
than the current working directory.
diff --git a/src/backend/xml/test/test-real-data.sh.in b/src/backend/xml/test/test-real-data.sh.in
index 0c273bf..49e757b 100755
--- a/src/backend/xml/test/test-real-data.sh.in
+++ b/src/backend/xml/test/test-real-data.sh.in
@@ -3,7 +3,9 @@
#set -e
EXIT_VALUE=0
-
+if [ "x$TEST_PATH" == "x" ] ; then
+ TEST_PATH=.
+fi
for i in $SRCDIR/test-files/xml2/*.gml2 ; do
if [ ! -d $i ] ; then
@@ -15,9 +17,9 @@ for i in $SRCDIR/test-files/xml2/*.gml2 ; do
FILES=`perl $SRCDIR/grab-types.pl "gnc:$j" $i "$j/dataXXX.xml"`
if [ ! -z "$FILES" ] ; then
if [ "x$VERBOSE" = "xyes" ] ; then
- echo "Testing ./test-xml-$j $j/data*.xml # from `basename $i`:"
+ echo "Testing $TEST_PATH/test-xml-$j $j/data*.xml # from `basename $i`:"
fi
- eval "./test-xml-$j $FILES 2>/dev/null"
+ eval "$TEST_PATH/test-xml-$j $FILES 2>/dev/null"
if [ $? != 0 ] ; then
EXIT_VALUE=1
fi
commit 9be5a8be464f8444fff4a668a3d737c501fe0686
Author: John Ralls <jralls at ceridwen.us>
Date: Sun Jan 24 16:22:46 2016 -0800
Fix Travis build error.
diff --git a/src/gnome/dialog-sx-since-last-run.c b/src/gnome/dialog-sx-since-last-run.c
index 15279b5..939605b 100644
--- a/src/gnome/dialog-sx-since-last-run.c
+++ b/src/gnome/dialog-sx-since-last-run.c
@@ -802,9 +802,9 @@ creation_error_dialog (GList **creation_errors)
{
gchar *new_msg = NULL;
if (message == NULL)
- new_msg = g_strdup_printf ("%s", node->data);
+ new_msg = g_strdup_printf ("%s", (gchar*)(node->data));
else
- new_msg = g_strdup_printf("%s\n%s", message, node->data);
+ new_msg = g_strdup_printf("%s\n%s", message, (gchar*)(node->data));
g_free (message);
message = new_msg;
g_free(node->data);
commit 9ea58f26f2cc95ebae14a2421b91a5d195eb6ddb
Author: John Ralls <jralls at ceridwen.us>
Date: Sun Jan 24 16:13:33 2016 -0800
Pretty up the SLR error dialog.
diff --git a/src/app-utils/gnc-sx-instance-model.c b/src/app-utils/gnc-sx-instance-model.c
index 3767297..930244e 100644
--- a/src/app-utils/gnc-sx-instance-model.c
+++ b/src/app-utils/gnc-sx-instance-model.c
@@ -1081,7 +1081,7 @@ split_apply_formulas (const Split *split, SxTxnCreationData* creation_data)
g_critical("%s", err->str);
if (creation_data->creation_errors != NULL)
*creation_data->creation_errors =
- g_list_prepend(*creation_data->creation_errors, err);
+ g_list_append(*creation_data->creation_errors, err);
else
g_string_free(err, TRUE);
final = gnc_numeric_zero();
diff --git a/src/gnome/dialog-sx-since-last-run.c b/src/gnome/dialog-sx-since-last-run.c
index fe85a45..15279b5 100644
--- a/src/gnome/dialog-sx-since-last-run.c
+++ b/src/gnome/dialog-sx-since-last-run.c
@@ -800,8 +800,11 @@ creation_error_dialog (GList **creation_errors)
if (*creation_errors == NULL) return;
for(; node != NULL; node = g_list_next (node))
{
- const gchar *fmt = message == NULL ? "%s%s" : "%s\n%s";
- gchar *new_msg = g_strdup_printf (fmt, message, node->data);
+ gchar *new_msg = NULL;
+ if (message == NULL)
+ new_msg = g_strdup_printf ("%s", node->data);
+ else
+ new_msg = g_strdup_printf("%s\n%s", message, node->data);
g_free (message);
message = new_msg;
g_free(node->data);
@@ -810,7 +813,7 @@ creation_error_dialog (GList **creation_errors)
creation_errors = NULL;
dialog = gtk_message_dialog_new (NULL, 0,
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- "%s", _("Invalid Transactions"));
+ "\t%s\t", _("Invalid Transactions"));
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
"%s", message);
g_signal_connect_swapped (dialog, "response",
commit 80317a2a5a296f3fbc7884fc60e7cf67ed3d3894
Author: John Ralls <jralls at ceridwen.us>
Date: Sun Jan 24 15:29:02 2016 -0800
Bug 754856 - scheduled transaction <gnc.app-utils.sx> fails without warning
Prevent incrementing the SX instance if the Transaction creation fails.
diff --git a/src/app-utils/gnc-sx-instance-model.c b/src/app-utils/gnc-sx-instance-model.c
index 4265c0e..3767297 100644
--- a/src/app-utils/gnc-sx-instance-model.c
+++ b/src/app-utils/gnc-sx-instance-model.c
@@ -1081,7 +1081,7 @@ split_apply_formulas (const Split *split, SxTxnCreationData* creation_data)
g_critical("%s", err->str);
if (creation_data->creation_errors != NULL)
*creation_data->creation_errors =
- g_list_append(*creation_data->creation_errors, err);
+ g_list_prepend(*creation_data->creation_errors, err);
else
g_string_free(err, TRUE);
final = gnc_numeric_zero();
@@ -1329,6 +1329,7 @@ gnc_sx_instance_model_effect_change(GncSxInstanceModel *model,
{
GncSxInstance *inst = (GncSxInstance*)instance_iter->data;
gboolean sx_is_auto_create;
+ GList *instance_errors = NULL;
xaccSchedXactionGetAutoCreate(inst->parent->sx, &sx_is_auto_create, NULL);
if (auto_create_only && !sx_is_auto_create)
@@ -1366,9 +1367,20 @@ gnc_sx_instance_model_effect_change(GncSxInstanceModel *model,
increment_sx_state(inst, &last_occur_date, &instance_count, &remain_occur_count);
break;
case SX_INSTANCE_STATE_TO_CREATE:
- create_transactions_for_instance(inst, created_transaction_guids, creation_errors);
- increment_sx_state(inst, &last_occur_date, &instance_count, &remain_occur_count);
- gnc_sx_instance_model_change_instance_state(model, inst, SX_INSTANCE_STATE_CREATED);
+ create_transactions_for_instance (inst,
+ created_transaction_guids,
+ &instance_errors);
+ if (instance_errors == NULL)
+ {
+ increment_sx_state (inst, &last_occur_date,
+ &instance_count,
+ &remain_occur_count);
+ gnc_sx_instance_model_change_instance_state
+ (model, inst, SX_INSTANCE_STATE_CREATED);
+ }
+ else
+ *creation_errors = g_list_concat (*creation_errors,
+ instance_errors);
break;
case SX_INSTANCE_STATE_REMINDER:
// do nothing
commit 2e8407ed125566fe85781d97cd01c95c491522a3
Author: John Ralls <jralls at ceridwen.us>
Date: Sun Jan 24 14:41:55 2016 -0800
Bug 754856 - scheduled transaction <gnc.app-utils.sx> fails without warning.
Add warnings, both when saving the SX and when running an instance from the
Since Last Run dialog.
diff --git a/src/app-utils/gnc-sx-instance-model.c b/src/app-utils/gnc-sx-instance-model.c
index cf7472e..4265c0e 100644
--- a/src/app-utils/gnc-sx-instance-model.c
+++ b/src/app-utils/gnc-sx-instance-model.c
@@ -941,14 +941,14 @@ _get_template_split_account(const SchedXaction* sx, const Split *template_split,
NULL);
if (kvp_val == NULL)
{
- GString *err = g_string_new("");
- g_string_printf(err, "Null account kvp value for SX [%s], cancelling creation.",
- xaccSchedXactionGetName(sx));
- g_critical("%s", err->str);
+ gchar *err = g_strdup_printf("Null account kvp value for SX [%s], "
+ "cancelling creation.",
+ xaccSchedXactionGetName(sx));
+ g_critical("%s", err);
if (creation_errors != NULL)
*creation_errors = g_list_append(*creation_errors, err);
else
- g_string_free(err, TRUE);
+ g_free(err);
return FALSE;
}
acct_guid = kvp_value_get_guid( kvp_val );
@@ -1247,7 +1247,7 @@ create_each_transaction_helper(Transaction *template_txn, void *user_data)
if (err_flag)
{
- g_critical("new transaction creation sx [%s]",
+ g_critical("Error in SX transaction [%s], creation aborted.",
xaccSchedXactionGetName(sx));
xaccTransDestroy(new_txn);
xaccTransCommitEdit(new_txn);
diff --git a/src/gnome/dialog-sx-editor.c b/src/gnome/dialog-sx-editor.c
index 9e0a2d8..b5cf59a 100644
--- a/src/gnome/dialog-sx-editor.c
+++ b/src/gnome/dialog-sx-editor.c
@@ -643,6 +643,8 @@ gnc_sxed_split_check_account (GncSxEditorDialog *sxed, Split *s,
KvpValue *v = kvp_frame_get_slot_path(f, GNC_SX_ID, GNC_SX_ACCOUNT, NULL);
GncGUID *acct_guid = kvp_value_get_guid (v);
acct = xaccAccountLookup( acct_guid, gnc_get_current_book ());
+ if (acct == NULL)
+ return FALSE;
split_cmdty = xaccAccountGetCommodity(acct);
split_amount = xaccSplitGetAmount(s);
if (!gnc_numeric_zero_p(split_amount) && base_cmdty == NULL)
@@ -685,6 +687,100 @@ gnc_sxed_split_calculate_formula (GncSxEditorDialog *sxed, Split *s,
return TRUE;
}
+typedef struct
+{
+ GncSxEditorDialog *sxed;
+ GHashTable *txns;
+ GHashTable *vars;
+ txnCreditDebitSums *tcds;
+ gboolean multi_commodity;
+ gboolean err;
+} CheckTxnSplitData;
+
+static void
+split_error_warning_dialog (GtkWidget *parent, const gchar *title,
+ gchar *message)
+{
+ GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (parent), 0,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "%s", title);
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+ "%s", message);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
+ g_signal_connect_swapped (dialog, "response",
+ G_CALLBACK(gtk_widget_destroy), dialog);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+
+}
+static gboolean
+check_transaction_splits (Transaction *txn, gpointer data)
+{
+ GList *splitList = xaccTransGetSplitList (txn);
+ CheckTxnSplitData *sd = (CheckTxnSplitData*)data;
+
+ for ( ; splitList; splitList = splitList->next )
+ {
+ gnc_commodity *base_cmdty = NULL;
+ txnCreditDebitSums *tcds;
+ Split *s = (Split*)splitList->data;
+
+ tcds = (txnCreditDebitSums*)g_hash_table_lookup (sd->txns,
+ (gpointer)txn);
+ if (sd->tcds == NULL)
+ {
+ sd->tcds = tcds_new ();
+ g_hash_table_insert (sd->txns, (gpointer)txn, (gpointer)(sd->tcds));
+ }
+
+ if (!gnc_sxed_split_check_account (sd->sxed, s, base_cmdty,
+ &sd->multi_commodity))
+ {
+ gchar *message = g_strdup_printf
+ (_("Split with memo %s has an invalid account."),
+ xaccSplitGetMemo (s));
+ split_error_warning_dialog (sd->sxed->dialog,
+ _("Invalid Account in Split"),
+ message);
+ g_free (message);
+ sd->err = TRUE;
+ return FALSE;
+ }
+
+ if (!gnc_sxed_split_calculate_formula (sd->sxed, s, sd->vars,
+ GNC_SX_CREDIT_FORMULA,
+ sd->tcds))
+ {
+ gchar *message = g_strdup_printf
+ (_("Split with memo %s has an unparseable Credit Formula."),
+ xaccSplitGetMemo (s));
+ split_error_warning_dialog (sd->sxed->dialog,
+ _("Unparsable Formula in Split"),
+ message);
+ g_free (message);
+ sd->err = TRUE;
+ return FALSE;
+ }
+
+ if (!gnc_sxed_split_calculate_formula (sd->sxed, s, sd->vars,
+ GNC_SX_DEBIT_FORMULA,
+ sd->tcds))
+
+ {
+ gchar *message = g_strdup_printf
+ (_("Split with memo %s has an unparseable Debit Formula."),
+ xaccSplitGetMemo (s));
+ split_error_warning_dialog (sd->sxed->dialog,
+ _("Unparsable Formula in Split"),
+ message);
+ g_free (message);
+ sd->err = TRUE;
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
/*******************************************************************************
* Checks to make sure that the SX is in a reasonable state to save.
* @return true if checks out okay, false otherwise.
@@ -724,6 +820,8 @@ gnc_sxed_check_consistent( GncSxEditorDialog *sxed )
(GDestroyNotify)gnc_sx_variable_free);
GHashTable *txns = g_hash_table_new_full (g_direct_hash, g_direct_equal,
NULL, g_free);
+ CheckTxnSplitData sd = {sxed, txns, vars, NULL, FALSE, FALSE};
+
/**
* Plan:
* . Do a first pass to get the variables.
@@ -751,38 +849,16 @@ gnc_sxed_check_consistent( GncSxEditorDialog *sxed )
for ( i = 0; i < numIters && !unbalanceable; i++ )
{
GList *splitList = xaccSchedXactionGetSplits (sxed->sx);
+ Account *tmpl_acct = gnc_sx_get_template_transaction_account (sxed->sx);
gnc_sx_randomize_variables(vars);
g_hash_table_foreach( txns, set_sums_to_zero, NULL );
splitCount += g_list_length( splitList );
- for ( ; splitList; splitList = splitList->next )
- {
- gnc_commodity *base_cmdty = NULL;
- txnCreditDebitSums *tcds;
- Split *s = (Split*)splitList->data;
- Transaction *t = xaccSplitGetParent (s);
-
- tcds = (txnCreditDebitSums*)g_hash_table_lookup (txns, (gpointer)t);
- if (tcds == NULL)
- {
- tcds = tcds_new ();
- g_hash_table_insert (txns, (gpointer)t, (gpointer)tcds);
- }
-
- if (!gnc_sxed_split_check_account (sxed, s, base_cmdty,
- &multi_commodity))
- return FALSE;
-
- if (!gnc_sxed_split_calculate_formula (sxed, s, vars,
- GNC_SX_CREDIT_FORMULA,
- tcds))
- return FALSE;
- if (!gnc_sxed_split_calculate_formula (sxed, s, vars,
- GNC_SX_DEBIT_FORMULA,
- tcds))
- return FALSE;
- }
+ xaccAccountForEachTransaction(tmpl_acct, check_transaction_splits, &sd);
+
+ if (sd.err)
+ return FALSE;
g_hash_table_foreach (txns, check_credit_debit_balance, &unbalanceable);
}
@@ -807,7 +883,7 @@ gnc_sxed_check_consistent( GncSxEditorDialog *sxed )
return FALSE;
if (!gnc_sxed_check_autocreate (sxed, ttVarCount,
- splitCount, multi_commodity))
+ splitCount, sd.multi_commodity))
return FALSE;
if (!gnc_sxed_check_endpoint (sxed))
@@ -819,7 +895,7 @@ gnc_sxed_check_consistent( GncSxEditorDialog *sxed )
/******************************************************************************
* Saves the contents of the SX. This assumes that gnc_sxed_check_consistent
* has returned true.
- *****************************************************************************/
+ *****************************************************************************/
static void
gnc_sxed_save_sx( GncSxEditorDialog *sxed )
{
diff --git a/src/gnome/dialog-sx-since-last-run.c b/src/gnome/dialog-sx-since-last-run.c
index 3964e68..fe85a45 100644
--- a/src/gnome/dialog-sx-since-last-run.c
+++ b/src/gnome/dialog-sx-since-last-run.c
@@ -791,10 +791,39 @@ gnc_sx_slr_tree_model_adapter_new(GncSxInstanceModel *instances)
return rtn;
}
+static void
+creation_error_dialog (GList **creation_errors)
+{
+ GList *node = *creation_errors;
+ GtkWidget *dialog = NULL;
+ gchar *message = NULL;
+ if (*creation_errors == NULL) return;
+ for(; node != NULL; node = g_list_next (node))
+ {
+ const gchar *fmt = message == NULL ? "%s%s" : "%s\n%s";
+ gchar *new_msg = g_strdup_printf (fmt, message, node->data);
+ g_free (message);
+ message = new_msg;
+ g_free(node->data);
+ }
+ g_list_free (*creation_errors);
+ creation_errors = NULL;
+ dialog = gtk_message_dialog_new (NULL, 0,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ "%s", _("Invalid Transactions"));
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+ "%s", message);
+ g_signal_connect_swapped (dialog, "response",
+ G_CALLBACK(gtk_widget_destroy), dialog);
+ gtk_dialog_run (GTK_DIALOG (dialog));
+ g_free (message);
+}
+
void
gnc_sx_sxsincelast_book_opened(void)
{
GList *auto_created_txns = NULL;
+ GList *creation_errors = NULL;
GncSxInstanceModel *inst_model;
GncSxSummary summary;
@@ -810,7 +839,8 @@ gnc_sx_sxsincelast_book_opened(void)
inst_model = gnc_sx_get_current_instances();
gnc_sx_instance_model_summarize(inst_model, &summary);
gnc_sx_summary_print(&summary);
- gnc_sx_instance_model_effect_change(inst_model, TRUE, &auto_created_txns, NULL);
+ gnc_sx_instance_model_effect_change(inst_model, TRUE, &auto_created_txns,
+ &creation_errors);
if (summary.need_dialog)
{
@@ -837,6 +867,8 @@ gnc_sx_sxsincelast_book_opened(void)
}
g_list_free(auto_created_txns);
g_object_unref(G_OBJECT(inst_model));
+ if (creation_errors)
+ creation_error_dialog(&creation_errors);
}
static void
@@ -1075,6 +1107,7 @@ dialog_destroy_cb(GtkWidget *object, GncSxSinceLastRunDialog *app_dialog)
static void
dialog_response_cb(GtkDialog *dialog, gint response_id, GncSxSinceLastRunDialog *app_dialog)
{
+ GList* creation_errors = NULL;
switch (response_id)
{
case GTK_RESPONSE_OK:
@@ -1108,8 +1141,11 @@ dialog_response_cb(GtkDialog *dialog, gint response_id, GncSxSinceLastRunDialog
}
}
gnc_suspend_gui_refresh();
- gnc_sx_slr_model_effect_change(app_dialog->editing_model, FALSE, &app_dialog->created_txns, NULL);
+ gnc_sx_slr_model_effect_change(app_dialog->editing_model, FALSE, &app_dialog->created_txns, &creation_errors);
gnc_resume_gui_refresh();
+ if (creation_errors)
+ creation_error_dialog(&creation_errors);
+
if (gtk_toggle_button_get_active(app_dialog->review_created_txns_toggle)
&& g_list_length(app_dialog->created_txns) > 0)
{
commit 1ecb1235973487fda0d2758c6c079a03973f8a9d
Author: John Ralls <jralls at ceridwen.us>
Date: Sat Jan 23 10:46:51 2016 -0800
Revert "Use python 3.3 VirtualEnv on travis."
This reverts commit aa2c1303fd642cf5f8de74e2c48e9a68279a7a20.
Wrong repo.
diff --git a/src/app-utils/gnc-sx-instance-model.c b/src/app-utils/gnc-sx-instance-model.c
index ad4a765..cf7472e 100644
--- a/src/app-utils/gnc-sx-instance-model.c
+++ b/src/app-utils/gnc-sx-instance-model.c
@@ -941,14 +941,14 @@ _get_template_split_account(const SchedXaction* sx, const Split *template_split,
NULL);
if (kvp_val == NULL)
{
- GString *err = g_strdup_printf("Null account kvp value for SX [%s], "
- "cancelling creation.",
- xaccSchedXactionGetName(sx));
- g_critical("%s", err);
+ GString *err = g_string_new("");
+ g_string_printf(err, "Null account kvp value for SX [%s], cancelling creation.",
+ xaccSchedXactionGetName(sx));
+ g_critical("%s", err->str);
if (creation_errors != NULL)
*creation_errors = g_list_append(*creation_errors, err);
else
- g_free(err, TRUE);
+ g_string_free(err, TRUE);
return FALSE;
}
acct_guid = kvp_value_get_guid( kvp_val );
@@ -1247,7 +1247,7 @@ create_each_transaction_helper(Transaction *template_txn, void *user_data)
if (err_flag)
{
- g_critical("Error in SX transaction [%s], creation aborted.",
+ g_critical("new transaction creation sx [%s]",
xaccSchedXactionGetName(sx));
xaccTransDestroy(new_txn);
xaccTransCommitEdit(new_txn);
diff --git a/src/gnome/dialog-sx-since-last-run.c b/src/gnome/dialog-sx-since-last-run.c
index 9fa3f49..3964e68 100644
--- a/src/gnome/dialog-sx-since-last-run.c
+++ b/src/gnome/dialog-sx-since-last-run.c
@@ -791,36 +791,10 @@ gnc_sx_slr_tree_model_adapter_new(GncSxInstanceModel *instances)
return rtn;
}
-static void
-creation_error_dialog (GtkWindow *parent, GList **creation_errors)
-{
- GList *node = *creation_errors;
- GtkMessageDialog *dialog = NULL;
- gchar *message = NULL;
- if (*creation_errors == NULL) return;
- for(; node != NULL; node = g_list_next (node))
- {
- const gchar *fmt = message == NULL ? "%s%s" : "%s\n%s";
- gchar *new_msg = g_strdup_printf (fmt, message, node->data);
- g_free (message);
- message = new_msg;
- g_free(node->data);
- }
- g_list_free (*creation_errors);
- creation_errors = NULL;
- dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- "%s", message);
- gtk_dialog_run (dialog);
- gtk_widget_unref (dialog);
- g_free (message);
-}
-
void
gnc_sx_sxsincelast_book_opened(void)
{
GList *auto_created_txns = NULL;
- GList *creation_errors = NULL;
GncSxInstanceModel *inst_model;
GncSxSummary summary;
@@ -836,8 +810,7 @@ gnc_sx_sxsincelast_book_opened(void)
inst_model = gnc_sx_get_current_instances();
gnc_sx_instance_model_summarize(inst_model, &summary);
gnc_sx_summary_print(&summary);
- gnc_sx_instance_model_effect_change(inst_model, TRUE, &auto_created_txns,
- &creation_errors);
+ gnc_sx_instance_model_effect_change(inst_model, TRUE, &auto_created_txns, NULL);
if (summary.need_dialog)
{
@@ -864,8 +837,6 @@ gnc_sx_sxsincelast_book_opened(void)
}
g_list_free(auto_created_txns);
g_object_unref(G_OBJECT(inst_model));
- if (creation_errors)
- creation_error_dialog(&creation_errors);
}
static void
@@ -1104,7 +1075,6 @@ dialog_destroy_cb(GtkWidget *object, GncSxSinceLastRunDialog *app_dialog)
static void
dialog_response_cb(GtkDialog *dialog, gint response_id, GncSxSinceLastRunDialog *app_dialog)
{
- GList* creation_errors = NULL;
switch (response_id)
{
case GTK_RESPONSE_OK:
@@ -1138,11 +1108,8 @@ dialog_response_cb(GtkDialog *dialog, gint response_id, GncSxSinceLastRunDialog
}
}
gnc_suspend_gui_refresh();
- gnc_sx_slr_model_effect_change(app_dialog->editing_model, FALSE, &app_dialog->created_txns, &creation_errors);
+ gnc_sx_slr_model_effect_change(app_dialog->editing_model, FALSE, &app_dialog->created_txns, NULL);
gnc_resume_gui_refresh();
- if (creation_errors)
- creation_error_dialog(&creation_errors);
-
if (gtk_toggle_button_get_active(app_dialog->review_created_txns_toggle)
&& g_list_length(app_dialog->created_txns) > 0)
{
commit aa2c1303fd642cf5f8de74e2c48e9a68279a7a20
Author: John Ralls <jralls at ceridwen.us>
Date: Sat Jan 23 10:45:36 2016 -0800
Use python 3.3 VirtualEnv on travis.
Should fix get-pip.py installation failure.
diff --git a/src/app-utils/gnc-sx-instance-model.c b/src/app-utils/gnc-sx-instance-model.c
index cf7472e..ad4a765 100644
--- a/src/app-utils/gnc-sx-instance-model.c
+++ b/src/app-utils/gnc-sx-instance-model.c
@@ -941,14 +941,14 @@ _get_template_split_account(const SchedXaction* sx, const Split *template_split,
NULL);
if (kvp_val == NULL)
{
- GString *err = g_string_new("");
- g_string_printf(err, "Null account kvp value for SX [%s], cancelling creation.",
- xaccSchedXactionGetName(sx));
- g_critical("%s", err->str);
+ GString *err = g_strdup_printf("Null account kvp value for SX [%s], "
+ "cancelling creation.",
+ xaccSchedXactionGetName(sx));
+ g_critical("%s", err);
if (creation_errors != NULL)
*creation_errors = g_list_append(*creation_errors, err);
else
- g_string_free(err, TRUE);
+ g_free(err, TRUE);
return FALSE;
}
acct_guid = kvp_value_get_guid( kvp_val );
@@ -1247,7 +1247,7 @@ create_each_transaction_helper(Transaction *template_txn, void *user_data)
if (err_flag)
{
- g_critical("new transaction creation sx [%s]",
+ g_critical("Error in SX transaction [%s], creation aborted.",
xaccSchedXactionGetName(sx));
xaccTransDestroy(new_txn);
xaccTransCommitEdit(new_txn);
diff --git a/src/gnome/dialog-sx-since-last-run.c b/src/gnome/dialog-sx-since-last-run.c
index 3964e68..9fa3f49 100644
--- a/src/gnome/dialog-sx-since-last-run.c
+++ b/src/gnome/dialog-sx-since-last-run.c
@@ -791,10 +791,36 @@ gnc_sx_slr_tree_model_adapter_new(GncSxInstanceModel *instances)
return rtn;
}
+static void
+creation_error_dialog (GtkWindow *parent, GList **creation_errors)
+{
+ GList *node = *creation_errors;
+ GtkMessageDialog *dialog = NULL;
+ gchar *message = NULL;
+ if (*creation_errors == NULL) return;
+ for(; node != NULL; node = g_list_next (node))
+ {
+ const gchar *fmt = message == NULL ? "%s%s" : "%s\n%s";
+ gchar *new_msg = g_strdup_printf (fmt, message, node->data);
+ g_free (message);
+ message = new_msg;
+ g_free(node->data);
+ }
+ g_list_free (*creation_errors);
+ creation_errors = NULL;
+ dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+ "%s", message);
+ gtk_dialog_run (dialog);
+ gtk_widget_unref (dialog);
+ g_free (message);
+}
+
void
gnc_sx_sxsincelast_book_opened(void)
{
GList *auto_created_txns = NULL;
+ GList *creation_errors = NULL;
GncSxInstanceModel *inst_model;
GncSxSummary summary;
@@ -810,7 +836,8 @@ gnc_sx_sxsincelast_book_opened(void)
inst_model = gnc_sx_get_current_instances();
gnc_sx_instance_model_summarize(inst_model, &summary);
gnc_sx_summary_print(&summary);
- gnc_sx_instance_model_effect_change(inst_model, TRUE, &auto_created_txns, NULL);
+ gnc_sx_instance_model_effect_change(inst_model, TRUE, &auto_created_txns,
+ &creation_errors);
if (summary.need_dialog)
{
@@ -837,6 +864,8 @@ gnc_sx_sxsincelast_book_opened(void)
}
g_list_free(auto_created_txns);
g_object_unref(G_OBJECT(inst_model));
+ if (creation_errors)
+ creation_error_dialog(&creation_errors);
}
static void
@@ -1075,6 +1104,7 @@ dialog_destroy_cb(GtkWidget *object, GncSxSinceLastRunDialog *app_dialog)
static void
dialog_response_cb(GtkDialog *dialog, gint response_id, GncSxSinceLastRunDialog *app_dialog)
{
+ GList* creation_errors = NULL;
switch (response_id)
{
case GTK_RESPONSE_OK:
@@ -1108,8 +1138,11 @@ dialog_response_cb(GtkDialog *dialog, gint response_id, GncSxSinceLastRunDialog
}
}
gnc_suspend_gui_refresh();
- gnc_sx_slr_model_effect_change(app_dialog->editing_model, FALSE, &app_dialog->created_txns, NULL);
+ gnc_sx_slr_model_effect_change(app_dialog->editing_model, FALSE, &app_dialog->created_txns, &creation_errors);
gnc_resume_gui_refresh();
+ if (creation_errors)
+ creation_error_dialog(&creation_errors);
+
if (gtk_toggle_button_get_active(app_dialog->review_created_txns_toggle)
&& g_list_length(app_dialog->created_txns) > 0)
{
commit ed8e79c6719e99a0cfb7a8fa9c6c7faceaaf68c1
Author: RobGowin <robgowin at gmail.com>
Date: Wed Jan 20 10:46:01 2016 -0600
[cmake] Reflect commit db0fd2 (Replace the TP pt.po ...) in CMake build.
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
index 7244925..69aa20b 100644
--- a/po/CMakeLists.txt
+++ b/po/CMakeLists.txt
@@ -1,9 +1,9 @@
# Set of available languages.
-SET (TP_LINGUAS az ca cs da eu fa ja nl pt rw sk sr sv tr uk zh_CN)
+SET (TP_LINGUAS az ca cs da eu fa ja nl rw sk sr sv tr uk zh_CN)
# already marked as external at TP:
-SET (GC_LINGUAS ar bg de el en_GB es fi fr gu he hi hu it kn ko lt lv mr nb ne pl pt_BR pt_PT ro ru ta te ur vi zh_TW)
+SET (GC_LINGUAS ar bg de el en_GB es fi fr gu he hi hu it kn ko lt lv mr nb ne pl pt pt_BR ro ru ta te ur vi zh_TW)
# not marked or no TP team:
SET (NEW_LINGUAS as brx doi es_NI kok kok at latin ks mai mni mni at bengali)
@@ -46,4 +46,4 @@ ENDIF()
FOREACH(lingua ${ALL_LINGUAS})
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${lingua}.gmo RENAME gnucash.mo DESTINATION share/locale/${lingua}/LC_MESSAGES)
-ENDFOREACH(lingua)
\ No newline at end of file
+ENDFOREACH(lingua)
Summary of changes:
CMakeLists.txt | 42 +++++--
cmake/README_CMAKE.txt | 27 ++++-
po/CMakeLists.txt | 4 +-
src/CMakeLists.txt | 1 +
src/app-utils/CMakeLists.txt | 4 +-
src/app-utils/gnc-sx-instance-model.c | 20 +++-
src/app-utils/test/CMakeLists.txt | 28 +++++
src/app-utils/test/test-scm-query-string.cpp | 2 +-
src/backend/dbi/CMakeLists.txt | 2 +
src/backend/dbi/test/CMakeLists.txt | 31 +++++
src/backend/sql/CMakeLists.txt | 2 +-
src/backend/sql/test/CMakeLists.txt | 23 ++++
src/backend/xml/CMakeLists.txt | 2 +
src/backend/xml/test/CMakeLists.txt | 99 ++++++++++++++++
src/backend/xml/test/test-real-data.sh.in | 8 +-
src/bin/CMakeLists.txt | 2 +-
src/bin/test/CMakeLists.txt | 3 +
src/cmake_modules/GncAddTest.cmake | 64 +++++++++++
src/config.h.cmake.in | 1 +
src/core-utils/CMakeLists.txt | 2 +-
src/core-utils/test/CMakeLists.txt | 18 +++
src/engine/CMakeLists.txt | 3 +
src/engine/test-core/CMakeLists.txt | 17 +++
src/engine/test/CMakeLists.txt | 91 +++++++++++++++
src/gnc-module/CMakeLists.txt | 1 +
src/gnc-module/test/CMakeLists.txt | 103 +++++++++++++++++
src/gnc-module/test/misc-mods/CMakeLists.txt | 14 +++
src/gnc-module/test/mod-bar/CMakeLists.txt | 18 +++
src/gnc-module/test/mod-baz/CMakeLists.txt | 24 ++++
src/gnc-module/test/mod-foo/CMakeLists.txt | 18 +++
src/gnc-module/test/test-dynload.c | 17 ++-
src/gnome-utils/CMakeLists.txt | 3 +-
src/gnome-utils/test/CMakeLists.txt | 32 ++++++
src/gnome/dialog-sx-editor.c | 134 +++++++++++++++++-----
src/gnome/dialog-sx-since-last-run.c | 43 ++++++-
src/import-export/CMakeLists.txt | 2 +
src/import-export/csv-imp/CMakeLists.txt | 1 +
src/import-export/csv-imp/test/CMakeLists.txt | 22 ++++
src/import-export/ofx/CMakeLists.txt | 3 +-
src/import-export/ofx/test/CMakeLists.txt | 8 ++
src/import-export/qif-imp/CMakeLists.txt | 3 +-
src/import-export/qif-imp/test/CMakeLists.txt | 6 +
src/import-export/qif/CMakeLists.txt | 3 +
src/import-export/qif/test/CMakeLists.txt | 13 +++
src/import-export/test/CMakeLists.txt | 19 +++
src/libqof/CMakeLists.txt | 2 +
src/libqof/qof/test/CMakeLists.txt | 26 +++++
src/register/ledger-core/CMakeLists.txt | 3 +-
src/register/ledger-core/test/CMakeLists.txt | 7 ++
src/register/register-core/CMakeLists.txt | 4 +-
src/register/register-core/test/CMakeLists.txt | 7 ++
src/register/register-gnome/CMakeLists.txt | 3 +-
src/register/register-gnome/test/CMakeLists.txt | 7 ++
src/report/locale-specific/us/CMakeLists.txt | 4 +-
src/report/locale-specific/us/test/CMakeLists.txt | 11 ++
src/report/report-gnome/CMakeLists.txt | 4 +-
src/report/report-gnome/test/CMakeLists.txt | 14 +++
src/report/report-system/CMakeLists.txt | 1 +
src/report/report-system/test/CMakeLists.txt | 26 +++++
src/report/standard-reports/CMakeLists.txt | 4 +-
src/report/standard-reports/test/CMakeLists.txt | 22 ++++
src/report/stylesheets/CMakeLists.txt | 1 +
src/report/stylesheets/test/CMakeLists.txt | 4 +
src/report/utility-reports/CMakeLists.txt | 2 +-
src/report/utility-reports/test/CMakeLists.txt | 4 +
src/tax/us/CMakeLists.txt | 2 +
src/tax/us/test/CMakeLists.txt | 9 ++
src/test-core/CMakeLists.txt | 12 +-
68 files changed, 1082 insertions(+), 80 deletions(-)
create mode 100644 src/app-utils/test/CMakeLists.txt
create mode 100644 src/backend/dbi/test/CMakeLists.txt
create mode 100644 src/backend/sql/test/CMakeLists.txt
create mode 100644 src/backend/xml/test/CMakeLists.txt
create mode 100644 src/bin/test/CMakeLists.txt
create mode 100644 src/cmake_modules/GncAddTest.cmake
create mode 100644 src/core-utils/test/CMakeLists.txt
create mode 100644 src/engine/test-core/CMakeLists.txt
create mode 100644 src/engine/test/CMakeLists.txt
create mode 100644 src/gnc-module/test/CMakeLists.txt
create mode 100644 src/gnc-module/test/misc-mods/CMakeLists.txt
create mode 100644 src/gnc-module/test/mod-bar/CMakeLists.txt
create mode 100644 src/gnc-module/test/mod-baz/CMakeLists.txt
create mode 100644 src/gnc-module/test/mod-foo/CMakeLists.txt
create mode 100644 src/gnome-utils/test/CMakeLists.txt
create mode 100644 src/import-export/csv-imp/test/CMakeLists.txt
create mode 100644 src/import-export/ofx/test/CMakeLists.txt
create mode 100644 src/import-export/qif-imp/test/CMakeLists.txt
create mode 100644 src/import-export/qif/test/CMakeLists.txt
create mode 100644 src/import-export/test/CMakeLists.txt
create mode 100644 src/libqof/qof/test/CMakeLists.txt
create mode 100644 src/register/ledger-core/test/CMakeLists.txt
create mode 100644 src/register/register-core/test/CMakeLists.txt
create mode 100644 src/register/register-gnome/test/CMakeLists.txt
create mode 100644 src/report/locale-specific/us/test/CMakeLists.txt
create mode 100644 src/report/report-gnome/test/CMakeLists.txt
create mode 100644 src/report/report-system/test/CMakeLists.txt
create mode 100644 src/report/standard-reports/test/CMakeLists.txt
create mode 100644 src/report/stylesheets/test/CMakeLists.txt
create mode 100644 src/report/utility-reports/test/CMakeLists.txt
create mode 100644 src/tax/us/test/CMakeLists.txt
More information about the gnucash-changes
mailing list