hledger/tests
Simon Michael ebf5ed93f2 valuation: more thorough --value-at; document status (#329, #999)
This feature turns out to be quite involved, as valuation interacts
with the many report variations. Various bugs/specs have been
fixed/clarified relating to register's running total, balance totals
etc. Eg register's total should now be the sum of the posting amount
values, not the values of the original sums. Current level of support
has been documented.

When valuing at transaction date, we once again do early valuation of
all posting amounts, to get more correct results. variants. This means
--value-at=t can be slower than other valuation modes when there are
many transactions and many prices. This could be revisited for
optimisation when things are more settled.
2019-05-03 12:24:02 -07:00
..
0unittests lib: fix journalApplyValue test (#999) 2019-04-23 07:20:10 -07:00
accounts accounts: filtering by anything other than account name was broken 2018-10-10 20:32:19 -07:00
add tests: make functional tests use "hledger" again 2015-07-12 12:29:53 -07:00
addons update addons tests, note a todo 2017-03-29 08:21:30 -07:00
balance cli: added --transpose to "balance" command 2019-01-24 15:06:35 -08:00
balancesheet cli: compoundbalancecommand keeps zero-balance accounts with children 2018-10-17 16:59:53 -07:00
budget lib, cli: merge --show-unbudgeted into --empty 2019-01-25 12:53:09 -08:00
cashflow update functional tests for new monthly headings 2018-03-29 14:54:36 +01:00
cli Add CLI tests for report interval 2019-04-28 10:44:37 +02:00
csv lib: csv parser support for 'balance2', 'balance' renamed to 'balance1' 2019-03-15 16:18:43 -07:00
i18n tests: update i18n test journals, i18n tests 2019-04-20 08:34:08 -07:00
incomestatement update functional tests for new monthly headings 2018-03-29 14:54:36 +01:00
journal valuation: more thorough --value-at; document status (#329, #999) 2019-05-03 12:24:02 -07:00
misc cli: if abs(return on investment)<0.01% display it as zero 2019-01-24 13:36:11 -08:00
print tests: move, consolidate auto posting tests (#893) 2019-02-01 15:31:36 -08:00
register reg: test and fix for --average, broken since 1.12 (#1003) 2019-04-06 11:00:38 -07:00
stats lib: simplify parsers; cleanups (#275) 2016-05-23 00:44:19 -07:00
timeclock lib: keep amounts aligned when rendering a transaction with posting flags 2017-06-04 21:26:18 -07:00
README.md doc: add a README for the functional tests, linked from contrib guide 2019-04-19 09:56:33 -07:00

hledger's functional tests. See also Contributor Guide: Tests.

These mainly test the hledger CLI and (indirectly) hledger-lib. They are organised roughly by component.

Running these requires shelltestrunner. Older test files are in format 1; newer ones use format 3 (preferred). Some tests invoke unix commands so will not run in a Windows CMD shell.

Run them all (also builds hledger):

make functest

See how the Makefile is invoking shelltestrunner:

$ make functest -n
stack build --fast hledger
(COLUMNS=80 stack exec -- shelltest --execdir -j16 --hide-successes --exclude=/_ -w `stack exec -- which hledger` tests \
        && echo functest PASSED) || (echo functest FAILED; false)

These are the most important:

  • COLUMNS=80 makes output independent of your terminal width.
  • --execdir runs each test within its own directory.
  • -w `stack exec -- which hledger` ensures you are testing the hledger executable that was just built.
  • -j16 runs tests in parallel which is much faster.

Run only the tests matching a regular expression:

$ COLUMNS=80 shelltest --execdir -w `stack exec -- which hledger` tests -i balance-assertions.*19
:tests/journal/balance-assertions.test:19: [OK]

         Test Cases  Total      
 Passed  1           1          
 Failed  0           0          
 Total   1           1          

Run only the tests in one file:

$ COLUMNS=80 shelltest --execdir -w `stack exec -- which hledger` tests/cli/query-args.test
:tests/cli/query-args.test:1: [OK]
:tests/cli/query-args.test:2: [OK]
:tests/cli/query-args.test:3: [OK]

         Test Cases  Total      
 Passed  3           3          
 Failed  0           0          
 Total   3           3          

Run a test repeatedly as its file is changed:

$ ls tests/cli/query-args.test | entr bash -c "COLUMNS=80 shelltest --execdir -w `stack exec -- which hledger` tests/cli/query-args.test -i1"
:tests/cli/query-args.test:1: [OK]

         Test Cases  Total      
 Passed  1           1          
 Failed  0           0          
 Total   1           1          
:tests/cli/query-args.test:1: [OK]

         Test Cases  Total      
 Passed  1           1          
 Failed  0           0          
 Total   1           1          
  C-c C-c

More shelltestrunner options:

$ shelltest --help