diff --git a/src/backend/file/test/test-xml-commodity.c b/src/backend/file/test/test-xml-commodity.c index a91ad62532..43d9678f9f 100644 --- a/src/backend/file/test/test-xml-commodity.c +++ b/src/backend/file/test/test-xml-commodity.c @@ -217,6 +217,7 @@ test_real_commodity(const char *tag, gpointer globaldata, gpointer data) int main(int argc, char **argv) { + gnc_engine_init (argc, argv); if(argc > 1) { test_files_in_dir(argc, argv, test_real_commodity, diff --git a/src/backend/postgres/test/.cvsignore b/src/backend/postgres/test/.cvsignore index 282522db03..f53fc6178b 100644 --- a/src/backend/postgres/test/.cvsignore +++ b/src/backend/postgres/test/.cvsignore @@ -1,2 +1,3 @@ Makefile Makefile.in +gnc_test diff --git a/src/backend/postgres/test/Makefile.am b/src/backend/postgres/test/Makefile.am index 304a884e65..1afd9d2470 100644 --- a/src/backend/postgres/test/Makefile.am +++ b/src/backend/postgres/test/Makefile.am @@ -1,7 +1,32 @@ -TESTS=test-load-module +TESTS = \ + test-load-module \ + test-db TESTS_ENVIRONMENT=\ GNC_MODULE_PATH=${top_srcdir}/src/engine:${top_srcdir}/src/backend/postgres \ GUILE_LOAD_PATH=${G_WRAP_MODULE_DIR}:..:${top_srcdir}/src/gnc-module \ LTDL_LIBRARY_PATH=${top_srcdir}/src/gnc-module \ LD_LIBRARY_PATH=${top_srcdir}/src/gnc-module:${top_srcdir}/src/gnc-module/.libs:${top_srcdir}/src/engine:${top_srcdir}/src/engine/.libs + +noinst_PROGRAMS = \ + test-db + +LDADD = -L${top_srcdir}/src/gnc-module -L${top_srcdir}/src/gnc-module/.libs \ + -L${top_srcdir}/src/engine -L${top_srcdir}/src/engine/.libs \ + ${top_srcdir}/src/test-core/libgncmod-test.la \ + ${top_srcdir}/src/gnc-module/libgncmodule.la \ + ${top_srcdir}/src/engine/libgncmod-engine.la \ + ${top_srcdir}/src/engine/test-core/libgncmod-test-engine.la \ + -lltdl + +CFLAGS = ${GLIB_CFLAGS} + +INCLUDES = \ + -I${top_srcdir}/src/gnc-module \ + -I${top_srcdir}/src/test-core \ + -I${top_srcdir}/src/engine \ + -I${top_srcdir}/src/engine/test-core \ + -I.. + +EXTRA_DIST = \ + db-control.sh diff --git a/src/backend/postgres/test/db-control.sh b/src/backend/postgres/test/db-control.sh new file mode 100755 index 0000000000..362c7969b9 --- /dev/null +++ b/src/backend/postgres/test/db-control.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +EXIT_VALUE=0 + +DB=$PWD/gnc_test + +case $1 in + create) + rm -rf $DB + initdb $DB || EXIT_VALUE=1 + ;; + destroy) + rm -rf $DB + ;; + start) + pg_ctl -D $DB -o "-p 7777" start + ;; + stop) + pg_ctl -D $DB -o "-p 7777" stop + ;; + *) + echo "Bad command: $1" + ;; +esac + +exit $EXIT_VALUE diff --git a/src/backend/postgres/test/test-db.c b/src/backend/postgres/test/test-db.c new file mode 100644 index 0000000000..f71337e8f2 --- /dev/null +++ b/src/backend/postgres/test/test-db.c @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Backend.h" +#include "TransLog.h" +#include "gnc-book.h" +#include "gnc-engine.h" +#include "gnc-module.h" + +#include "test-stuff.h" +#include "test-engine-stuff.h" + +static void +guile_main (int argc, char **argv) +{ + gnc_module_system_init (); + gnc_module_load ("gnucash/engine", 0); + + gnc_engine_init (argc, argv); + + xaccLogDisable (); + + print_test_results (); + exit (get_rv ()); +} + +int +main (int argc, char ** argv) +{ + gh_enter (argc, argv, guile_main); + return 0; +} diff --git a/src/engine/test-core/test-engine-stuff.c b/src/engine/test-core/test-engine-stuff.c index 7689abd963..0abd5ed1cd 100644 --- a/src/engine/test-core/test-engine-stuff.c +++ b/src/engine/test-core/test-engine-stuff.c @@ -16,8 +16,16 @@ #include "test-engine-stuff.h" #include "test-stuff.h" +static gboolean add_comms_to_engine = TRUE; + /***********************************************************************/ +void +add_random_commodities_to_engine (gboolean add) +{ + add_comms_to_engine = add; +} + Timespec* get_random_timespec(void) { @@ -110,14 +118,11 @@ get_random_price(void) return p; } -GNCPriceDB * -get_random_pricedb(void) +void +make_random_pricedb (GNCPriceDB *db) { - GNCPriceDB *db; int num_prices; - db = gnc_pricedb_create (); - num_prices = get_random_int_in_range (0, 40); while (num_prices-- > 0) @@ -130,6 +135,15 @@ get_random_pricedb(void) gnc_price_unref (p); } +} + +GNCPriceDB * +get_random_pricedb(void) +{ + GNCPriceDB *db; + + db = gnc_pricedb_create (); + make_random_pricedb (db); return db; } @@ -506,18 +520,33 @@ get_random_commodity(void) gchar *xcode; int ran_int; - name = get_random_string(); - space = get_random_commodity_namespace(); mn = get_random_string(); + space = get_random_commodity_namespace(); + + if (add_comms_to_engine) + { + ret = gnc_commodity_table_lookup (gnc_engine_commodities (), space, mn); + + if (ret) + { + g_free (mn); + return ret; + } + } + + name = get_random_string(); xcode = get_random_string(); ran_int = get_random_int_in_range(1, 100000); - ret = gnc_commodity_new(name, space, mn, xcode, ran_int); + ret = gnc_commodity_new (name, space, mn, xcode, ran_int); - g_free(name); g_free(mn); + g_free(name); g_free(xcode); + if (add_comms_to_engine) + ret = gnc_commodity_table_insert (gnc_engine_commodities (), ret); + return ret; } @@ -708,3 +737,16 @@ get_random_query(void) return q; } +GNCBook * +get_random_book (void) +{ + GNCBook *book; + + book = gnc_book_new (); + + gnc_book_set_group (book, get_random_group ()); + + /* make_random_pricedb (gnc_book_get_pricedb (book)); */ + + return book; +} diff --git a/src/engine/test-core/test-engine-stuff.h b/src/engine/test-core/test-engine-stuff.h index bad8e87c64..11d8170e29 100644 --- a/src/engine/test-core/test-engine-stuff.h +++ b/src/engine/test-core/test-engine-stuff.h @@ -9,7 +9,7 @@ #include #include -#include "Group.h" +#include "gnc-book.h" #include "Query.h" #include "date.h" #include "gnc-pricedb.h" @@ -33,6 +33,7 @@ GUID* get_random_guid(void); GList* get_random_glist(void); GNCPrice * get_random_price(void); +void make_random_pricedb (GNCPriceDB *pdb); GNCPriceDB * get_random_pricedb(void); AccountGroup * get_random_group(void); Account* get_random_account(void); @@ -43,5 +44,9 @@ const char *get_random_commodity_namespace(void); Query* get_random_query(void); +GNCBook * get_random_book (void); + +void add_random_commodities_to_engine (gboolean add); + #endif diff --git a/src/engine/test/test-commodities.c b/src/engine/test/test-commodities.c index cb54e75409..ece36fa145 100644 --- a/src/engine/test/test-commodities.c +++ b/src/engine/test/test-commodities.c @@ -3,6 +3,7 @@ #include "gnc-engine-util.h" #include "gnc-commodity.h" +#include "gnc-engine.h" #include "test-engine-stuff.h" #include "test-stuff.h" @@ -146,6 +147,8 @@ test_commodity(void) int main(int argc, char **argv) { + gnc_engine_init (argc, argv); + add_random_commodities_to_engine (FALSE); test_commodity(); print_test_results(); exit(get_rv());