mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-28 21:02:04 +03:00
79 lines
2.7 KiB
Markdown
79 lines
2.7 KiB
Markdown
|
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.
|
||
|
|
||
|
[Contributor Guide: Tests]: https://hledger.org/CONTRIBUTING.html#tests
|
||
|
[component]: https://hledger.org/CONTRIBUTING.html#components
|
||
|
[shelltestrunner]: https://github.com/simonmichael/shelltestrunner#readme
|
||
|
[format 1]: https://github.com/simonmichael/shelltestrunner#format-1
|
||
|
[format 3]: https://github.com/simonmichael/shelltestrunner#format-3
|
||
|
|
||
|
|
||
|
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](http://eradman.com/entrproject/) 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
|
||
|
|