| A rewrite and simplification of the posting-generating code. The "special handling for pre 1.17 rules" should now be less noticeable. amount1/amount2 no longer force a second posting or explicit amounts on both postings. (Only amount/amount-in/amount-out do that.) Error messages and handling of corner cases may be more robust, also. | ||
|---|---|---|
| .. | ||
| addons | ||
| balance | ||
| cli | ||
| i18n | ||
| journal | ||
| register | ||
| 0unittests.test | ||
| account-aliases.test | ||
| accounts-sorting.test | ||
| accounts.test | ||
| add.test | ||
| amount-rendering.test | ||
| balancesheet.test | ||
| cashflow.test | ||
| close.test | ||
| csv.test | ||
| csvtest.sh | ||
| descriptions.test | ||
| forecast.test | ||
| incomestatement.test | ||
| notes.test | ||
| payees.test | ||
| pivot.test | ||
| prices.test | ||
| query-desc.test | ||
| query-tag.test | ||
| README.md | ||
| rewrite.test | ||
| roi.test | ||
| sample.journal | ||
| stats.test | ||
| tags.test | ||
| timeclock.test | ||
| timedot.test | ||
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=80makes output independent of your terminal width.
- --execdirruns each test within its own directory.
- -w `stack exec -- which hledger`ensures you are testing the hledger executable that was just built.
- -j16runs 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