hledger/tests/misc/account-aliases.test
Mykola Orliuk 015b764d00 Preserve implicit amounts and prices the way user wrote them in output of print command (#471)
* Remember original postings during infer and pivot

This includes such functions like:
- inferFromAssignment
- inferBalancingAmount
- inferBalancingPrices
- pivotPosting

* Use original postings for hledger print

- Introduce "--explicit" option for "print" command which brings back
  old behavior when every inferred number being printed.
- Make "print" by default print original postings without inferred
  amounts. But use effective account name to have effect from aliases.
- Instruct shell tests with an new expected output or to use
  --explicit option when inferred amounts are checked.

Resolves simonmichael/hledger#442
2017-01-13 07:25:44 -08:00

124 lines
1.8 KiB
Plaintext

# alias-related tests
# simple aliases
# simple alias directive
hledger -f- accounts
<<<
alias checking = assets:bank:checking
1/1
(checking:a) 1
>>>
assets:bank:checking:a
>>>=0
# simple alias matches whole account name components only
hledger -f- accounts
<<<
alias a:b = A:B
1/1
(a:b:c) 1 ; should match this
1/1
(a:bb:d) 1 ; should not match this
>>>
A:B:c
a:bb:d
>>>=0
# a simple alias matching the whole account name works
hledger -f- accounts
<<<
alias a:b = A:B
1/1
(a:b) 1
>>>
A:B
>>>=0
# regular expression aliases
# regex alias directive
hledger -f- accounts
<<<
alias /^(.+):bank:([^:]+):?(.*)/ = \1:\2 \3
1/1
(assets:bank:B:checking:a) 1
>>>
assets:B checking:a
>>>=0
# regex alias pattern is a case-insensitive regular expression
# matching anywhere in the account name. All matching aliases are
# applied to an account name in turn, most recently seen first. The
# replacement can replace multiple matches within the account name.
# The replacement pattern supports numeric backreferences.
#
hledger -f- print
<<<
alias /a/ = b
2011/01/01
A a 1
a a 2
c
alias /A (.)/=\1
2011/01/01
A a 1
a a 2
c
>>>
2011/01/01
b b 1
b b 2
c
2011/01/01
b 1
b 2
c
>>>=0
# CLI
# --alias command-line options are applied in the order written.
# Spaces are allowed if quoted.
#
hledger -f- print --alias '/A (.)/=a' --alias /a/=b
<<<
2011/01/01
a a 1
A a 2
c
>>>
2011/01/01
b 1
b 2
c
>>>=0
# alias options are applied after alias directives.
#
hledger -f- print --alias /a/=A --alias /B/=C --alias /B/=D --alias /C/=D
<<<
alias /^a/=B
alias /^a/=E
alias E=F
2011/01/01
[a:x] 1
[x:a:x]
>>>
2011/01/01
[E:x] 1
[x:A:x]
>>>2
>>>=0