mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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
This commit is contained in:
parent
901c89dffa
commit
6bdac283fa
@ -167,8 +167,9 @@ void qof_book_kvp_changed (QofBook *book);
|
|||||||
// TODO: Unroll/remove
|
// TODO: Unroll/remove
|
||||||
const char *qof_session_get_url (QofSession *session);
|
const char *qof_session_get_url (QofSession *session);
|
||||||
|
|
||||||
|
%ignore qof_print_date_time_buff;
|
||||||
|
%include <gnc-date.h>
|
||||||
extern const char *gnc_default_strftime_date_format;
|
extern const char *gnc_default_strftime_date_format;
|
||||||
const char *gnc_print_date (Timespec ts);
|
|
||||||
|
|
||||||
GncGUID guid_new_return(void);
|
GncGUID guid_new_return(void);
|
||||||
|
|
||||||
|
@ -11,38 +11,32 @@
|
|||||||
(define (run-test)
|
(define (run-test)
|
||||||
(test-account-get-trans-type-splits-interval))
|
(test-account-get-trans-type-splits-interval))
|
||||||
|
|
||||||
(define (NDayDelta n)
|
(define (NDayDelta tp n)
|
||||||
(let ((ddt (make-zdate)))
|
(let* ((day-secs (* 60 60 24 n)) ; n days in seconds is n times 60 sec/min * 60 min/h * 24 h/day
|
||||||
(set-tm:mday ddt n)
|
(new-secs (- (car tp) day-secs))
|
||||||
ddt))
|
(new-tp (cons new-secs 0)))
|
||||||
|
new-tp))
|
||||||
|
|
||||||
(define (test-account-get-trans-type-splits-interval)
|
(define (test-account-get-trans-type-splits-interval)
|
||||||
(let ((env (create-test-env))
|
(let* ((env (create-test-env))
|
||||||
(end-date-tp (gnc:date->timepair (localtime (current-time)))))
|
(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"
|
(let* ((accounts (env-create-account-structure-alist env (list "Assets"
|
||||||
(list (cons 'type ACCT-TYPE-ASSET))
|
(list (cons 'type ACCT-TYPE-ASSET))
|
||||||
(list "Bank Account")
|
(list "Bank Account")
|
||||||
(list "Wallet"))))
|
(list "Wallet"))))
|
||||||
(bank-account (cdr (assoc "Bank Account" accounts)))
|
(bank-account (cdr (assoc "Bank Account" accounts)))
|
||||||
(wallet (cdr (assoc "Wallet" 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)))
|
|
||||||
|
|
||||||
(env-create-daily-transactions env start-date-tp end-date-tp bank-account wallet)
|
(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)
|
(let ((splits (gnc:account-get-trans-type-splits-interval (list bank-account wallet)
|
||||||
ACCT-TYPE-ASSET
|
ACCT-TYPE-ASSET
|
||||||
(gnc:date->timepair q-start-date)
|
q-start-date-tp q-end-date-tp)))
|
||||||
(gnc:date->timepair q-end-date))))
|
|
||||||
;; 10 is the right number (5 days, two splits per tx)
|
;; 10 is the right number (5 days, two splits per tx)
|
||||||
(and (equal? 10 (length splits)))))))
|
(and (equal? 10 (length splits)))))))
|
||||||
|
@ -18,10 +18,11 @@
|
|||||||
(list "Wallet"))
|
(list "Wallet"))
|
||||||
(list "Expenses" (list (cons 'type ACCT-TYPE-EXPENSE)))))
|
(list "Expenses" (list (cons 'type ACCT-TYPE-EXPENSE)))))
|
||||||
|
|
||||||
(define (NDayDelta n)
|
(define (NDayDelta tp n)
|
||||||
(let ((ddt (make-zdate)))
|
(let* ((day-secs (* 60 60 24 n)) ; n days in seconds is n times 60 sec/min * 60 min/h * 24 h/day
|
||||||
(set-tm:year ddt n)
|
(new-secs (- (car tp) day-secs))
|
||||||
ddt))
|
(new-tp (cons new-secs 0)))
|
||||||
|
new-tp))
|
||||||
|
|
||||||
(define (test-one-tx-in-cash-flow)
|
(define (test-one-tx-in-cash-flow)
|
||||||
(let* ((env (create-test-env))
|
(let* ((env (create-test-env))
|
||||||
@ -29,14 +30,16 @@
|
|||||||
(bank-account (cdr (assoc "Bank" account-alist)))
|
(bank-account (cdr (assoc "Bank" account-alist)))
|
||||||
(wallet-account (cdr (assoc "Wallet" account-alist)))
|
(wallet-account (cdr (assoc "Wallet" account-alist)))
|
||||||
(expense-account (cdr (assoc "Expenses" 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))
|
(exchange-fn (lambda (currency amount date) amount))
|
||||||
(report-currency (gnc-default-report-currency))
|
(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))
|
(let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list bank-account))
|
||||||
(cons 'to-date-tp today)
|
(cons 'to-date-tp to-date-tp)
|
||||||
(cons 'from-date-tp (decdate today (NDayDelta 1)))
|
(cons 'from-date-tp from-date-tp)
|
||||||
(cons 'report-currency report-currency)
|
(cons 'report-currency report-currency)
|
||||||
(cons 'include-trading-accounts #f)
|
(cons 'include-trading-accounts #f)
|
||||||
(cons 'to-report-currency exchange-fn)))))
|
(cons 'to-report-currency exchange-fn)))))
|
||||||
@ -63,14 +66,16 @@
|
|||||||
(bank-account (cdr (assoc "Bank" account-alist)))
|
(bank-account (cdr (assoc "Bank" account-alist)))
|
||||||
(wallet-account (cdr (assoc "Wallet" account-alist)))
|
(wallet-account (cdr (assoc "Wallet" account-alist)))
|
||||||
(expense-account (cdr (assoc "Expenses" 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))
|
(exchange-fn (lambda (currency amount date) amount))
|
||||||
(report-currency (gnc-default-report-currency))
|
(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))
|
(let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list wallet-account bank-account))
|
||||||
(cons 'to-date-tp today)
|
(cons 'to-date-tp to-date-tp)
|
||||||
(cons 'from-date-tp (decdate today (NDayDelta 1)))
|
(cons 'from-date-tp from-date-tp)
|
||||||
(cons 'report-currency report-currency)
|
(cons 'report-currency report-currency)
|
||||||
(cons 'include-trading-accounts #f)
|
(cons 'include-trading-accounts #f)
|
||||||
(cons 'to-report-currency exchange-fn)))))
|
(cons 'to-report-currency exchange-fn)))))
|
||||||
@ -93,15 +98,17 @@
|
|||||||
(bank-account (cdr (assoc "Bank" account-alist)))
|
(bank-account (cdr (assoc "Bank" account-alist)))
|
||||||
(wallet-account (cdr (assoc "Wallet" account-alist)))
|
(wallet-account (cdr (assoc "Wallet" account-alist)))
|
||||||
(expense-account (cdr (assoc "Expenses" 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))
|
(exchange-fn (lambda (currency amount date) amount))
|
||||||
(report-currency (gnc-default-report-currency))
|
(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))
|
||||||
(env-create-transaction env today expense-account bank-account (gnc:make-gnc-numeric 50 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))
|
(let ((result (cash-flow-calc-money-in-out (list (cons 'accounts (list wallet-account bank-account))
|
||||||
(cons 'to-date-tp today)
|
(cons 'to-date-tp to-date-tp)
|
||||||
(cons 'from-date-tp (decdate today (NDayDelta 1)))
|
(cons 'from-date-tp from-date-tp)
|
||||||
(cons 'report-currency report-currency)
|
(cons 'report-currency report-currency)
|
||||||
(cons 'include-trading-accounts #f)
|
(cons 'include-trading-accounts #f)
|
||||||
(cons 'to-report-currency exchange-fn)))))
|
(cons 'to-report-currency exchange-fn)))))
|
||||||
|
Loading…
Reference in New Issue
Block a user