2014-03-14 05:31:24 +01:00
|
|
|
require_relative 'helper'
|
2012-12-15 14:09:16 -08:00
|
|
|
|
2012-12-23 22:06:06 -08:00
|
|
|
describe "The whole thing" do
|
2012-12-15 14:09:16 -08:00
|
|
|
it "should let you run commands in the middle of multiline expressions" do
|
2012-12-23 22:06:06 -08:00
|
|
|
ReplTester.start do
|
|
|
|
input 'def a'
|
|
|
|
input '!'
|
2015-01-22 22:52:20 +01:00
|
|
|
output(/^Input buffer cleared/)
|
2012-12-23 22:06:06 -08:00
|
|
|
|
|
|
|
input '5'
|
|
|
|
output '=> 5'
|
|
|
|
end
|
2012-12-15 14:09:16 -08:00
|
|
|
end
|
2012-12-23 00:03:29 -08:00
|
|
|
|
2013-03-26 21:23:13 +08:00
|
|
|
it "should rescue exceptions" do
|
|
|
|
ReplTester.start do
|
|
|
|
input 'raise "lorum"'
|
2015-01-22 22:52:20 +01:00
|
|
|
output(/^RuntimeError: lorum/)
|
2013-03-26 21:23:13 +08:00
|
|
|
|
2013-11-23 18:11:29 -08:00
|
|
|
if defined?(java)
|
|
|
|
input 'raise java.lang.Exception.new("foo")'
|
2015-01-22 22:52:20 +01:00
|
|
|
output(/Exception: foo/)
|
2013-03-26 21:23:13 +08:00
|
|
|
|
2013-11-23 18:11:29 -08:00
|
|
|
input 'raise java.io.IOException.new("bar")'
|
2015-01-22 22:52:20 +01:00
|
|
|
output(/IOException: bar/)
|
2013-11-23 18:11:29 -08:00
|
|
|
end
|
2013-03-26 21:23:13 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-12-23 12:25:48 -08:00
|
|
|
describe "eval_string and binding_stack" do
|
2012-12-23 19:58:18 -08:00
|
|
|
it "shouldn't break if we start a nested REPL" do
|
2012-12-23 12:25:48 -08:00
|
|
|
ReplTester.start do
|
|
|
|
input 'Pry::REPL.new(_pry_, :target => 10).start'
|
|
|
|
output ''
|
2015-01-22 22:52:20 +01:00
|
|
|
prompt(/10.*> $/)
|
2012-12-23 00:03:29 -08:00
|
|
|
|
2012-12-23 12:25:48 -08:00
|
|
|
input 'self'
|
|
|
|
output '=> 10'
|
2012-12-23 00:03:29 -08:00
|
|
|
|
2012-12-23 12:25:48 -08:00
|
|
|
input nil # Ctrl-D
|
|
|
|
output ''
|
2012-12-23 00:03:29 -08:00
|
|
|
|
2012-12-23 12:25:48 -08:00
|
|
|
input 'self'
|
|
|
|
output '=> main'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-12-23 19:58:18 -08:00
|
|
|
it "shouldn't break if we start a nested instance" do
|
|
|
|
ReplTester.start do
|
2014-01-29 14:56:54 +01:00
|
|
|
input 'Pry.start(10, _pry_.config)'
|
2012-12-23 19:58:18 -08:00
|
|
|
output ''
|
2015-01-22 22:52:20 +01:00
|
|
|
prompt(/10.*> $/)
|
2012-12-23 19:58:18 -08:00
|
|
|
|
|
|
|
input 'self'
|
|
|
|
output '=> 10'
|
|
|
|
|
|
|
|
input nil # Ctrl-D
|
|
|
|
output '=> nil' # return value of Pry session
|
|
|
|
|
|
|
|
input 'self'
|
|
|
|
output '=> main'
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-12-23 12:25:48 -08:00
|
|
|
it "shouldn't break if we pop bindings in Ruby" do
|
|
|
|
ReplTester.start do
|
|
|
|
input 'cd 10'
|
|
|
|
output ''
|
2015-01-22 22:52:20 +01:00
|
|
|
prompt(/10.*> $/)
|
2012-12-23 12:25:48 -08:00
|
|
|
|
|
|
|
input '_pry_.binding_stack.pop'
|
2015-01-22 22:52:20 +01:00
|
|
|
output(/^=> #<Binding/)
|
|
|
|
prompt(/main.*> $/)
|
2012-12-23 12:25:48 -08:00
|
|
|
|
|
|
|
input '_pry_.binding_stack.pop'
|
2015-01-22 22:52:20 +01:00
|
|
|
output(/^=> #<Binding/)
|
2012-12-23 12:25:48 -08:00
|
|
|
assert_exited
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-12-23 15:21:58 -08:00
|
|
|
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 ''
|
2015-01-22 22:52:20 +01:00
|
|
|
prompt(/\* $/)
|
2012-12-23 15:21:58 -08:00
|
|
|
|
|
|
|
input 'hello!'
|
|
|
|
output '=> "hello"'
|
2015-01-22 22:52:20 +01:00
|
|
|
prompt(/> $/)
|
2012-12-23 12:25:48 -08:00
|
|
|
end
|
2012-12-23 00:03:29 -08:00
|
|
|
end
|
|
|
|
end
|
2013-03-26 21:23:13 +08:00
|
|
|
|
2012-12-15 14:09:16 -08:00
|
|
|
end
|