2019-04-14 20:18:17 -04:00
|
|
|
RSpec.describe Pry::ControlDHandler do
|
|
|
|
context "when given eval string is non-empty" do
|
|
|
|
let(:eval_string) { 'hello' }
|
|
|
|
let(:pry_instance) { Pry.new }
|
|
|
|
|
|
|
|
it "clears input buffer" do
|
|
|
|
described_class.default(eval_string, pry_instance)
|
|
|
|
expect(eval_string).to be_empty
|
2012-06-16 14:12:10 -04:00
|
|
|
end
|
2019-04-14 20:18:17 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
context "when given eval string is empty & pry instance has one binding" do
|
|
|
|
let(:eval_string) { '' }
|
|
|
|
let(:pry_instance) { Pry.new.tap { |p| p.binding_stack = [binding] } }
|
|
|
|
|
|
|
|
it "throws :breakout" do
|
|
|
|
expect { described_class.default(eval_string, pry_instance) }
|
|
|
|
.to throw_symbol(:breakout)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "clears binding stack" do
|
|
|
|
expect { described_class.default(eval_string, pry_instance) }
|
|
|
|
.to throw_symbol
|
|
|
|
expect(pry_instance.binding_stack).to be_empty
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context "when given eval string is empty & pry instance has 2+ bindings" do
|
|
|
|
let(:eval_string) { '' }
|
|
|
|
let(:binding1) { binding }
|
|
|
|
let(:binding2) { binding }
|
|
|
|
let(:binding_stack) { [binding1, binding2] }
|
2012-06-16 14:12:10 -04:00
|
|
|
|
2019-04-14 20:18:17 -04:00
|
|
|
let(:pry_instance) do
|
|
|
|
Pry.new.tap { |p| p.binding_stack = binding_stack }
|
2012-06-16 14:12:10 -04:00
|
|
|
end
|
|
|
|
|
2019-04-14 20:18:17 -04:00
|
|
|
it "saves a dup of the current binding stack in the 'cd' command" do
|
|
|
|
described_class.default(eval_string, pry_instance)
|
2019-04-29 12:21:54 -04:00
|
|
|
cd_state = pry_instance.commands['cd'].state
|
2019-04-14 20:18:17 -04:00
|
|
|
expect(cd_state.old_stack).to eq([binding1, binding2])
|
2012-06-16 14:12:10 -04:00
|
|
|
end
|
|
|
|
|
2019-04-14 20:18:17 -04:00
|
|
|
it "pops the binding off the stack" do
|
|
|
|
described_class.default(eval_string, pry_instance)
|
|
|
|
expect(pry_instance.binding_stack).to eq([binding1])
|
2012-06-16 14:12:10 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|