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
 | 
						|
 |