require_relative 'helper' describe "The whole thing" do it "should let you run commands in the middle of multiline expressions" do ReplTester.start do input 'def a' input '!' output /^Input buffer cleared/ input '5' output '=> 5' end end it "should rescue exceptions" do ReplTester.start do input 'raise "lorum"' output /^RuntimeError: lorum/ if defined?(java) input 'raise java.lang.Exception.new("foo")' output /Exception: foo/ input 'raise java.io.IOException.new("bar")' output /IOException: bar/ end end end describe "eval_string and binding_stack" do 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.*> $/ input 'self' output '=> 10' input nil # Ctrl-D output '' input 'self' output '=> main' end end it "shouldn't break if we start a nested instance" do ReplTester.start do input 'Pry.start(10, _pry_.config)' 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 /^=> # $/ input '_pry_.binding_stack.pop' output /^=> # set) do input 'def x' output '' prompt /\* $/ input 'hello!' output '=> "hello"' prompt /> $/ end end end end