diff options
Diffstat (limited to 'spec/prompt_spec.rb')
-rw-r--r-- | spec/prompt_spec.rb | 90 |
1 files changed, 12 insertions, 78 deletions
diff --git a/spec/prompt_spec.rb b/spec/prompt_spec.rb index c339282f..4ecdc760 100644 --- a/spec/prompt_spec.rb +++ b/spec/prompt_spec.rb @@ -23,7 +23,7 @@ describe Pry::Prompt do it "adds a new prompt" do described_class.add(:my_prompt) - expect(described_class[:my_prompt]).to be_a(Hash) + expect(described_class[:my_prompt]).to be_a(described_class) end it "raises error when separators.size != 2" do @@ -42,87 +42,21 @@ describe Pry::Prompt do end end - describe "one-parameter prompt proc" do - it 'should get full config object' do - config = nil - redirect_pry_io(InputTester.new("exit-all")) do - Pry.start(self, prompt: proc { |v| config = v }) - end - expect(config.is_a?(Pry::Config)).to eq true - end - - it 'should get full config object, when using a proc array' do - config1 = nil - redirect_pry_io(InputTester.new("exit-all")) do - Pry.start(self, prompt: [proc { |v| config1 = v }, proc { |v| _config2 = v }]) - end - expect(config1.is_a?(Pry::Config)).to eq true - end - - it 'should receive correct data in the config object' do - config = nil - redirect_pry_io(InputTester.new("def hello", "exit-all")) do - Pry.start(self, prompt: proc { |v| config = v }) - end - - expect(config.eval_string).to match(/def hello/) - expect(config.nesting_level).to eq 0 - expect(config.expr_number).to eq 1 - expect(config.cont).to eq true - expect(config._pry_.is_a?(Pry)).to eq true - expect(config.object).to eq self - end - - specify "object is Hash when current binding is a Hash" do - config = nil - h = {} - redirect_pry_io(InputTester.new("exit-all")) do - Pry.start(h, prompt: proc { |v| config = v }) - end - expect(config.object).to be(h) - end - end - - describe "BACKWARDS COMPATIBILITY: 3 parameter prompt proc" do - it 'should get 3 parameters' do - o = n = p = nil - redirect_pry_io(InputTester.new("exit-all")) do - Pry.start(:test, prompt: proc { |obj, nesting, _pry_| - o, n, p = obj, nesting, _pry_ }) - end - expect(o).to eq :test - expect(n).to eq 0 - expect(p.is_a?(Pry)).to eq true - end + describe "prompt invocation" do + let(:pry) { Pry.new } - it 'should get 3 parameters, when using proc array' do - o1 = n1 = p1 = nil - redirect_pry_io(InputTester.new("exit-all")) do - Pry.start(:test, prompt: [proc { |obj, nesting, _pry_| - o1, n1, p1 = obj, nesting, _pry_ }, - proc { |obj, nesting, _pry_| - _o2, _n2, _p2 = obj, nesting, _pry_ }]) + let(:enum) do + Enumerator.new do |y| + range = ('a'..'z').to_enum + loop { y << range.next } end - expect(o1).to eq :test - expect(n1).to eq 0 - expect(p1.is_a?(Pry)).to eq true end - end - it "can compute prompt name dynamically" do - config = nil - redirect_pry_io(InputTester.new("def hello", "exit-all")) do - Pry.start(self, prompt: proc { |v| config = v }) + it "computes prompt name dynamically" do + proc = described_class[:default].wait_proc + pry.config.prompt_name = Pry.lazy { enum.next } + expect(proc.call(Object.new, 1, pry, '>')).to eq('[1] a(#<Object>):1> ') + expect(proc.call(Object.new, 1, pry, '>')).to eq('[1] b(#<Object>):1> ') end - - enum = Enumerator.new do |y| - count = 100 - loop { y << count += 1 } - end - config._pry_.config.prompt_name = Pry.lazy { enum.next } - - proc = described_class[:default][:value].first - expect(proc.call(Object.new, 1, config._pry_)).to eq('[1] 101(#<Object>):1> ') - expect(proc.call(Object.new, 1, config._pry_)).to eq('[1] 102(#<Object>):1> ') end end |