module TestShell

Public Instance Methods

set_var(name, val) click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2157
def set_var(name, val)
  tmux.prepare
  tmux.send_keys "export #{name}='#{val}'", :Enter
  tmux.prepare
end
setup() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2148
def setup
  @tmux = Tmux.new(shell)
  tmux.prepare
end
teardown() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2153
def teardown
  @tmux.kill
end
test_alt_c() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2211
def test_alt_c
  tmux.prepare
  tmux.send_keys :Escape, :c
  lines = tmux.until { |lines| assert_operator lines.match_count, :>, 0 }
  expected = lines.reverse.find { |l| l.start_with?('> ') }[2..-1]
  tmux.send_keys :Enter
  tmux.prepare
  tmux.send_keys :pwd, :Enter
  tmux.until { |lines| assert lines[-1]&.end_with?(expected) }
end
test_alt_c_command() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2222
def test_alt_c_command
  set_var('FZF_ALT_C_COMMAND', 'echo /tmp')

  tmux.prepare
  tmux.send_keys 'cd /', :Enter

  tmux.prepare
  tmux.send_keys :Escape, :c
  tmux.until { |lines| assert_equal 1, lines.item_count }
  tmux.send_keys :Enter

  tmux.prepare
  tmux.send_keys :pwd, :Enter
  tmux.until { |lines| assert_equal '/tmp', lines[-1] }
end
test_ctrl_r() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2238
def test_ctrl_r
  tmux.prepare
  tmux.send_keys 'echo 1st', :Enter
  tmux.prepare
  tmux.send_keys 'echo 2nd', :Enter
  tmux.prepare
  tmux.send_keys 'echo 3d', :Enter
  tmux.prepare
  3.times do
    tmux.send_keys 'echo 3rd', :Enter
    tmux.prepare
  end
  tmux.send_keys 'echo 4th', :Enter
  tmux.prepare
  tmux.send_keys 'C-r'
  tmux.until { |lines| assert_operator lines.match_count, :>, 0 }
  tmux.send_keys 'e3d'
  # Duplicates removed: 3d (1) + 3rd (1) => 2 matches
  tmux.until { |lines| assert_equal 2, lines.match_count }
  tmux.until { |lines| assert lines[-3]&.end_with?(' echo 3d') }
  tmux.send_keys 'C-r'
  tmux.until { |lines| assert lines[-3]&.end_with?(' echo 3rd') }
  tmux.send_keys :Enter
  tmux.until { |lines| assert_equal 'echo 3rd', lines[-1] }
  tmux.send_keys :Enter
  tmux.until { |lines| assert_equal '3rd', lines[-1] }
end
test_ctrl_r_abort() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2280
def test_ctrl_r_abort
  skip("doesn't restore the original line when search is aborted pre Bash 4") if shell == :bash && `#{Shell.bash} --version`[/(?<= version )\d+/].to_i < 4
  %w[foo ' "].each do |query|
    tmux.prepare
    tmux.send_keys :Enter, query
    tmux.until { |lines| assert lines[-1]&.start_with?(query) }
    tmux.send_keys 'C-r'
    tmux.until { |lines| assert_equal "> #{query}", lines[-1] }
    tmux.send_keys 'C-g'
    tmux.until { |lines| assert lines[-1]&.start_with?(query) }
  end
end
test_ctrl_r_multiline() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2266
def test_ctrl_r_multiline
  tmux.send_keys 'echo "foo', :Enter, 'bar"', :Enter
  tmux.until { |lines| assert_equal %w[foo bar], lines[-2..-1] }
  tmux.prepare
  tmux.send_keys 'C-r'
  tmux.until { |lines| assert_equal '>', lines[-1] }
  tmux.send_keys 'foo bar'
  tmux.until { |lines| assert lines[-3]&.end_with?('bar"') }
  tmux.send_keys :Enter
  tmux.until { |lines| assert lines[-1]&.end_with?('bar"') }
  tmux.send_keys :Enter
  tmux.until { |lines| assert_equal %w[foo bar], lines[-2..-1] }
end
test_ctrl_t() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2169
def test_ctrl_t
  set_var('FZF_CTRL_T_COMMAND', 'seq 100')

  tmux.prepare
  tmux.send_keys 'C-t'
  tmux.until { |lines| assert_equal 100, lines.item_count }
  tmux.send_keys :Tab, :Tab, :Tab
  tmux.until { |lines| assert lines.any_include?(' (3)') }
  tmux.send_keys :Enter
  tmux.until { |lines| assert lines.any_include?('1 2 3') }
  tmux.send_keys 'C-c'
end
test_ctrl_t_unicode() click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2182
def test_ctrl_t_unicode
  writelines(tempname, ['fzf-unicode 테스트1', 'fzf-unicode 테스트2'])
  set_var('FZF_CTRL_T_COMMAND', "cat #{tempname}")

  tmux.prepare
  tmux.send_keys 'echo ', 'C-t'
  tmux.until { |lines| assert_equal 2, lines.item_count }
  tmux.send_keys 'fzf-unicode'
  tmux.until { |lines| assert_equal 2, lines.match_count }

  tmux.send_keys '1'
  tmux.until { |lines| assert_equal 1, lines.match_count }
  tmux.send_keys :Tab
  tmux.until { |lines| assert_equal 1, lines.select_count }

  tmux.send_keys :BSpace
  tmux.until { |lines| assert_equal 2, lines.match_count }

  tmux.send_keys '2'
  tmux.until { |lines| assert_equal 1, lines.match_count }
  tmux.send_keys :Tab
  tmux.until { |lines| assert_equal 2, lines.select_count }

  tmux.send_keys :Enter
  tmux.until { |lines| assert_match(/echo .*fzf-unicode.*1.* .*fzf-unicode.*2/, lines.join) }
  tmux.send_keys :Enter
  tmux.until { |lines| assert_equal 'fzf-unicode 테스트1 fzf-unicode 테스트2', lines[-1] }
end
unset_var(name) click to toggle source
# File lib/helpers/fzf/test/test_go.rb, line 2163
def unset_var(name)
  tmux.prepare
  tmux.send_keys "unset #{name}", :Enter
  tmux.prepare
end