diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2020-02-28 15:38:39 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2020-02-28 18:21:37 +0900 |
commit | 7bf1f2cc8470920221342d39f8789a4a97153a6f (patch) | |
tree | 6bb99dc532df6b4bb1b922f9c5b33d36f1255048 /test | |
parent | afa2c4e0afff5c370df4881bd7317a3a439af83f (diff) |
Clean up test shell initialization
- Fix 'make docker-test'
- Set fish_history to an empty string since 'fish --private' is not
available prior to fish 3.0
Diffstat (limited to 'test')
-rwxr-xr-x | test/test_go.rb | 82 |
1 files changed, 55 insertions, 27 deletions
diff --git a/test/test_go.rb b/test/test_go.rb index 9a24288d..d2d31532 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -9,13 +9,23 @@ require 'minitest/autorun' require 'fileutils' require 'English' require 'shellwords' - +require 'erb' +require 'tempfile' + +TEMPLATE = DATA.read +UNSETS = %w[ + FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS + FZF_CTRL_T_COMMAND FZF_CTRL_T_OPTS + FZF_ALT_C_COMMAND + FZF_ALT_C_OPTS FZF_CTRL_R_OPTS + fish_history +].freeze DEFAULT_TIMEOUT = 20 FILE = File.expand_path(__FILE__) -base = File.expand_path('../../', __FILE__) -Dir.chdir base -FZF = "FZF_DEFAULT_OPTS= FZF_DEFAULT_COMMAND= #{base}/bin/fzf" +BASE = File.expand_path('..', __dir__) +Dir.chdir(BASE) +FZF = "FZF_DEFAULT_OPTS= FZF_DEFAULT_COMMAND= #{BASE}/bin/fzf" class NilClass def include?(_str) @@ -42,22 +52,33 @@ end class Shell class << self - def unsets - 'unset FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS FZF_CTRL_T_COMMAND FZF_CTRL_T_OPTS FZF_ALT_C_COMMAND FZF_ALT_C_OPTS FZF_CTRL_R_OPTS;' - end - def bash - 'PS1= PROMPT_COMMAND= bash --rcfile ~/.fzf.bash' + @bash ||= + begin + bashrc = '/tmp/fzf.bash' + File.open(bashrc, 'w') do |f| + f.puts(ERB.new(TEMPLATE).result(binding)) + end + + "bash --rcfile #{bashrc}" + end end def zsh - FileUtils.mkdir_p '/tmp/fzf-zsh' - FileUtils.cp File.expand_path('~/.fzf.zsh'), '/tmp/fzf-zsh/.zshrc' - 'PS1= PROMPT_COMMAND= HISTSIZE=100 ZDOTDIR=/tmp/fzf-zsh zsh' + @zsh ||= + begin + zdotdir = '/tmp/fzf-zsh' + FileUtils.rm_rf(zdotdir) + FileUtils.mkdir_p(zdotdir) + File.open("#{zdotdir}/.zshrc", 'w') do |f| + f.puts(ERB.new(TEMPLATE).result(binding)) + end + "ZDOTDIR=#{zdotdir} zsh" + end end def fish - 'fish' + UNSETS.map { |v| v + '= ' }.join + 'fish' end end end @@ -68,21 +89,10 @@ class Tmux attr_reader :win def initialize(shell = :bash) - @win = - case shell - when :bash - go("new-window -d -P -F '#I' '#{Shell.unsets + Shell.bash}'").first - when :zsh - go("new-window -d -P -F '#I' '#{Shell.unsets + Shell.zsh}'").first - when :fish - go("new-window -d -P -F '#I' '#{Shell.unsets + Shell.fish}'").first - else - raise "Unknown shell: #{shell}" - end + @win = go("new-window -d -P -F '#I' '#{Shell.send(shell)}'").first go("set-window-option -t #{@win} pane-base-index 0") - @lines = `tput lines`.chomp.to_i - return unless shell == :fish + send_keys('function fish_prompt; end; clear', :Enter) self.until(&:empty?) end @@ -124,7 +134,7 @@ class Tmux go("capture-pane -t #{win}.#{pane} \\; save-buffer #{TEMPNAME} 2> /dev/null") $CHILD_STATUS.exitstatus.zero? end - File.read(TEMPNAME).split($INPUT_RECORD_SEPARATOR)[0, @lines].reverse.drop_while(&:empty?).reverse + File.read(TEMPNAME).split($INPUT_RECORD_SEPARATOR).reverse.drop_while(&:empty?).reverse end def until(refresh = false, pane = 0) @@ -2098,3 +2108,21 @@ class TestFish < TestBase @tmux = Tmux.new :fish end end + +__END__ +# Setup fzf +# --------- +if [[ ! "$PATH" == *<%= BASE %>/bin* ]]; then + export PATH="${PATH:+${PATH}:}<%= BASE %>/bin" +fi + +# Auto-completion +# --------------- +[[ $- == *i* ]] && source "<%= BASE %>/shell/completion.<%= __method__ %>" 2> /dev/null + +# Key bindings +# ------------ +source "<%= BASE %>/shell/key-bindings.<%= __method__ %>" + +PS1= PROMPT_COMMAND= HISTFILE= HISTSIZE=100 +unset <%= UNSETS.join(' ') %> |