# vim: set filetype=expect: # We're going to use three history files, including the default, to verify # that the fish_history variable works as expected. set default_histfile "../test/data/fish/fish_history" set my_histfile "../test/data/fish/my_history" set env_histfile "../test/data/fish/env_history" # ============= # Verify that if we spawn fish with no fish_history env var it uses the # default file. # ============= set fish_pid [spawn $fish] expect_prompt # Verify that a command is recorded in the default history file. set cmd1 "echo $fish_pid default histfile" set hist_line "- cmd: $cmd1" send "$cmd1\r" expect_prompt # TODO: Figure out why this `history --save` is only needed in one of the # three Travis CI build environments and neither of my OS X or Ubuntu servers. send "history --save\r" expect_prompt send "grep '^$hist_line' $default_histfile\r" expect_prompt -re "\r\n$hist_line\r\n" { puts "cmd1 found in default histfile" } unmatched { puts stderr "cmd1 not found in default histfile" } # Switch to a new history file and verify it is written to and the default # history file is not written to. set cmd2 "echo $fish_pid my histfile" set hist_line "- cmd: $cmd2" send "set fish_history my\r" expect_prompt send "$cmd2\r" expect_prompt send "grep '^$hist_line' $my_histfile\r" expect_prompt -re "\r\n$hist_line\r\n" { puts "cmd2 found in my histfile" } unmatched { puts stderr "cmd2 not found in my histfile" } # We expect this grep to fail to find the pattern and thus the expect_prompt # block is inverted. send "grep '^$hist_line' $default_histfile\r" expect_prompt -re "\r\n$hist_line\r\n" { puts stderr "cmd2 found in default histfile" } unmatched { puts "cmd2 not found in default histfile" } # Switch back to the default history file. set cmd3 "echo $fish_pid default histfile again" set hist_line "- cmd: $cmd3" send "set fish_history default\r" expect_prompt send "$cmd3\r" expect_prompt # TODO: Figure out why this `history --save` is only needed in one of the # three Travis CI build environments and neither of my OS X or Ubuntu servers. send "history --save\r" expect_prompt send "grep '^$hist_line' $default_histfile\r" expect_prompt -re "\r\n$hist_line\r\n" { puts "cmd3 found in default histfile" } unmatched { puts stderr "cmd3 not found in default histfile" } # We expect this grep to fail to find the pattern and thus the expect_prompt # block is inverted. send "grep '^$hist_line' $my_histfile\r" expect_prompt -re "\r\n$hist_line\r\n" { puts stderr "cmd3 found in my histfile" } unmatched { puts "cmd3 not found in my histfile" } # ============= # Verify that if we spawn fish with a HISTFILE env var it uses that file. # ============= # Start by shutting down the previous shell. send "exit\r" expect eof wait # Set the fish_history env var. set ::env(fish_history) env # Spawn a new shell. set prompt_counter 1 set fish_pid [spawn $fish] expect_prompt # Verify that the new fish shell is using the fish_history value for history. set cmd4 "echo $fish_pid env histfile" set hist_line "- cmd: $cmd4" send "$cmd4\r" expect_prompt # TODO: Figure out why this `history --save` is only needed in one of the # three Travis CI build environments and neither of my OS X or Ubuntu servers. # send "history --save\r" # expect_prompt send "grep '^$hist_line' $env_histfile\r" expect_prompt -re "\r\n$hist_line\r\n" { puts "cmd4 found in env histfile" } unmatched { puts stderr "cmd4 not found in env histfile" } # We expect this grep to fail to find the pattern and thus the expect_prompt # block is inverted. send "grep '^$hist_line' $default_histfile\r" expect_prompt -re "\r\n$hist_line\r\n" { puts stderr "cmd4 found in default histfile" } unmatched { puts "cmd4 not found in default histfile" }