[doc] Add documentation on running and writing tests
Minor wording edit [ci skip] Signed-off-by: Alexis Hildebrandt <afh@surryhill.net>
This commit is contained in:
parent
01252035cd
commit
012ce5ef10
1 changed files with 92 additions and 1 deletions
|
|
@ -8780,7 +8780,8 @@ and receive them from functions.
|
||||||
Expressions can be onerous to type at the command-line, so there's
|
Expressions can be onerous to type at the command-line, so there's
|
||||||
a shorthand for reporting called ``query expressions''. These add no
|
a shorthand for reporting called ``query expressions''. These add no
|
||||||
functionality of their own, but are purely translated from the input
|
functionality of their own, but are purely translated from the input
|
||||||
string (cash) down to the corresponding value expression @samp{(account
|
string down to the corresponding value expression, for example the
|
||||||
|
input string @samp{cash} is translated to @samp{(account
|
||||||
=~ /cash/)}. This is a convenience layer.
|
=~ /cash/)}. This is a convenience layer.
|
||||||
|
|
||||||
@item Format strings
|
@item Format strings
|
||||||
|
|
@ -9471,6 +9472,81 @@ for example, issue @code{ctest -V -R "5FB"}.
|
||||||
@node Writing Tests, , Running Tests, Testing Framework
|
@node Writing Tests, , Running Tests, Testing Framework
|
||||||
@subsubsection Writing Tests
|
@subsubsection Writing Tests
|
||||||
|
|
||||||
|
To write a new test first decide to which broad category the test belongs:
|
||||||
|
baseline or regression. Depending on the category tests are named differently
|
||||||
|
baseline tests are prefixed with their type, e.g. @samp{cmd}
|
||||||
|
(@pxref{Baseline Test Types} for valid types), whereas regressions are either
|
||||||
|
named after the bug id, e.g. @samp{1234.test} or uuid @samp{91416D62.test}.
|
||||||
|
In case several test files belong to the same bug number the files by appending
|
||||||
|
@code{_X} where @samp{X} is the number of the test, e.g. @samp{1234_1.test},
|
||||||
|
@samp{1234_2.test}.
|
||||||
|
|
||||||
|
A ledger test file contains three sections:
|
||||||
|
|
||||||
|
@enumerate
|
||||||
|
@item the journal data used for the test, this can be empty in certain
|
||||||
|
scenarios
|
||||||
|
@item the ledger commandline options used for the test
|
||||||
|
@item the expected output
|
||||||
|
@end enumerate
|
||||||
|
|
||||||
|
Ledger has a special command directive for tests, everythin between
|
||||||
|
@code{test} and @code{end test} is treated like a comment, so every
|
||||||
|
Ledger test is automatically a valid Ledger file.
|
||||||
|
The test scripts take the remainder of the @code{test} line and use
|
||||||
|
it as commandline arguments for ledger, the text enclosed in @code{test}
|
||||||
|
and @code{end test} is expected output, for example:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
; This is the journal data
|
||||||
|
year 2014
|
||||||
|
12/24 (C0d3) Santa Claus
|
||||||
|
Assets:Bank ¤ -150,00
|
||||||
|
Expenses:Presents
|
||||||
|
|
||||||
|
; The following line specifies the ledger commandline options for this test and
|
||||||
|
; everything between the next line and `end test` specifies the expected output
|
||||||
|
test reg --payee=code
|
||||||
|
14-Dec-24 C0d3 Assets:Bank ¤ -150,00 ¤ -150,00
|
||||||
|
14-Dec-24 C0d3 Expenses:Presents ¤ 150,00 0
|
||||||
|
end test
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
When it is necessary to test for errors printed to @code{stderr} redirect
|
||||||
|
the test output by adding @code{->} to the @code{test} line and match the
|
||||||
|
expected error text in an @code{__ERROR__} section:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
2014/01/01 * Acme Corporation
|
||||||
|
Assets:Bank:Checking ¤ 1.000,00
|
||||||
|
[Fund:Vacation] ¤ 300,00
|
||||||
|
[Fund:Studies] ¤ 600,00
|
||||||
|
Income:Salary ¤ -2.000,00
|
||||||
|
|
||||||
|
test reg ->
|
||||||
|
__ERROR__
|
||||||
|
While parsing file "$FILE", line 5:
|
||||||
|
While balancing transaction from "$FILE", lines 1-5:
|
||||||
|
> 2014/01/01 * Acme Corporation
|
||||||
|
> Assets:Bank:Checking ¤ 1.000,00
|
||||||
|
> [Fund:Vacation] ¤ 300,00
|
||||||
|
> [Fund:Studies] ¤ 600,00
|
||||||
|
> Income:Salary ¤ -2.000,00
|
||||||
|
Unbalanced remainder is:
|
||||||
|
¤ -100,00
|
||||||
|
Amount to balance against:
|
||||||
|
¤ 1.900,00
|
||||||
|
Error: Transaction does not balance
|
||||||
|
end test
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
A special @code{$FILE} variable can be used to match the journal filename
|
||||||
|
used during the test.
|
||||||
|
|
||||||
|
To add new tests to the test suite use the rebuild_cache option for the
|
||||||
|
build tool you use, for example @code{make rebuild_cache}, now the
|
||||||
|
new tests can be run as documented in @ref{Running Tests}.
|
||||||
|
|
||||||
@node Major Changes from version 2.6, Example Journal File, Ledger for Developers, Top
|
@node Major Changes from version 2.6, Example Journal File, Ledger for Developers, Top
|
||||||
@chapter Major Changes from version 2.6
|
@chapter Major Changes from version 2.6
|
||||||
|
|
||||||
|
|
@ -9636,6 +9712,21 @@ $ ledger register Checking --sort d -d 'd>[2011/04/01]' until 2011/05/25
|
||||||
(Liabilities:Tithe Owed) -1.0
|
(Liabilities:Tithe Owed) -1.0
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Baseline Test Types::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Baseline Test Types, , Cookbook, Miscellaneous Notes
|
||||||
|
@section Baseline Test Types
|
||||||
|
|
||||||
|
@multitable @columnfractions .3 .7
|
||||||
|
@headitem Type @tab Use
|
||||||
|
@item @code{cmd} @tab Ledger commands like @code{register} or @code{balance}
|
||||||
|
@item @code{dir} @tab ?
|
||||||
|
@item @code{feat} @tab ?
|
||||||
|
@item @code{opt} @tab Ledger options such as @option{--period} or @option{--format}
|
||||||
|
@end multitable
|
||||||
|
|
||||||
@node Concepts Index, Commands & Options Index, Miscellaneous Notes, Top
|
@node Concepts Index, Commands & Options Index, Miscellaneous Notes, Top
|
||||||
@unnumbered Concepts Index
|
@unnumbered Concepts Index
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue