summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2020-02-28 15:38:39 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2020-02-28 18:21:37 +0900
commit7bf1f2cc8470920221342d39f8789a4a97153a6f (patch)
tree6bb99dc532df6b4bb1b922f9c5b33d36f1255048
parentafa2c4e0afff5c370df4881bd7317a3a439af83f (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
-rwxr-xr-xtest/test_go.rb82
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(' ') %>