From 6bdac283fa6b1f5b67a3d228e1f16cc2d498519e Mon Sep 17 00:00:00 2001 From: Geert Janssens Date: Mon, 10 Oct 2016 11:49:10 +0200 Subject: [PATCH] Bug 771617 - Build fails because test test-report-utilities is sensitive to time of day/timezone Use the date-time functions in gnc-date instead of the guile ones for more consistent behaviour. Do the same for test test-cash-flow, which was also time-of-day sensitive --- src/engine/engine.i | 3 +- .../test/test-report-utilities.scm | 36 +++++++--------- .../standard-reports/test/test-cash-flow.scm | 41 +++++++++++-------- 3 files changed, 41 insertions(+), 39 deletions(-) diff --git a/src/engine/engine.i b/src/engine/engine.i index f11d3096b39..14c1214e5c2 100644 --- a/src/engine/engine.i +++ b/src/engine/engine.i @@ -167,8 +167,9 @@ void qof_book_kvp_changed (QofBook *book); // TODO: Unroll/remove const char *qof_session_get_url (QofSession *session); +%ignore qof_print_date_time_buff; +%include extern const char *gnc_default_strftime_date_format; -const char *gnc_print_date (Timespec ts); GncGUID guid_new_return(void); diff --git a/src/report/report-system/test/test-report-utilities.scm b/src/report/report-system/test/test-report-utilities.scm index 959c8b9da99..dd061721a31 100644 --- a/src/report/report-system/test/test-report-utilities.scm +++ b/src/report/report-system/test/test-report-utilities.scm @@ -11,38 +11,32 @@ (define (run-test) (test-account-get-trans-type-splits-interval)) -(define (NDayDelta n) - (let ((ddt (make-zdate))) - (set-tm:mday ddt n) - ddt)) +(define (NDayDelta tp n) + (let* ((day-secs (* 60 60 24 n)) ; n days in seconds is n times 60 sec/min * 60 min/h * 24 h/day + (new-secs (- (car tp) day-secs)) + (new-tp (cons new-secs 0))) + new-tp)) (define (test-account-get-trans-type-splits-interval) - (let ((env (create-test-env)) - (end-date-tp (gnc:date->timepair (localtime (current-time))))) + (let* ((env (create-test-env)) + (ts-now (localtime (current-time))) + (end-date-tp (gnc-dmy2timespec-neutral (tm:mday ts-now) (tm:mon ts-now) (tm:year ts-now))) + (start-date-tp (NDayDelta end-date-tp 10)) + (q-end-date-tp (gnc-dmy2timespec-end (tm:mday ts-now) (tm:mon ts-now) (tm:year ts-now))) + (q-start-date-tp (gnc-dmy2timespec (tm:mday ts-now) (tm:mon ts-now) (tm:year ts-now))) + (q-start-date-tp (NDayDelta q-start-date-tp 5))) + (let* ((accounts (env-create-account-structure-alist env (list "Assets" (list (cons 'type ACCT-TYPE-ASSET)) (list "Bank Account") (list "Wallet")))) (bank-account (cdr (assoc "Bank Account" accounts))) - (wallet (cdr (assoc "Wallet" accounts))) - (start-date-tp (decdate end-date-tp (NDayDelta 10))) - (q-start-date-tp (decdate end-date-tp (NDayDelta 5))) - (q-start-date (gnc:timepair->date q-start-date-tp)) - (q-end-date (gnc:timepair->date end-date-tp))) + (wallet (cdr (assoc "Wallet" accounts)))) (env-create-daily-transactions env start-date-tp end-date-tp bank-account wallet) - ; Ensure the query interval is as inclusive as possible to deal with timezone differences - (set-tm:hour q-end-date 23) - (set-tm:min q-end-date 59) - (set-tm:sec q-end-date 59) - (set-tm:hour q-start-date 00) - (set-tm:min q-start-date 00) - (set-tm:sec q-start-date 01) - (let ((splits (gnc:account-get-trans-type-splits-interval (list bank-account wallet) ACCT-TYPE-ASSET - (gnc:date->timepair q-start-date) - (gnc:date->timepair q-end-date)))) + q-start-date-tp q-end-date-tp))) ;; 10 is the right number (5 days, two splits per tx) (and (equal? 10 (length splits))))))) diff --git a/src/report/standard-reports/test/test-cash-flow.scm b/src/report/standard-reports/test/test-cash-flow.scm index 871fd15d756..74031adedf3 100644 --- a/src/report/standard-reports/test/test-cash-flow.scm +++ b/src/report/standard-reports/test/test-cash-flow.scm @@ -18,10 +18,11 @@ (list "Wallet")) (list "Expenses" (list (cons 'type ACCT-TYPE-EXPENSE))))) -(define (NDayDelta n) - (let ((ddt (make-zdate))) - (set-tm:year ddt n) - ddt)) +(define (NDayDelta tp n) + (let* ((day-secs (* 60 60 24 n)) ; n days in seconds is n times 60 sec/min * 60 min/h * 24 h/day + (new-secs (- (car tp) day-secs)) + (new-tp (cons new-secs 0))) + new-tp)) (define (test-one-tx-in-cash-flow) (let* ((env (create-test-env)) @@ -29,14 +30,16 @@ (bank-account (cdr (assoc "Bank" account-alist))) (wallet-account (cdr (assoc "Wallet" account-alist))) (expense-account (cdr (assoc "Expenses" account-alist))) - (today (gnc:date->timepair (localtime (current-time)))) + (today (localtime (current-time))) + (to-date-tp (gnc-dmy2timespec-end (tm:mday today) (tm:mon today) (tm:year today))) + (from-date-tp (NDayDelta to-date-tp 1)) (exchange-fn (lambda (currency amount date) amount)) (report-currency (gnc-default-report-currency)) ) - (env-create-transaction env today bank-account expense-account (gnc:make-gnc-numeric 100 1)) + (env-create-transaction env to-date-tp bank-account expense-account (gnc:make-gnc-numeric 100 1)) (let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list bank-account)) - (cons 'to-date-tp today) - (cons 'from-date-tp (decdate today (NDayDelta 1))) + (cons 'to-date-tp to-date-tp) + (cons 'from-date-tp from-date-tp) (cons 'report-currency report-currency) (cons 'include-trading-accounts #f) (cons 'to-report-currency exchange-fn))))) @@ -63,14 +66,16 @@ (bank-account (cdr (assoc "Bank" account-alist))) (wallet-account (cdr (assoc "Wallet" account-alist))) (expense-account (cdr (assoc "Expenses" account-alist))) - (today (gnc:date->timepair (localtime (current-time)))) + (today (localtime (current-time))) + (to-date-tp (gnc-dmy2timespec-end (tm:mday today) (tm:mon today) (tm:year today))) + (from-date-tp (NDayDelta to-date-tp 1)) (exchange-fn (lambda (currency amount date) amount)) (report-currency (gnc-default-report-currency)) ) - (env-create-transaction env today bank-account wallet-account (gnc:make-gnc-numeric 100 1)) + (env-create-transaction env to-date-tp bank-account wallet-account (gnc:make-gnc-numeric 100 1)) (let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list wallet-account bank-account)) - (cons 'to-date-tp today) - (cons 'from-date-tp (decdate today (NDayDelta 1))) + (cons 'to-date-tp to-date-tp) + (cons 'from-date-tp from-date-tp) (cons 'report-currency report-currency) (cons 'include-trading-accounts #f) (cons 'to-report-currency exchange-fn))))) @@ -93,15 +98,17 @@ (bank-account (cdr (assoc "Bank" account-alist))) (wallet-account (cdr (assoc "Wallet" account-alist))) (expense-account (cdr (assoc "Expenses" account-alist))) - (today (gnc:date->timepair (localtime (current-time)))) + (today (localtime (current-time))) + (to-date-tp (gnc-dmy2timespec-end (tm:mday today) (tm:mon today) (tm:year today))) + (from-date-tp (NDayDelta to-date-tp 1)) (exchange-fn (lambda (currency amount date) amount)) (report-currency (gnc-default-report-currency)) ) - (env-create-transaction env today bank-account expense-account (gnc:make-gnc-numeric 100 1)) - (env-create-transaction env today expense-account bank-account (gnc:make-gnc-numeric 50 1)) + (env-create-transaction env to-date-tp bank-account expense-account (gnc:make-gnc-numeric 100 1)) + (env-create-transaction env to-date-tp expense-account bank-account (gnc:make-gnc-numeric 50 1)) (let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list wallet-account bank-account)) - (cons 'to-date-tp today) - (cons 'from-date-tp (decdate today (NDayDelta 1))) + (cons 'to-date-tp to-date-tp) + (cons 'from-date-tp from-date-tp) (cons 'report-currency report-currency) (cons 'include-trading-accounts #f) (cons 'to-report-currency exchange-fn)))))