hledger/tests
2019-06-06 14:38:51 -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 bal/bs/bse: -H or --cumulative now disables -T (#329) 2019-05-11 20:43:28 -07:00
budget make -V do --value=end in multiperiod reports (#329) 2019-05-24 10:30:35 -07: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 ;csv: update shelltests format 2019-06-06 14:38:51 -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 make -V do --value=end in multiperiod reports (#329) 2019-05-24 10:30:35 -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