pry--pry/spec/pry_repl_spec.rb

103 lines
2.2 KiB
Ruby
Raw Normal View History

require 'helper'
2012-12-24 06:06:06 +00:00
describe "The whole thing" do
it "should let you run commands in the middle of multiline expressions" do
2012-12-24 06:06:06 +00:00
ReplTester.start do
input 'def a'
input '!'
output /^Input buffer cleared/
input '5'
output '=> 5'
end
end
2012-12-23 08:03:29 +00:00
it "should rescue exceptions" do
ReplTester.start do
input 'raise "lorum"'
output /^RuntimeError: lorum/
input 'raise java.lang.Exception.new("foo")'
expected = defined?(java.lang.Exception) ? /Exception: foo/ : /^NameError: /
output expected
input 'raise java.io.IOException.new("bar")'
expected = defined?(java.io.IOException) ? /IOException: bar/ : /^NameError: /
output expected
end
end
describe "eval_string and binding_stack" do
2012-12-24 03:58:18 +00:00
it "shouldn't break if we start a nested REPL" do
ReplTester.start do
input 'Pry::REPL.new(_pry_, :target => 10).start'
output ''
prompt /10.*> $/
2012-12-23 08:03:29 +00:00
input 'self'
output '=> 10'
2012-12-23 08:03:29 +00:00
input nil # Ctrl-D
output ''
2012-12-23 08:03:29 +00:00
input 'self'
output '=> main'
end
end
2012-12-24 03:58:18 +00:00
it "shouldn't break if we start a nested instance" do
ReplTester.start do
input 'Pry.start(10)'
output ''
prompt /10.*> $/
input 'self'
output '=> 10'
input nil # Ctrl-D
output '=> nil' # return value of Pry session
input 'self'
output '=> main'
end
end
it "shouldn't break if we pop bindings in Ruby" do
ReplTester.start do
input 'cd 10'
output ''
prompt /10.*> $/
input '_pry_.binding_stack.pop'
output /^=> #<Binding/
prompt /main.*> $/
input '_pry_.binding_stack.pop'
output /^=> #<Binding/
assert_exited
end
end
it "should immediately evaluate eval_string after cmd if complete" do
set = Pry::CommandSet.new do
import Pry::Commands
command 'hello!' do
eval_string.replace('"hello"')
end
end
ReplTester.start(:commands => set) do
input 'def x'
output ''
2012-12-24 03:58:18 +00:00
prompt /\* $/
input 'hello!'
output '=> "hello"'
prompt /> $/
end
2012-12-23 08:03:29 +00:00
end
end
end