81 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Testing parse error messages for accuracy and usefulness.
 | |
| 
 | |
| # A journal with an incomplete date.
 | |
| <
 | |
| 2018
 | |
| 
 | |
| # XXX depends on the executable being named "hledger" (prepended by GHC.Err.error)
 | |
| # 1.
 | |
| $ hledger -f - print
 | |
| >2
 | |
| hledger: -:1:5:
 | |
|   |
 | |
| 1 | 2018
 | |
|   |     ^
 | |
| unexpected newline
 | |
| expecting date separator or digit
 | |
| 
 | |
| >=1
 | |
| 
 | |
| # A journal with an unbalanced transaction.
 | |
| <
 | |
| 2018/1/1
 | |
|   a  1
 | |
| 
 | |
| # 2. When read from stdin, this example actually passes because hledger tries all readers.
 | |
| # If they all failed, it would show the error from the first (journal reader).
 | |
| # But in this case the timedot reader can parse it.
 | |
| $ hledger -f - print
 | |
| >
 | |
| 2018/01/01 *
 | |
|     (a)            1.00
 | |
| 
 | |
| >=
 | |
| 
 | |
| # 3. So in these tests we must sometimes force the desired format, like so.
 | |
| # Now we see the error from the journal reader.
 | |
| $ hledger -f journal:- print
 | |
| >2 /could not balance this transaction \(real postings are off by 1\)/
 | |
| >=1
 | |
| 
 | |
| # 4. We expect to have reference to line number with last posting
 | |
| $ hledger -f journal:- print
 | |
| >2 /\<2\>/
 | |
| >=1
 | |
| 
 | |
| # A posting without two spaces between account and amount.
 | |
| <
 | |
| 2018/1/1
 | |
|   (a) 1
 | |
| 
 | |
| # 5. hledger doesn't detect this as an error directly, it parses account name "(a) 1" and
 | |
| # amount 0 here.
 | |
| $ hledger -f - print -x
 | |
| 2018/01/01
 | |
|     (a) 1               0
 | |
| 
 | |
| >=
 | |
| 
 | |
| # 6. Two (or more) postings with implicit amount cannot be balanced.
 | |
| <
 | |
| 2018/1/1
 | |
|   a  1
 | |
|   b
 | |
|   c
 | |
| 
 | |
| $ hledger -f journal:- print
 | |
| >2 /could not balance this transaction - can't have more than one real posting with no amount/
 | |
| >=1
 | |
| 
 | |
| # 7. Two (or more) virtual postings with implicit amount cannot be balanced.
 | |
| # (And the error message contains line numbers).
 | |
| <
 | |
| 2018/1/1
 | |
|   [a]  1
 | |
|   [b]
 | |
|   [c]
 | |
| 
 | |
| $ hledger -f journal:- print
 | |
| >2 /lines 1-4/
 | |
| >=1
 |