47 lines
		
	
	
		
			1019 B
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1019 B
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env expect
 | |
| 
 | |
| # Run hledger-ui in the background without needing an interactive
 | |
| # shell, passing through any arguments, and dump its first screen* as
 | |
| # cleaned up plain text. This allows hledger-ui's output to be tested.
 | |
| #
 | |
| # * Or multiple screens, from processing the inputs below.
 | |
| 
 | |
| 
 | |
| set timeout 1
 | |
| log_user 0
 | |
| # we'll pipe what we capture through hledgerui2txt
 | |
| set filter [open |./hledgerui2txt w]
 | |
| 
 | |
| spawn hledger-ui $argv
 | |
| 
 | |
| # warning: expect-ing output of a brick app is tricky.
 | |
| # It draws parts of the screen, in layers, with embedded
 | |
| # escape codes.
 | |
| 
 | |
| # wait for the first screen to draw (to the bottom line)
 | |
| # expect "account balances"
 | |
| # expect timeout
 | |
| # expect -re ":quit ─+"
 | |
| #expect ":quit"
 | |
| puts $filter $expect_out(buffer)
 | |
| 
 | |
| # send 1
 | |
| # expect -re ":quit ─+"
 | |
| # puts $expect_out(buffer)
 | |
| 
 | |
| # send 2
 | |
| # expect -re ":quit ─+"
 | |
| # # the last output must be handled differently
 | |
| # set out $expect_out(buffer)
 | |
| 
 | |
| # send q
 | |
| # expect eof
 | |
| 
 | |
| # # send 2
 | |
| # # expect -re ":quit"
 | |
| 
 | |
| # puts $filter $out
 | |
| close $filter
 | |
| 
 | |
| # interact
 |