mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
18c45d26c5
This will greatly ease Pry support on Ruby 3.0 (when it's out).
60 lines
1.6 KiB
Ruby
60 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe Pry::ControlDHandler do
|
|
context "when given eval string is non-empty" do
|
|
let(:pry_instance) do
|
|
Pry.new.tap do |p|
|
|
p.eval_string = 'hello'
|
|
end
|
|
end
|
|
|
|
it "clears input buffer" do
|
|
described_class.default(pry_instance)
|
|
expect(pry_instance.eval_string).to be_empty
|
|
end
|
|
end
|
|
|
|
context "when given eval string is empty & pry instance has one binding" do
|
|
let(:pry_instance) do
|
|
Pry.new.tap do |p|
|
|
p.eval_string = ''
|
|
p.binding_stack = [binding]
|
|
end
|
|
end
|
|
|
|
it "throws :breakout" do
|
|
expect { described_class.default(pry_instance) }
|
|
.to throw_symbol(:breakout)
|
|
end
|
|
|
|
it "clears binding stack" do
|
|
expect { described_class.default(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(:binding1) { binding }
|
|
let(:binding2) { binding }
|
|
let(:binding_stack) { [binding1, binding2] }
|
|
|
|
let(:pry_instance) do
|
|
Pry.new.tap do |p|
|
|
p.eval_string = ''
|
|
p.binding_stack = binding_stack
|
|
end
|
|
end
|
|
|
|
it "saves a dup of the current binding stack in the 'cd' command" do
|
|
described_class.default(pry_instance)
|
|
cd_state = pry_instance.commands['cd'].state
|
|
expect(cd_state.old_stack).to eq([binding1, binding2])
|
|
end
|
|
|
|
it "pops the binding off the stack" do
|
|
described_class.default(pry_instance)
|
|
expect(pry_instance.binding_stack).to eq([binding1])
|
|
end
|
|
end
|
|
end
|