summaryrefslogtreecommitdiff
path: root/spec/prompt_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/prompt_spec.rb')
-rw-r--r--spec/prompt_spec.rb90
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