- 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
|