hledger/hledger-ui/test/uitest.expect
2020-11-15 12:17:00 -08:00

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