55 lines
1.2 KiB
Ruby
55 lines
1.2 KiB
Ruby
|
require 'pry'
|
||
|
require 'rspec/wait'
|
||
|
require 'terminal_session'
|
||
|
require 'tempfile'
|
||
|
|
||
|
RSpec.shared_context 'terminal session' do
|
||
|
let(:term_opts) { {} }
|
||
|
let(:session) { TerminalSession.new(term_opts) }
|
||
|
let(:before_sourcing) { -> {} }
|
||
|
let(:after_sourcing) { -> {} }
|
||
|
let(:options) { [] }
|
||
|
|
||
|
around do |example|
|
||
|
before_sourcing.call
|
||
|
session.run_command(['source zsh-autosuggestions.zsh', *options].join('; '))
|
||
|
after_sourcing.call
|
||
|
session.clear_screen
|
||
|
|
||
|
example.run
|
||
|
|
||
|
session.destroy
|
||
|
end
|
||
|
|
||
|
def with_history(*commands, &block)
|
||
|
Tempfile.create do |f|
|
||
|
f.write(commands.map{|c| c.gsub("\n", "\\\n")}.join("\n"))
|
||
|
f.flush
|
||
|
|
||
|
session.run_command('fc -p')
|
||
|
session.run_command("fc -R #{f.path}")
|
||
|
|
||
|
session.clear_screen
|
||
|
|
||
|
yield block
|
||
|
|
||
|
session.send_keys('C-c')
|
||
|
session.run_command('fc -P')
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RSpec.configure do |config|
|
||
|
config.expect_with :rspec do |expectations|
|
||
|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
||
|
end
|
||
|
|
||
|
config.mock_with :rspec do |mocks|
|
||
|
mocks.verify_partial_doubles = true
|
||
|
end
|
||
|
|
||
|
config.wait_timeout = 2
|
||
|
|
||
|
config.include_context 'terminal session'
|
||
|
end
|