Rewrite `with_history` test helper to be more robust

Write mock history to a temp file and load it directly with `fc -R`
instead of running each command individually to build up the history.
This commit is contained in:
Eric Freese 2020-05-06 07:23:55 -06:00
parent 9ad039443f
commit e715ffb1ae
2 changed files with 14 additions and 16 deletions

View File

@ -1,11 +1,6 @@
describe 'a multi-line suggestion' do describe 'a multi-line suggestion' do
it 'should be displayed on multiple lines' do it 'should be displayed on multiple lines' do
with_history(-> { with_history("echo \"\n\"") do
session.send_string('echo "')
session.send_keys('enter')
session.send_string('"')
session.send_keys('enter')
}) do
session.send_keys('e') session.send_keys('e')
wait_for { session.content }.to eq("echo \"\n\"") wait_for { session.content }.to eq("echo \"\n\"")
end end

View File

@ -1,6 +1,7 @@
require 'pry' require 'pry'
require 'rspec/wait' require 'rspec/wait'
require 'terminal_session' require 'terminal_session'
require 'tempfile'
RSpec.shared_context 'terminal session' do RSpec.shared_context 'terminal session' do
let(:term_opts) { {} } let(:term_opts) { {} }
@ -21,11 +22,12 @@ RSpec.shared_context 'terminal session' do
end end
def with_history(*commands, &block) def with_history(*commands, &block)
session.run_command('fc -p') Tempfile.create do |f|
f.write(commands.map{|c| c.gsub("\n", "\\\n")}.join("\n"))
f.flush
commands.each do |c| session.run_command('fc -p')
c.respond_to?(:call) ? c.call : session.run_command(c) session.run_command("fc -R #{f.path}")
end
session.clear_screen session.clear_screen
@ -35,6 +37,7 @@ RSpec.shared_context 'terminal session' do
session.run_command('fc -P') session.run_command('fc -P')
end end
end end
end
RSpec.configure do |config| RSpec.configure do |config|
config.expect_with :rspec do |expectations| config.expect_with :rspec do |expectations|