From 44ca77766af2ea18efd709fd027262918b7a2804 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Sun, 10 Nov 2013 13:31:00 -0800 Subject: [PATCH] Fake edit level for tests and SQL backend. These are cases where we don't want to commit, either because it would be circular (the backend is loading; committing the result back would at best waste time) or because we're testing some narrow functionality. --- src/backend/sql/gnc-account-sql.c | 4 +++ src/backend/sql/gnc-address-sql.c | 2 ++ src/backend/sql/gnc-backend-sql.c | 43 ++++++++++++++++++++++++++- src/backend/sql/gnc-bill-term-sql.c | 2 ++ src/backend/sql/gnc-budget-sql.c | 2 ++ src/backend/sql/gnc-commodity-sql.c | 2 ++ src/backend/sql/gnc-invoice-sql.c | 2 ++ src/backend/sql/gnc-lots-sql.c | 2 ++ src/backend/sql/gnc-order-sql.c | 2 ++ src/backend/sql/gnc-owner-sql.c | 2 ++ src/backend/sql/gnc-tax-table-sql.c | 2 ++ src/backend/sql/gnc-transaction-sql.c | 5 ++++ src/engine/test/test-account-object.c | 3 ++ src/engine/test/utest-Account.c | 20 +++++++++---- src/engine/test/utest-Split.c | 4 +++ 15 files changed, 90 insertions(+), 7 deletions(-) diff --git a/src/backend/sql/gnc-account-sql.c b/src/backend/sql/gnc-account-sql.c index fb1ce982f4..7d6b3a3e1c 100644 --- a/src/backend/sql/gnc-account-sql.c +++ b/src/backend/sql/gnc-account-sql.c @@ -294,12 +294,14 @@ load_all_accounts( GncSqlBackend* be ) { acct_balances_t* balances = (acct_balances_t*)bal->data; + qof_instance_increase_editlevel (balances->acct); g_object_set( balances->acct, "start-balance", &balances->balance, "start-cleared-balance", &balances->cleared_balance, "start-reconciled-balance", &balances->reconciled_balance, NULL); + qof_instance_decrease_editlevel (balances->acct); } if ( bal_slist != NULL ) { @@ -418,7 +420,9 @@ load_account_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, account, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-address-sql.c b/src/backend/sql/gnc-address-sql.c index a29d4aac56..a3f399440f 100644 --- a/src/backend/sql/gnc-address-sql.c +++ b/src/backend/sql/gnc-address-sql.c @@ -115,7 +115,9 @@ load_address( const GncSqlBackend* be, GncSqlRow* row, } if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, addr, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-backend-sql.c b/src/backend/sql/gnc-backend-sql.c index e6518bbf83..ed772e5d4f 100644 --- a/src/backend/sql/gnc-backend-sql.c +++ b/src/backend/sql/gnc-backend-sql.c @@ -1206,7 +1206,11 @@ const GncSqlColumnTableEntry* table_row ) s = g_value_get_string( val ); if ( table_row->gobj_param_name != NULL ) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, s, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_decrease_editlevel (QOF_INSTANCE (pObject)); } else { @@ -1310,7 +1314,11 @@ load_int( const GncSqlBackend* be, GncSqlRow* row, } if ( table_row->gobj_param_name != NULL ) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, int_value, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_decrease_editlevel (QOF_INSTANCE (pObject)); } else { @@ -1408,7 +1416,11 @@ load_boolean( const GncSqlBackend* be, GncSqlRow* row, } if ( table_row->gobj_param_name != NULL ) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, int_value, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_decrease_editlevel (QOF_INSTANCE (pObject)); } else { @@ -1501,7 +1513,11 @@ load_int64( const GncSqlBackend* be, GncSqlRow* row, } if ( table_row->gobj_param_name != NULL ) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, i64_value, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_decrease_editlevel (QOF_INSTANCE (pObject)); } else { @@ -1608,7 +1624,11 @@ load_double( const GncSqlBackend* be, GncSqlRow* row, } if ( table_row->gobj_param_name != NULL ) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, d_value, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_decrease_editlevel (QOF_INSTANCE (pObject)); } else { @@ -1707,7 +1727,11 @@ load_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, pGuid, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_decrease_editlevel (QOF_INSTANCE (pObject)); } else { @@ -1914,7 +1938,11 @@ load_timespec( const GncSqlBackend* be, GncSqlRow* row, { if (table_row->gobj_param_name != NULL) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, &ts, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_decrease_editlevel (QOF_INSTANCE (pObject)); } else { @@ -2016,7 +2044,11 @@ load_date( const GncSqlBackend* be, GncSqlRow* row, g_date_time_unref (gdt); if ( table_row->gobj_param_name != NULL ) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, date, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); } else { @@ -2050,7 +2082,12 @@ load_date( const GncSqlBackend* be, GncSqlRow* row, date = g_date_new_dmy( day, month, year ); if ( table_row->gobj_param_name != NULL ) { - g_object_set( pObject, table_row->gobj_param_name, date, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); + g_object_set (pObject, table_row->gobj_param_name, + date, NULL); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); } else { @@ -2189,7 +2226,11 @@ load_numeric( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); g_object_set( pObject, table_row->gobj_param_name, &n, NULL ); + if (QOF_IS_INSTANCE (pObject)) + qof_instance_increase_editlevel (QOF_INSTANCE (pObject)); } else { diff --git a/src/backend/sql/gnc-bill-term-sql.c b/src/backend/sql/gnc-bill-term-sql.c index 4846b0f763..eaf7243b24 100644 --- a/src/backend/sql/gnc-bill-term-sql.c +++ b/src/backend/sql/gnc-bill-term-sql.c @@ -363,7 +363,9 @@ load_billterm_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, term, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-budget-sql.c b/src/backend/sql/gnc-budget-sql.c index 59a7efb8da..4c697c9f9e 100644 --- a/src/backend/sql/gnc-budget-sql.c +++ b/src/backend/sql/gnc-budget-sql.c @@ -500,7 +500,9 @@ load_budget_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, budget, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-commodity-sql.c b/src/backend/sql/gnc-commodity-sql.c index 2389946898..1f8f556ddf 100644 --- a/src/backend/sql/gnc-commodity-sql.c +++ b/src/backend/sql/gnc-commodity-sql.c @@ -283,7 +283,9 @@ load_commodity_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, commodity, NULL ); + qof_instance_decrease_editlevel (pObject); } else if ( setter != NULL ) { diff --git a/src/backend/sql/gnc-invoice-sql.c b/src/backend/sql/gnc-invoice-sql.c index 8788960976..72c1cd2a77 100644 --- a/src/backend/sql/gnc-invoice-sql.c +++ b/src/backend/sql/gnc-invoice-sql.c @@ -303,7 +303,9 @@ load_invoice_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, invoice, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-lots-sql.c b/src/backend/sql/gnc-lots-sql.c index a6ee240996..22c4a705d5 100644 --- a/src/backend/sql/gnc-lots-sql.c +++ b/src/backend/sql/gnc-lots-sql.c @@ -235,7 +235,9 @@ load_lot_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, lot, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-order-sql.c b/src/backend/sql/gnc-order-sql.c index 46b0ae0222..a7bc177c13 100644 --- a/src/backend/sql/gnc-order-sql.c +++ b/src/backend/sql/gnc-order-sql.c @@ -220,7 +220,9 @@ load_order_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, order, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-owner-sql.c b/src/backend/sql/gnc-owner-sql.c index 4b89c548dd..2e779f0e9f 100644 --- a/src/backend/sql/gnc-owner-sql.c +++ b/src/backend/sql/gnc-owner-sql.c @@ -156,7 +156,9 @@ load_owner( const GncSqlBackend* be, GncSqlRow* row, if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, &owner, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-tax-table-sql.c b/src/backend/sql/gnc-tax-table-sql.c index 21466d4e10..fbf5d372f0 100644 --- a/src/backend/sql/gnc-tax-table-sql.c +++ b/src/backend/sql/gnc-tax-table-sql.c @@ -523,7 +523,9 @@ load_taxtable_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, taxtable, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/backend/sql/gnc-transaction-sql.c b/src/backend/sql/gnc-transaction-sql.c index eca64cfdda..8c67c0bea2 100644 --- a/src/backend/sql/gnc-transaction-sql.c +++ b/src/backend/sql/gnc-transaction-sql.c @@ -393,6 +393,7 @@ query_transactions( GncSqlBackend* be, GncSqlStatement* stmt ) "end-reconciled-balance", &pnew_end_r_bal, NULL ); + qof_instance_increase_editlevel (balns-acc); if ( !gnc_numeric_eq( *pnew_end_bal, balns->end_bal ) ) { adj = gnc_numeric_sub( balns->end_bal, *pnew_end_bal, @@ -400,6 +401,7 @@ query_transactions( GncSqlBackend* be, GncSqlStatement* stmt ) balns->start_bal = gnc_numeric_add( balns->start_bal, adj, GNC_DENOM_AUTO, GNC_HOW_DENOM_LCD ); g_object_set( balns->acc, "start-balance", &balns->start_bal, NULL ); + qof_instance_decrease_editlevel (balns-acc); } if ( !gnc_numeric_eq( *pnew_end_c_bal, balns->end_cleared_bal ) ) { @@ -417,6 +419,7 @@ query_transactions( GncSqlBackend* be, GncSqlStatement* stmt ) GNC_DENOM_AUTO, GNC_HOW_DENOM_LCD ); g_object_set( balns->acc, "start-reconciled-balance", &balns->start_reconciled_bal, NULL ); } + qof_instance_decrease_editlevel (balns-acc); xaccAccountRecomputeBalance( balns->acc ); g_free( pnew_end_bal ); g_free( pnew_end_c_bal ); @@ -1429,7 +1432,9 @@ load_tx_guid( const GncSqlBackend* be, GncSqlRow* row, { if ( table_row->gobj_param_name != NULL ) { + qof_instance_increase_editlevel (pObject); g_object_set( pObject, table_row->gobj_param_name, tx, NULL ); + qof_instance_decrease_editlevel (pObject); } else { diff --git a/src/engine/test/test-account-object.c b/src/engine/test/test-account-object.c index 60765b5721..b87bb22033 100644 --- a/src/engine/test/test-account-object.c +++ b/src/engine/test/test-account-object.c @@ -33,6 +33,7 @@ #include "cashobjects.h" #include "test-stuff.h" #include "test-engine-stuff.h" +#include static void run_test (void) @@ -61,7 +62,9 @@ run_test (void) /*****/ five = gnc_numeric_create(5, 1); + qof_instance_increase_editlevel (acc); g_object_set(acc, "start-balance", &five, NULL); + qof_instance_decrease_editlevel (acc); xaccAccountRecomputeBalance(acc); g_object_get(acc, "start-balance", &start, "end-balance", &end, NULL); end2 = xaccAccountGetBalance(acc); diff --git a/src/engine/test/utest-Account.c b/src/engine/test/utest-Account.c index 07c47c79d5..f96abf3f37 100644 --- a/src/engine/test/utest-Account.c +++ b/src/engine/test/utest-Account.c @@ -445,11 +445,11 @@ test_gnc_account_name_violations_errmsg () message = gnc_account_name_violations_errmsg (separator, nonames); g_assert (message == NULL); validation_message = g_strdup_printf ( - "The separator character \"%s\" is used in one or more account " - "names.\n\nThis will result in unexpected behaviour. " - "Either change the account names or choose another separator " - "character.\n\nBelow you will find the list of invalid account names:\n" - "%s", separator, account_list); + "The separator character \"%s\" is used in one or more account " + "names.\n\nThis will result in unexpected behaviour. " + "Either change the account names or choose another separator " + "character.\n\nBelow you will find the list of invalid account names:\n" + "%s", separator, account_list); message = gnc_account_name_violations_errmsg (separator, badnames); g_assert_cmpstr ( message, == , validation_message); g_free (validation_message); @@ -1357,6 +1357,8 @@ test_xaccAccountOrder ( ) g_assert (xaccAccountOrder (ab, aa) == 1); ab = xaccMallocAccount (book); + qof_instance_increase_editlevel (aa); + qof_instance_increase_editlevel (ab); g_object_set (G_OBJECT (aa), "code", "3333", "type", ACCT_TYPE_ASSET, @@ -1399,6 +1401,8 @@ test_xaccAccountOrder ( ) "name", "bar", NULL); g_assert_cmpint (xaccAccountOrder (aa, ab), < , 0); + qof_instance_decrease_editlevel (aa); + qof_instance_decrease_editlevel (ab); xaccAccountBeginEdit (aa); xaccAccountDestroy (aa); @@ -2158,7 +2162,9 @@ test_xaccAccountType_Stuff (void) g_assert_cmpstr (typestr_uc, == , typename); g_free (typestr_uc); + qof_instance_increase_editlevel (acc); g_object_set (acc, "type", type, NULL); + qof_instance_decrease_editlevel (acc); if (type == ACCT_TYPE_STOCK || type == ACCT_TYPE_MUTUAL || type == ACCT_TYPE_CURRENCY) g_assert (xaccAccountIsPriced (acc)); @@ -2402,11 +2408,13 @@ test_gnc_account_merge_children (Fixture *fixture, gconstpointer pData) */ sig4 = test_signal_new (QOF_INSTANCE (div), QOF_EVENT_MODIFY, NULL); sig5 = test_signal_new (QOF_INSTANCE (div1), QOF_EVENT_MODIFY, NULL); + qof_instance_increase_editlevel (div1); g_object_set (div1, "name", "div", NULL); + qof_instance_decrease_editlevel (div1); gnc_account_merge_children (taxable); g_assert_cmpint (gnc_account_n_descendants (taxable), == , taxable_desc - 1); test_signal_assert_hits (sig4, 1); - test_signal_assert_hits (sig5, 4); + test_signal_assert_hits (sig5, 3); test_signal_free (sig4); test_signal_free (sig5); gnc_account_merge_children (expense); diff --git a/src/engine/test/utest-Split.c b/src/engine/test/utest-Split.c index 43f01dd6c5..05166e66bd 100644 --- a/src/engine/test/utest-Split.c +++ b/src/engine/test/utest-Split.c @@ -458,9 +458,11 @@ test_xaccSplitEqual (Fixture *fixture, gconstpointer pData) split1->parent = fixture->split->parent; g_assert (xaccSplitEqual (fixture->split, split1, FALSE, TRUE, TRUE) == TRUE); /* Now set the GUIDs equal and see that the comparison passes */ + qof_instance_increase_editlevel (split1->parent); g_object_set (G_OBJECT (split1), "guid", qof_instance_get_guid (QOF_INSTANCE(fixture->split)), NULL); + qof_instance_increase_editlevel (split1->parent); g_assert (xaccSplitEqual (fixture->split, split1, TRUE, TRUE, TRUE) == TRUE); g_assert_cmpint (checkA.hits, ==, 3); g_assert_cmpint (checkB.hits, ==, 1); @@ -597,10 +599,12 @@ test_xaccSplitCommitEdit (Fixture *fixture, gconstpointer pData) g_assert_cmpint (checkB.hits, ==, 2); qof_instance_mark_clean (QOF_INSTANCE (fixture->split->parent)); + qof_instance_increase_editlevel (fixture->split->acc); g_object_set (fixture->split->acc, "sort-dirty", FALSE, "balance-dirty", FALSE, NULL); + qof_instance_decrease_editlevel (fixture->split->acc); qof_instance_set_dirty (QOF_INSTANCE (fixture->split)); xaccSplitCommitEdit (fixture->split);