Fix presumably copy-paste errors timeclock format has only timeclock lines or empty/comment lines Update test format to v3, add new tests Throw error on unexpected clock codes in timeclock format Fix missing case in pattern matching
		
			
				
	
	
		
			165 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # 1. a timeclock session is parsed as a similarly-named transaction with one virtual posting
 | |
| <
 | |
| i 2009/1/1 08:00:00
 | |
| o 2009/1/1 09:00:00 stuff on checkout record  is ignored
 | |
| 
 | |
| i 2009/1/2 08:00:00 account name
 | |
| o 2009/1/2 09:00:00
 | |
| i 2009/1/3 08:00:00 some:account name  and a description
 | |
| o 2009/1/3 09:00:00
 | |
| $ hledger -f - print
 | |
| >
 | |
| 2009-01-01 * 08:00-09:00
 | |
|     ()           1.00h
 | |
| 
 | |
| 2009-01-02 * 08:00-09:00
 | |
|     (account name)           1.00h
 | |
| 
 | |
| 2009-01-03 * and a description
 | |
|     (some:account name)           1.00h
 | |
| 
 | |
| >2
 | |
| >= 0
 | |
| 
 | |
| # For a missing clock-out, now is implied
 | |
| <
 | |
| i 2020/1/1 08:00
 | |
| $ hledger -f - balance
 | |
| > /./
 | |
| >= 0
 | |
| 
 | |
| # For a log not starting with clock-out, print error
 | |
| <
 | |
| o 2020/1/1 08:00
 | |
| $ hledger -f - balance
 | |
| >2 /line 1: expected timeclock code i/
 | |
| >= !0
 | |
| 
 | |
| # For a different log starting not with clock-out, print error
 | |
| <
 | |
| o 2020/1/1 08:00
 | |
| o 2020/1/1 09:00
 | |
| $ hledger -f - balance
 | |
| >2 /line 1: expected timeclock code i/
 | |
| >= !0
 | |
| 
 | |
| # For two consecutive clock-in, print error
 | |
| <
 | |
| i 2020/1/1 08:00
 | |
| i 2020/1/1 09:00
 | |
| $ hledger -f - balance
 | |
| >2 /line 2: expected timeclock code o/
 | |
| >= !0
 | |
| 
 | |
| ## TODO
 | |
| ## multi-day sessions get a new transaction for each day
 | |
| #hledger -f- print
 | |
| #<<<
 | |
| #i 2017/04/20 09:00:00 A
 | |
| #o 2017/04/20 17:00:00
 | |
| #i 2017/04/21 09:00:00 B
 | |
| #o 2017/04/21 17:00:00
 | |
| #i 2017/04/22 09:00:00 C
 | |
| #o 2017/04/22 17:00:00
 | |
| #>>>
 | |
| #>>>2
 | |
| #>>>=
 | |
| #
 | |
| ## unclosed sessions are automatically closed at report time
 | |
| ## TODO this output looks wrong
 | |
| #hledger -f- print
 | |
| #<<<
 | |
| #i 2017/04/20 09:00:00 A
 | |
| #o 2017/04/20 17:00:00
 | |
| #i 2017/04/21 09:00:00 B
 | |
| #o 2017/04/21 17:00:00
 | |
| #i 2017/04/22 09:00:00 C
 | |
| #o 2017/04/22 17:00:00
 | |
| #>>>
 | |
| #2017-04-20 * 09:00-17:00
 | |
| #    (A)         8.00h
 | |
| #
 | |
| #2017-04-21 * 09:00-23:59
 | |
| #    (B)        15.00h
 | |
| #
 | |
| #2017-04-22 * 00:00-09:00
 | |
| #    (B)         9.00h
 | |
| #
 | |
| #2017-04-22 * 17:00-23:59
 | |
| #    ()         7.00h
 | |
| #
 | |
| #2017-04-23 * 00:00-23:59
 | |
| #    ()        24.00h
 | |
| #
 | |
| #2017-04-24 * 00:00-23:59
 | |
| #    ()        24.00h
 | |
| #
 | |
| #2017-04-25 * 00:00-11:28
 | |
| #    ()        11.47h
 | |
| #
 | |
| #>>>2
 | |
| #>>>=
 | |
| 
 | |
| 
 | |
| # ledger timeclock example from #ledger
 | |
| # ==== consulting.timeclock
 | |
| # ; Time log for consulting sideline
 | |
| # ; All times UTC
 | |
| # i 2011/01/26 16:00:00 XXXX:Remote "IPMI Access" 
 | |
| # o 2011/01/26 16:15:00
 | |
| 
 | |
| # i 2011/01/26 17:45:00 XXXX:Onsite "Fix opty server" 
 | |
| # o 2011/01/26 20:00:00
 | |
| 
 | |
| # i 2011/01/27 18:00:00 XXXX:Remote "SSL certificate for www.YYYY.com"
 | |
| # o 2011/01/27 18:15:00
 | |
| 
 | |
| # ; vim:ts=2 sw=2 sts=2 et ft=ledger fdm=manual:
 | |
| # ==== consulting.dat
 | |
| # ; Ledger for Consulting sideline
 | |
| 
 | |
| # !account Consulting
 | |
| # !include consulting.timeclock
 | |
| # !end
 | |
| 
 | |
| 
 | |
| # 2010/02/27 (INV#2) XXXX Test Invoice
 | |
| #   Consulting:XXXX:Remote                -0.5h @ $75.00
 | |
| #   Consulting:XXXX:Onsite                -2.25h @ $100.00
 | |
| #   Receivable:Consulting:XXXX
 | |
| 
 | |
| 
 | |
| # ; vim:ts=2 sw=2 sts=2 et ft=ledger fdm=manual:
 | |
| # ==== command: ledger -f consulting.dat -s bal
 | |
| #               -2.25h  Consulting:XXXX:Onsite
 | |
| #                2.25h  Consulting:XXXX:Onsite "Fix opty server" 
 | |
| #               -30.0m  Consulting:XXXX:Remote
 | |
| #                15.0m  Consulting:XXXX:Remote "IPMI Access" 
 | |
| #                15.0m  Consulting:XXXX:Remote "SSL certificate for www.YYYY.com"
 | |
| #               $262.5  Receivable:Consulting:XXXX
 | |
| # --------------------
 | |
| #               $262.5  
 | |
| 
 | |
| # # timezone-related tests
 | |
| # # 1. as in ledger, historical prices may contain a time and timezone.
 | |
| # # hledger ignores them and uses 00:00 local time instead.
 | |
| # # XXX needs --value not --cost
 | |
| # hledgerdev -f - balance --no-total --cost
 | |
| # <<<
 | |
| # P 2011/01/01 00:00:00      A $1
 | |
| # P 2011/01/01 15:00:00-0100 A $2
 | |
| 
 | |
| # 2010/12/31
 | |
| #   (20101231)  1 A
 | |
| 
 | |
| # 2011/1/1
 | |
| #   (20110101)  1 A
 | |
| 
 | |
| # 2011/1/2
 | |
| #   (20110102)  1 A
 | |
| # >>>
 | |
| #                  1 A  20101231
 | |
| #                   $2  20110101
 | |
| #                   $2  20110102
 | |
| # >>>=0
 |