Quit on `mod1+q' key binding
* Loop our runner until it is "stopped"; * Use the event dispatcher to stop the runner on `mod1+q' key press; * Tell the manager to grab the `q' key.
This commit is contained in:
@@ -15,6 +15,10 @@ module Uh
|
||||
described_class.run arguments, stdout: stdout, stderr: stderr
|
||||
end
|
||||
|
||||
# FIXME: remove this hack we currently need to prevent the Runner from
|
||||
# blocking.
|
||||
before { allow(Runner).to receive :run }
|
||||
|
||||
it 'builds a new CLI with given arguments' do
|
||||
expect(described_class)
|
||||
.to receive(:new).with(arguments, stdout: stdout).and_call_original
|
||||
|
@@ -5,15 +5,23 @@ module Uh
|
||||
subject(:runner) { described_class.new env }
|
||||
|
||||
describe '.run' do
|
||||
subject(:run) { described_class.run env }
|
||||
subject(:run) { described_class.run env, stopped: true }
|
||||
|
||||
it 'builds a new Runner with given env' do
|
||||
expect(described_class).to receive(:new).with(env).and_call_original
|
||||
expect(described_class)
|
||||
.to receive(:new).with(env, anything).and_call_original
|
||||
run
|
||||
end
|
||||
|
||||
it 'registers event hooks' do
|
||||
runner.stop!
|
||||
allow(described_class).to receive(:new) { runner }
|
||||
expect(runner).to receive(:register_event_hooks)
|
||||
run
|
||||
end
|
||||
|
||||
it 'connects the manager' do
|
||||
runner
|
||||
runner.stop!
|
||||
allow(described_class).to receive(:new) { runner }
|
||||
expect(runner).to receive(:connect_manager)
|
||||
run
|
||||
@@ -62,7 +70,19 @@ module Uh
|
||||
end
|
||||
end
|
||||
|
||||
describe '#register_event_hooks' do
|
||||
context 'key bindings' do
|
||||
it 'registers key bindings event hooks' do
|
||||
runner.register_event_hooks
|
||||
expect(runner.events[:key, :q]).not_to be_empty
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#connect_manager' do
|
||||
let(:manager) { instance_spy Manager }
|
||||
subject(:runner) { described_class.new env, manager: manager }
|
||||
|
||||
it 'connects the manager' do
|
||||
expect(runner.manager).to receive :connect
|
||||
runner.connect_manager
|
||||
@@ -72,6 +92,11 @@ module Uh
|
||||
expect(env).to receive(:log).with /connected/i
|
||||
runner.connect_manager
|
||||
end
|
||||
|
||||
it 'tells the manager to grab keys' do
|
||||
expect(runner.manager).to receive(:grab_key).with :q
|
||||
runner.connect_manager
|
||||
end
|
||||
end
|
||||
|
||||
describe '#run_until' do
|
||||
|
Reference in New Issue
Block a user