pry 0.8.4pre1-java → 0.9.0pre1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. data/.gitignore +1 -0
  2. data/README.markdown +1 -1
  3. data/Rakefile +11 -5
  4. data/TODO +28 -2
  5. data/bin/pry +5 -9
  6. data/examples/example_basic.rb +2 -4
  7. data/examples/example_command_override.rb +2 -5
  8. data/examples/example_commands.rb +1 -4
  9. data/examples/example_hooks.rb +2 -5
  10. data/examples/example_image_edit.rb +4 -8
  11. data/examples/example_input.rb +1 -4
  12. data/examples/example_input2.rb +1 -4
  13. data/examples/example_output.rb +1 -4
  14. data/examples/example_print.rb +2 -5
  15. data/examples/example_prompt.rb +2 -5
  16. data/examples/helper.rb +6 -0
  17. data/lib/pry.rb +61 -4
  18. data/lib/pry/command_context.rb +10 -9
  19. data/lib/pry/command_processor.rb +29 -68
  20. data/lib/pry/command_set.rb +79 -28
  21. data/lib/pry/commands.rb +10 -121
  22. data/lib/pry/completion.rb +30 -29
  23. data/lib/pry/config.rb +93 -0
  24. data/lib/pry/default_commands/basic.rb +37 -0
  25. data/lib/pry/default_commands/context.rb +15 -15
  26. data/lib/pry/default_commands/documentation.rb +49 -48
  27. data/lib/pry/default_commands/easter_eggs.rb +1 -20
  28. data/lib/pry/default_commands/gems.rb +32 -41
  29. data/lib/pry/default_commands/input.rb +95 -19
  30. data/lib/pry/default_commands/introspection.rb +54 -60
  31. data/lib/pry/default_commands/ls.rb +2 -2
  32. data/lib/pry/default_commands/shell.rb +29 -39
  33. data/lib/pry/extended_commands/experimental.rb +48 -0
  34. data/lib/pry/extended_commands/user_command_api.rb +22 -0
  35. data/lib/pry/helpers.rb +1 -0
  36. data/lib/pry/helpers/base_helpers.rb +9 -106
  37. data/lib/pry/helpers/command_helpers.rb +96 -59
  38. data/lib/pry/helpers/text.rb +83 -0
  39. data/lib/pry/plugins.rb +79 -0
  40. data/lib/pry/pry_class.rb +96 -111
  41. data/lib/pry/pry_instance.rb +87 -55
  42. data/lib/pry/version.rb +1 -1
  43. data/test/helper.rb +56 -7
  44. data/test/test_command_processor.rb +99 -0
  45. data/test/{test_commandset.rb → test_command_set.rb} +18 -12
  46. data/test/test_default_commands.rb +59 -0
  47. data/test/test_default_commands/test_context.rb +64 -0
  48. data/test/test_default_commands/test_documentation.rb +31 -0
  49. data/test/test_default_commands/test_input.rb +157 -0
  50. data/test/test_default_commands/test_introspection.rb +146 -0
  51. data/test/test_pry.rb +430 -313
  52. metadata +25 -9
  53. data/lib/pry/hooks.rb +0 -17
  54. data/lib/pry/print.rb +0 -16
  55. data/lib/pry/prompts.rb +0 -31
@@ -135,13 +135,18 @@ describe Pry do
135
135
  end
136
136
 
137
137
  describe "test loading rc files" do
138
+
139
+ before do
140
+ Pry.instance_variable_set(:@initial_session, true)
141
+ end
142
+
138
143
  after do
139
144
  Pry::RC_FILES.clear
140
- Pry.should_load_rc = false
145
+ Pry.config.should_load_rc = false
141
146
  end
142
147
 
143
148
  it "should run the rc file only once" do
144
- Pry.should_load_rc = true
149
+ Pry.config.should_load_rc = true
145
150
  Pry::RC_FILES << File.expand_path("../testrc", __FILE__)
146
151
 
147
152
  Pry.start(self, :input => StringIO.new("exit\n"), :output => Pry::NullOutput)
@@ -153,17 +158,17 @@ describe Pry do
153
158
  Object.remove_const(:TEST_RC)
154
159
  end
155
160
 
156
- it "should not run the rc file at all if Pry.should_load_rc is false" do
157
- Pry.should_load_rc = false
161
+ it "should not run the rc file at all if Pry.config.should_load_rc is false" do
162
+ Pry.config.should_load_rc = false
158
163
  Pry.start(self, :input => StringIO.new("exit\n"), :output => Pry::NullOutput)
159
164
  Object.const_defined?(:TEST_RC).should == false
160
165
  end
161
166
 
162
167
  it "should not load the rc file if #repl method invoked" do
163
- Pry.should_load_rc = true
168
+ Pry.config.should_load_rc = true
164
169
  Pry.new(:input => StringIO.new("exit\n"), :output => Pry::NullOutput).repl(self)
165
170
  Object.const_defined?(:TEST_RC).should == false
166
- Pry.should_load_rc = false
171
+ Pry.config.should_load_rc = false
167
172
  end
168
173
  end
169
174
 
@@ -219,10 +224,8 @@ describe Pry do
219
224
  val.class.instance_methods(false).map(&:to_sym).include?(:hello).should == true
220
225
  end
221
226
  end
222
-
223
227
  end
224
228
 
225
-
226
229
  describe "commands" do
227
230
  it 'should run a command with no parameter' do
228
231
  pry_tester = Pry.new
@@ -386,70 +389,143 @@ describe Pry do
386
389
  str_output2.string.should =~ /7/
387
390
  end
388
391
 
389
- # describe "Pry.run_command" do
390
- # before do
391
- # class RCTest
392
- # def a() end
393
- # B = 20
394
- # @x = 10
395
- # end
396
- # end
397
-
398
- # after do
399
- # Object.remove_const(:RCTest)
400
- # end
401
-
402
- # it "should execute command in the appropriate object context" do
403
- # result = Pry.run_command "ls", :context => RCTest
404
- # result.map(&:to_sym).should == [:@x]
405
- # end
406
-
407
- # it "should execute command with parameters in the appropriate object context" do
408
- # result = Pry.run_command "ls -M", :context => RCTest
409
- # result.map(&:to_sym).should == [:a]
410
- # end
411
-
412
- # it "should execute command and show output with :show_output => true flag" do
413
- # str = StringIO.new
414
- # Pry.output = str
415
- # result = Pry.run_command "ls -afv", :context => RCTest, :show_output => true
416
- # str.string.should =~ /global variables/
417
- # Pry.output = $stdout
418
- # end
419
-
420
- # it "should execute command with multiple parameters" do
421
- # result = Pry.run_command "ls -c -M RCTest"
422
- # result.map(&:to_sym).should == [:a, :B]
423
- # end
424
- # end
425
-
426
392
  describe "commands" do
427
393
  it 'should interpolate ruby code into commands' do
428
- klass = Pry::CommandSet.new :test do
394
+ klass = Pry::CommandSet.new do
429
395
  command "hello", "", :keep_retval => true do |arg|
430
396
  arg
431
397
  end
432
398
  end
433
399
 
434
- @test_interpolation = "bing"
400
+ $test_interpolation = "bing"
435
401
  str_output = StringIO.new
436
- Pry.new(:input => StringIO.new("hello #{@test_interpolation}"), :output => str_output, :commands => klass).rep
402
+ Pry.new(:input => StringIO.new('hello #{$test_interpolation}'), :output => str_output, :commands => klass).rep
437
403
  str_output.string.should =~ /bing/
438
- @test_interpolation = nil
404
+ $test_interpolation = nil
405
+ end
406
+
407
+ it 'should NOT interpolate ruby code into commands if :interpolate => false' do
408
+ klass = Pry::CommandSet.new do
409
+ command "hello", "", :keep_retval => true, :interpolate => false do |arg|
410
+ arg
411
+ end
412
+ end
413
+
414
+ $test_interpolation = "bing"
415
+ str_output = StringIO.new
416
+ Pry.new(:input => StringIO.new('hello #{$test_interpolation}'), :output => str_output, :commands => klass).rep
417
+ str_output.string.should =~ /test_interpolation/
418
+ $test_interpolation = nil
419
+ end
420
+
421
+ it 'should create a command with a space in its name' do
422
+ set = Pry::CommandSet.new do
423
+ command "hello baby", "" do
424
+ output.puts "hello baby command"
425
+ end
426
+ end
427
+
428
+ str_output = StringIO.new
429
+ redirect_pry_io(InputTester.new("hello baby", "exit-all"), str_output) do
430
+ Pry.new(:commands => set).rep
431
+ end
432
+
433
+ str_output.string.should =~ /hello baby command/
434
+ end
435
+
436
+ it 'should create a command with a space in its name and pass an argument' do
437
+ set = Pry::CommandSet.new do
438
+ command "hello baby", "" do |arg|
439
+ output.puts "hello baby command #{arg}"
440
+ end
441
+ end
442
+
443
+ str_output = StringIO.new
444
+ redirect_pry_io(InputTester.new("hello baby john"), str_output) do
445
+ Pry.new(:commands => set).rep
446
+ end
447
+
448
+ str_output.string.should =~ /hello baby command john/
449
+ end
450
+
451
+ it 'should create a regex command and be able to invoke it' do
452
+ set = Pry::CommandSet.new do
453
+ command /hello(.)/, "" do
454
+ c = captures.first
455
+ output.puts "hello#{c}"
456
+ end
457
+ end
458
+
459
+ str_output = StringIO.new
460
+ redirect_pry_io(InputTester.new("hello1"), str_output) do
461
+ Pry.new(:commands => set).rep
462
+ end
463
+
464
+ str_output.string.should =~ /hello1/
465
+ end
466
+
467
+ it 'should create a regex command and pass captures into the args list before regular arguments' do
468
+ set = Pry::CommandSet.new do
469
+ command /hello(.)/, "" do |c1, a1|
470
+ output.puts "hello #{c1} #{a1}"
471
+ end
472
+ end
473
+
474
+ str_output = StringIO.new
475
+ redirect_pry_io(InputTester.new("hello1 baby"), str_output) do
476
+ Pry.new(:commands => set).rep
477
+ end
478
+
479
+ str_output.string.should =~ /hello 1 baby/
480
+ end
481
+
482
+ it 'should create a regex command and interpolate the captures' do
483
+ set = Pry::CommandSet.new do
484
+ command /hello (.*)/, "" do |c1|
485
+ output.puts "hello #{c1}"
486
+ end
487
+ end
488
+
489
+ str_output = StringIO.new
490
+ $obj = "bing"
491
+ redirect_pry_io(InputTester.new('hello #{$obj}'), str_output) do
492
+ Pry.new(:commands => set).rep
493
+ end
494
+
495
+ # binding.pry
496
+ str_output.string.should =~ /hello bing/
497
+ $obj = nil
439
498
  end
440
499
 
441
- it 'should create a comand in a nested context and that command should be accessible from the parent' do
442
- str_input = StringIO.new("@x=nil\ncd 7\n_pry_.commands.instance_eval {\ncommand('bing') { |arg| run arg }\n}\ncd ..\nbing ls\nexit")
500
+ it 'if a regex capture is missing it should be nil' do
501
+ set = Pry::CommandSet.new do
502
+ command /hello(.)?/, "" do |c1, a1|
503
+ output.puts "hello #{c1.inspect} #{a1}"
504
+ end
505
+ end
506
+
443
507
  str_output = StringIO.new
444
- Pry.input = str_input
445
- obj = Object.new
446
- Pry.new(:output => str_output).repl(obj)
447
- Pry.input = Readline
448
- str_output.string.should =~ /@x/
508
+ redirect_pry_io(InputTester.new("hello baby"), str_output) do
509
+ Pry.new(:commands => set).rep
510
+ end
511
+
512
+ str_output.string.should =~ /hello nil baby/
513
+ end
514
+
515
+ it 'should create a command in a nested context and that command should be accessible from the parent' do
516
+ redirect_pry_io(StringIO.new, StringIO.new) do
517
+ str_input = StringIO.new("@x=nil\ncd 7\n_pry_.commands.instance_eval {\ncommand('bing') { |arg| run arg }\n}\ncd ..\nbing ls\nexit")
518
+ str_output = StringIO.new
519
+ Pry.input = str_input
520
+ obj = Object.new
521
+ Pry.new(:output => str_output).repl(obj)
522
+ Pry.input = Readline
523
+ str_output.string.should =~ /@x/
524
+ end
449
525
  end
450
526
 
451
527
  it 'should define a command that keeps its return value' do
452
- klass = Pry::CommandSet.new :test do
528
+ klass = Pry::CommandSet.new do
453
529
  command "hello", "", :keep_retval => true do
454
530
  :kept_hello
455
531
  end
@@ -461,7 +537,7 @@ describe Pry do
461
537
  end
462
538
 
463
539
  it 'should define a command that does NOT keep its return value' do
464
- klass = Pry::CommandSet.new :test do
540
+ klass = Pry::CommandSet.new do
465
541
  command "hello", "", :keep_retval => false do
466
542
  :kept_hello
467
543
  end
@@ -469,11 +545,11 @@ describe Pry do
469
545
  str_output = StringIO.new
470
546
  Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => klass).rep
471
547
  (str_output.string =~ /:kept_hello/).should == nil
472
- str_output.string !~ /=>/
548
+ str_output.string !~ /=>/
473
549
  end
474
550
 
475
551
  it 'should set the commands default, and the default should be overridable' do
476
- klass = Pry::CommandSet.new :test do
552
+ klass = Pry::CommandSet.new do
477
553
  command "hello" do
478
554
  output.puts "hello world"
479
555
  end
@@ -485,342 +561,383 @@ describe Pry do
485
561
  Pry.new(:input => InputTester.new("hello"), :output => str_output).rep
486
562
  str_output.string.should =~ /hello world/
487
563
 
488
- other_klass = Pry::CommandSet.new :test2 do
489
- command "goodbye", "" do
490
- output.puts "goodbye world"
564
+ other_klass = Pry::CommandSet.new do
565
+ command "goodbye", "" do
566
+ output.puts "goodbye world"
567
+ end
491
568
  end
492
- end
493
569
 
494
- str_output = StringIO.new
570
+ str_output = StringIO.new
495
571
 
496
- Pry.new(:input => InputTester.new("goodbye"), :output => str_output, :commands => other_klass).rep
497
- str_output.string.should =~ /goodbye world/
498
- end
572
+ Pry.new(:input => InputTester.new("goodbye"), :output => str_output, :commands => other_klass).rep
573
+ str_output.string.should =~ /goodbye world/
574
+ end
499
575
 
500
- it 'should inherit "help" command from Pry::CommandBase' do
501
- klass = Pry::CommandSet.new :test do
502
- command "h", "h command" do
576
+ it 'should inherit "help" command from Pry::CommandBase' do
577
+ klass = Pry::CommandSet.new do
578
+ command "h", "h command" do
579
+ end
503
580
  end
504
- end
505
581
 
506
- klass.commands.keys.size.should == 3
507
- klass.commands.keys.include?("help").should == true
508
- klass.commands.keys.include?("install").should == true
509
- klass.commands.keys.include?("h").should == true
510
- end
582
+ klass.commands.keys.size.should == 3
583
+ klass.commands.keys.include?("help").should == true
584
+ klass.commands.keys.include?("install").should == true
585
+ klass.commands.keys.include?("h").should == true
586
+ end
511
587
 
512
- it 'should inherit commands from Pry::Commands' do
513
- klass = Pry::CommandSet.new :test, Pry::Commands do
514
- command "v" do
588
+ it 'should inherit commands from Pry::Commands' do
589
+ klass = Pry::CommandSet.new Pry::Commands do
590
+ command "v" do
591
+ end
515
592
  end
593
+
594
+ klass.commands.include?("nesting").should == true
595
+ klass.commands.include?("jump-to").should == true
596
+ klass.commands.include?("cd").should == true
597
+ klass.commands.include?("v").should == true
516
598
  end
517
599
 
518
- klass.commands.include?("nesting").should == true
519
- klass.commands.include?("jump-to").should == true
520
- klass.commands.include?("cd").should == true
521
- klass.commands.include?("v").should == true
522
- end
600
+ it 'should alias a command with another command' do
601
+ klass = Pry::CommandSet.new do
602
+ alias_command "help2", "help"
603
+ end
604
+ klass.commands["help2"].block.should == klass.commands["help"].block
605
+ end
523
606
 
524
- it 'should alias a command with another command' do
525
- klass = Pry::CommandSet.new :test do
526
- alias_command "help2", "help"
607
+ it 'should change description of a command using desc' do
608
+ klass = Pry::CommandSet.new do; end
609
+ orig = klass.commands["help"].description
610
+ klass.instance_eval do
611
+ desc "help", "blah"
612
+ end
613
+ klass.commands["help"].description.should.not == orig
614
+ klass.commands["help"].description.should == "blah"
527
615
  end
528
616
 
617
+ it 'should run a command from within a command' do
618
+ klass = Pry::CommandSet.new do
619
+ command "v" do
620
+ output.puts "v command"
621
+ end
529
622
 
530
- klass.commands["help2"].block.should == klass.commands["help"].block
531
- end
623
+ command "run_v" do
624
+ run "v"
625
+ end
626
+ end
532
627
 
533
- it 'should change description of a command using desc' do
534
- klass = Pry::CommandSet.new :test do; end
535
- orig = klass.commands["help"].description
536
- klass.instance_eval do
537
- desc "help", "blah"
628
+ str_output = StringIO.new
629
+ Pry.new(:input => InputTester.new("run_v"), :output => str_output, :commands => klass).rep
630
+ str_output.string.should =~ /v command/
538
631
  end
539
- klass.commands["help"].description.should.not == orig
540
- klass.commands["help"].description.should == "blah"
541
- end
542
632
 
543
- it 'should run a command from within a command' do
544
- klass = Pry::CommandSet.new :test do
545
- command "v" do
546
- output.puts "v command"
633
+ it 'should run a regex command from within a command' do
634
+ klass = Pry::CommandSet.new do
635
+ command /v(.*)?/ do |arg|
636
+ output.puts "v #{arg}"
637
+ end
638
+
639
+ command "run_v" do
640
+ run "vbaby"
641
+ end
547
642
  end
548
643
 
549
- command "run_v" do
550
- run "v"
644
+ str_output = StringIO.new
645
+ redirect_pry_io(InputTester.new("run_v"), str_output) do
646
+ Pry.new(:commands => klass).rep
551
647
  end
648
+
649
+ str_output.string.should =~ /v baby/
552
650
  end
553
651
 
554
- str_output = StringIO.new
555
- Pry.new(:input => InputTester.new("run_v"), :output => str_output, :commands => klass).rep
556
- str_output.string.should =~ /v command/
557
- end
652
+ it 'should run a command from within a command with arguments' do
653
+ klass = Pry::CommandSet.new do
654
+ command /v(\w+)/ do |arg1, arg2|
655
+ output.puts "v #{arg1} #{arg2}"
656
+ end
558
657
 
559
- it 'should enable an inherited method to access opts and output and target, due to instance_exec' do
560
- klass = Pry::CommandSet.new :test do
561
- command "v" do
562
- output.puts "#{target.eval('self')}"
658
+ command "run_v_explicit_parameter" do
659
+ run "vbaby", "param"
660
+ end
661
+
662
+ command "run_v_embedded_parameter" do
663
+ run "vbaby param"
664
+ end
563
665
  end
564
- end
565
666
 
566
- child_klass = Pry::CommandSet.new :test2, klass do
667
+ ["run_v_explicit_parameter", "run_v_embedded_parameter"].each do |cmd|
668
+ str_output = StringIO.new
669
+ redirect_pry_io(InputTester.new(cmd), str_output) do
670
+ Pry.new(:commands => klass).rep
671
+ end
672
+ str_output.string.should =~ /v baby param/
673
+ end
567
674
  end
568
675
 
569
- str_output = StringIO.new
570
- Pry.new(:print => proc {}, :input => InputTester.new("v"),
571
- :output => str_output, :commands => child_klass).rep("john")
676
+ it 'should enable an inherited method to access opts and output and target, due to instance_exec' do
677
+ klass = Pry::CommandSet.new do
678
+ command "v" do
679
+ output.puts "#{target.eval('self')}"
680
+ end
681
+ end
572
682
 
573
- str_output.string.rstrip.should == "john"
574
- end
683
+ child_klass = Pry::CommandSet.new klass do
684
+ end
685
+
686
+ str_output = StringIO.new
687
+ Pry.new(:print => proc {}, :input => InputTester.new("v"),
688
+ :output => str_output, :commands => child_klass).rep("john")
575
689
 
576
- it 'should import commands from another command object' do
577
- klass = Pry::CommandSet.new :test do
578
- import_from Pry::Commands, "ls", "jump-to"
690
+ str_output.string.rstrip.should == "john"
579
691
  end
580
692
 
693
+ it 'should import commands from another command object' do
694
+ klass = Pry::CommandSet.new do
695
+ import_from Pry::Commands, "ls", "jump-to"
696
+ end
697
+
581
698
  klass.commands.include?("ls").should == true
582
699
  klass.commands.include?("jump-to").should == true
583
700
  end
584
701
 
585
- it 'should delete some inherited commands when using delete method' do
586
- klass = Pry::CommandSet.new :test, Pry::Commands do
587
- command "v" do
702
+ it 'should delete some inherited commands when using delete method' do
703
+ klass = Pry::CommandSet.new Pry::Commands do
704
+ command "v" do
705
+ end
706
+
707
+ delete "show-doc", "show-method"
708
+ delete "ls"
588
709
  end
589
710
 
590
- delete "show-doc", "show-method"
591
- delete "ls"
711
+ klass.commands.include?("nesting").should == true
712
+ klass.commands.include?("jump-to").should == true
713
+ klass.commands.include?("cd").should == true
714
+ klass.commands.include?("v").should == true
715
+ klass.commands.include?("show-doc").should == false
716
+ klass.commands.include?("show-method").should == false
717
+ klass.commands.include?("ls").should == false
592
718
  end
593
719
 
594
- klass.commands.include?("nesting").should == true
595
- klass.commands.include?("jump-to").should == true
596
- klass.commands.include?("cd").should == true
597
- klass.commands.include?("v").should == true
598
- klass.commands.include?("show-doc").should == false
599
- klass.commands.include?("show-method").should == false
600
- klass.commands.include?("ls").should == false
601
- end
720
+ it 'should override some inherited commands' do
721
+ klass = Pry::CommandSet.new Pry::Commands do
722
+ command "jump-to" do
723
+ output.puts "jump-to the music"
724
+ end
602
725
 
603
- it 'should override some inherited commands' do
604
- klass = Pry::CommandSet.new :test, Pry::Commands do
605
- command "jump-to" do
606
- output.puts "jump-to the music"
726
+ command "help" do
727
+ output.puts "help to the music"
728
+ end
607
729
  end
608
730
 
609
- command "help" do
610
- output.puts "help to the music"
611
- end
612
- end
731
+ # suppress evaluation output
732
+ Pry.print = proc {}
613
733
 
614
- # suppress evaluation output
615
- Pry.print = proc {}
734
+ str_output = StringIO.new
735
+ Pry.new(:input => InputTester.new("jump-to"), :output => str_output, :commands => klass).rep
736
+ str_output.string.rstrip.should == "jump-to the music"
616
737
 
617
- str_output = StringIO.new
618
- Pry.new(:input => InputTester.new("jump-to"), :output => str_output, :commands => klass).rep
619
- str_output.string.rstrip.should == "jump-to the music"
620
-
621
- str_output = StringIO.new
622
- Pry.new(:input => InputTester.new("help"), :output => str_output, :commands => klass).rep
623
- str_output.string.rstrip.should == "help to the music"
738
+ str_output = StringIO.new
739
+ Pry.new(:input => InputTester.new("help"), :output => str_output, :commands => klass).rep
740
+ str_output.string.rstrip.should == "help to the music"
624
741
 
625
742
 
626
- Pry.reset_defaults
627
- Pry.color = false
743
+ Pry.reset_defaults
744
+ Pry.color = false
745
+ end
628
746
  end
629
- end
630
747
 
631
- it "should set the print default, and the default should be overridable" do
632
- new_print = proc { |out, value| out.puts value }
633
- Pry.print = new_print
748
+ it "should set the print default, and the default should be overridable" do
749
+ new_print = proc { |out, value| out.puts value }
750
+ Pry.print = new_print
634
751
 
635
- Pry.new.print.should == Pry.print
636
- str_output = StringIO.new
637
- Pry.new(:input => InputTester.new("\"test\""), :output => str_output).rep
638
- str_output.string.should == "test\n"
639
-
640
- str_output = StringIO.new
641
- Pry.new(:input => InputTester.new("\"test\""), :output => str_output,
642
- :print => proc { |out, value| out.puts value.reverse }).rep
643
- str_output.string.should == "tset\n"
752
+ Pry.new.print.should == Pry.print
753
+ str_output = StringIO.new
754
+ Pry.new(:input => InputTester.new("\"test\""), :output => str_output).rep
755
+ str_output.string.should == "test\n"
644
756
 
645
- Pry.new.print.should == Pry.print
646
- str_output = StringIO.new
647
- Pry.new(:input => InputTester.new("\"test\""), :output => str_output).rep
648
- str_output.string.should == "test\n"
649
- end
757
+ str_output = StringIO.new
758
+ Pry.new(:input => InputTester.new("\"test\""), :output => str_output,
759
+ :print => proc { |out, value| out.puts value.reverse }).rep
760
+ str_output.string.should == "tset\n"
650
761
 
651
- describe "pry return values" do
652
- it 'should return the target object' do
653
- Pry.start(self, :input => StringIO.new("exit"), :output => Pry::NullOutput).should == self
762
+ Pry.new.print.should == Pry.print
763
+ str_output = StringIO.new
764
+ Pry.new(:input => InputTester.new("\"test\""), :output => str_output).rep
765
+ str_output.string.should == "test\n"
654
766
  end
655
767
 
656
- it 'should return the parameter given to exit' do
657
- Pry.start(self, :input => StringIO.new("exit 10"), :output => Pry::NullOutput).should == 10
658
- end
768
+ describe "pry return values" do
769
+ it 'should return the target object' do
770
+ Pry.start(self, :input => StringIO.new("exit"), :output => Pry::NullOutput).should == self
771
+ end
659
772
 
660
- it 'should return the parameter (multi word string) given to exit' do
661
- Pry.start(self, :input => StringIO.new("exit \"john mair\""), :output => Pry::NullOutput).should == "john mair"
662
- end
773
+ it 'should return the parameter given to exit' do
774
+ Pry.start(self, :input => StringIO.new("exit 10"), :output => Pry::NullOutput).should == 10
775
+ end
663
776
 
664
- it 'should return the parameter (function call) given to exit' do
665
- Pry.start(self, :input => StringIO.new("exit 'abc'.reverse"), :output => Pry::NullOutput).should == 'cba'
666
- end
777
+ it 'should return the parameter (multi word string) given to exit' do
778
+ Pry.start(self, :input => StringIO.new("exit \"john mair\""), :output => Pry::NullOutput).should == "john mair"
779
+ end
667
780
 
668
- it 'should return the parameter (self) given to exit' do
669
- Pry.start("carl", :input => StringIO.new("exit self"), :output => Pry::NullOutput).should == "carl"
781
+ it 'should return the parameter (function call) given to exit' do
782
+ Pry.start(self, :input => StringIO.new("exit 'abc'.reverse"), :output => Pry::NullOutput).should == 'cba'
783
+ end
784
+
785
+ it 'should return the parameter (self) given to exit' do
786
+ Pry.start("carl", :input => StringIO.new("exit self"), :output => Pry::NullOutput).should == "carl"
787
+ end
670
788
  end
671
- end
672
789
 
673
- describe "prompts" do
674
- it 'should set the prompt default, and the default should be overridable (single prompt)' do
675
- new_prompt = proc { "test prompt> " }
676
- Pry.prompt = new_prompt
790
+ describe "prompts" do
791
+ it 'should set the prompt default, and the default should be overridable (single prompt)' do
792
+ new_prompt = proc { "test prompt> " }
793
+ Pry.prompt = new_prompt
677
794
 
678
- Pry.new.prompt.should == Pry.prompt
679
- Pry.new.select_prompt(true, 0).should == "test prompt> "
680
- Pry.new.select_prompt(false, 0).should == "test prompt> "
795
+ Pry.new.prompt.should == Pry.prompt
796
+ Pry.new.select_prompt(true, 0).should == "test prompt> "
797
+ Pry.new.select_prompt(false, 0).should == "test prompt> "
681
798
 
682
- new_prompt = proc { "A" }
683
- pry_tester = Pry.new(:prompt => new_prompt)
684
- pry_tester.prompt.should == new_prompt
685
- pry_tester.select_prompt(true, 0).should == "A"
686
- pry_tester.select_prompt(false, 0).should == "A"
799
+ new_prompt = proc { "A" }
800
+ pry_tester = Pry.new(:prompt => new_prompt)
801
+ pry_tester.prompt.should == new_prompt
802
+ pry_tester.select_prompt(true, 0).should == "A"
803
+ pry_tester.select_prompt(false, 0).should == "A"
687
804
 
688
- Pry.new.prompt.should == Pry.prompt
689
- Pry.new.select_prompt(true, 0).should == "test prompt> "
690
- Pry.new.select_prompt(false, 0).should == "test prompt> "
691
- end
805
+ Pry.new.prompt.should == Pry.prompt
806
+ Pry.new.select_prompt(true, 0).should == "test prompt> "
807
+ Pry.new.select_prompt(false, 0).should == "test prompt> "
808
+ end
692
809
 
693
- it 'should set the prompt default, and the default should be overridable (multi prompt)' do
694
- new_prompt = [proc { "test prompt> " }, proc { "test prompt* " }]
695
- Pry.prompt = new_prompt
810
+ it 'should set the prompt default, and the default should be overridable (multi prompt)' do
811
+ new_prompt = [proc { "test prompt> " }, proc { "test prompt* " }]
812
+ Pry.prompt = new_prompt
696
813
 
697
- Pry.new.prompt.should == Pry.prompt
698
- Pry.new.select_prompt(true, 0).should == "test prompt> "
699
- Pry.new.select_prompt(false, 0).should == "test prompt* "
814
+ Pry.new.prompt.should == Pry.prompt
815
+ Pry.new.select_prompt(true, 0).should == "test prompt> "
816
+ Pry.new.select_prompt(false, 0).should == "test prompt* "
700
817
 
701
- new_prompt = [proc { "A" }, proc { "B" }]
702
- pry_tester = Pry.new(:prompt => new_prompt)
703
- pry_tester.prompt.should == new_prompt
704
- pry_tester.select_prompt(true, 0).should == "A"
705
- pry_tester.select_prompt(false, 0).should == "B"
818
+ new_prompt = [proc { "A" }, proc { "B" }]
819
+ pry_tester = Pry.new(:prompt => new_prompt)
820
+ pry_tester.prompt.should == new_prompt
821
+ pry_tester.select_prompt(true, 0).should == "A"
822
+ pry_tester.select_prompt(false, 0).should == "B"
706
823
 
707
- Pry.new.prompt.should == Pry.prompt
708
- Pry.new.select_prompt(true, 0).should == "test prompt> "
709
- Pry.new.select_prompt(false, 0).should == "test prompt* "
710
- end
824
+ Pry.new.prompt.should == Pry.prompt
825
+ Pry.new.select_prompt(true, 0).should == "test prompt> "
826
+ Pry.new.select_prompt(false, 0).should == "test prompt* "
827
+ end
711
828
 
712
- describe 'storing and restoring the prompt' do
713
- before do
714
- make = lambda do |name,i|
715
- prompt = [ proc { "#{i}>" } , proc { "#{i+1}>" } ]
716
- (class << prompt; self; end).send(:define_method, :inspect) { "<Prompt-#{name}>" }
717
- prompt
718
- end
719
- @a , @b , @c = make[:a,0] , make[:b,1] , make[:c,2]
720
- @pry = Pry.new :prompt => @a
721
- end
722
- it 'should have a prompt stack' do
723
- @pry.push_prompt @b
724
- @pry.push_prompt @c
725
- @pry.prompt.should == @c
726
- @pry.pop_prompt
727
- @pry.prompt.should == @b
728
- @pry.pop_prompt
729
- @pry.prompt.should == @a
730
- end
731
-
732
- it 'should restore overridden prompts when returning from file-mode' do
733
- pry = Pry.new :input => InputTester.new('shell-mode', 'shell-mode'),
734
- :prompt => [ proc { 'P>' } ] * 2
735
- pry.select_prompt(true, 0).should == "P>"
736
- pry.re
737
- pry.select_prompt(true, 0).should =~ /\Apry .* \$ \z/
738
- pry.re
739
- pry.select_prompt(true, 0).should == "P>"
740
- end
741
-
742
- it '#pop_prompt should return the popped prompt' do
743
- @pry.push_prompt @b
744
- @pry.push_prompt @c
745
- @pry.pop_prompt.should == @c
746
- @pry.pop_prompt.should == @b
747
- end
748
-
749
- it 'should not pop the last prompt' do
750
- @pry.push_prompt @b
751
- @pry.pop_prompt.should == @b
752
- @pry.pop_prompt.should == @a
753
- @pry.pop_prompt.should == @a
754
- @pry.prompt.should == @a
755
- end
756
-
757
- describe '#prompt= should replace the current prompt with the new prompt' do
758
- it 'when only one prompt on the stack' do
759
- @pry.prompt = @b
829
+ describe 'storing and restoring the prompt' do
830
+ before do
831
+ make = lambda do |name,i|
832
+ prompt = [ proc { "#{i}>" } , proc { "#{i+1}>" } ]
833
+ (class << prompt; self; end).send(:define_method, :inspect) { "<Prompt-#{name}>" }
834
+ prompt
835
+ end
836
+ @a , @b , @c = make[:a,0] , make[:b,1] , make[:c,2]
837
+ @pry = Pry.new :prompt => @a
838
+ end
839
+ it 'should have a prompt stack' do
840
+ @pry.push_prompt @b
841
+ @pry.push_prompt @c
842
+ @pry.prompt.should == @c
843
+ @pry.pop_prompt
760
844
  @pry.prompt.should == @b
761
- @pry.pop_prompt.should == @b
762
- @pry.pop_prompt.should == @b
845
+ @pry.pop_prompt
846
+ @pry.prompt.should == @a
847
+ end
848
+
849
+ it 'should restore overridden prompts when returning from file-mode' do
850
+ pry = Pry.new :input => InputTester.new('shell-mode', 'shell-mode'),
851
+ :prompt => [ proc { 'P>' } ] * 2
852
+ pry.select_prompt(true, 0).should == "P>"
853
+ pry.re
854
+ pry.select_prompt(true, 0).should =~ /\Apry .* \$ \z/
855
+ pry.re
856
+ pry.select_prompt(true, 0).should == "P>"
763
857
  end
764
- it 'when several prompts on the stack' do
858
+
859
+ it '#pop_prompt should return the popped prompt' do
765
860
  @pry.push_prompt @b
766
- @pry.prompt = @c
861
+ @pry.push_prompt @c
767
862
  @pry.pop_prompt.should == @c
863
+ @pry.pop_prompt.should == @b
864
+ end
865
+
866
+ it 'should not pop the last prompt' do
867
+ @pry.push_prompt @b
868
+ @pry.pop_prompt.should == @b
869
+ @pry.pop_prompt.should == @a
768
870
  @pry.pop_prompt.should == @a
871
+ @pry.prompt.should == @a
872
+ end
873
+
874
+ describe '#prompt= should replace the current prompt with the new prompt' do
875
+ it 'when only one prompt on the stack' do
876
+ @pry.prompt = @b
877
+ @pry.prompt.should == @b
878
+ @pry.pop_prompt.should == @b
879
+ @pry.pop_prompt.should == @b
880
+ end
881
+ it 'when several prompts on the stack' do
882
+ @pry.push_prompt @b
883
+ @pry.prompt = @c
884
+ @pry.pop_prompt.should == @c
885
+ @pry.pop_prompt.should == @a
886
+ end
769
887
  end
770
888
  end
771
889
  end
772
- end
773
890
 
774
- it 'should set the hooks default, and the default should be overridable' do
775
- Pry.input = InputTester.new("exit")
776
- Pry.hooks = {
777
- :before_session => proc { |out,_| out.puts "HELLO" },
778
- :after_session => proc { |out,_| out.puts "BYE" }
779
- }
891
+ it 'should set the hooks default, and the default should be overridable' do
892
+ Pry.input = InputTester.new("exit")
893
+ Pry.hooks = {
894
+ :before_session => proc { |out,_| out.puts "HELLO" },
895
+ :after_session => proc { |out,_| out.puts "BYE" }
896
+ }
780
897
 
781
- str_output = StringIO.new
782
- Pry.new(:output => str_output).repl
783
- str_output.string.should =~ /HELLO/
784
- str_output.string.should =~ /BYE/
898
+ str_output = StringIO.new
899
+ Pry.new(:output => str_output).repl
900
+ str_output.string.should =~ /HELLO/
901
+ str_output.string.should =~ /BYE/
785
902
 
786
- Pry.input.rewind
903
+ Pry.input.rewind
787
904
 
788
- str_output = StringIO.new
789
- Pry.new(:output => str_output,
790
- :hooks => {
791
- :before_session => proc { |out,_| out.puts "MORNING" },
792
- :after_session => proc { |out,_| out.puts "EVENING" }
793
- }
794
- ).repl
795
-
796
- str_output.string.should =~ /MORNING/
797
- str_output.string.should =~ /EVENING/
798
-
799
- # try below with just defining one hook
800
- Pry.input.rewind
801
- str_output = StringIO.new
802
- Pry.new(:output => str_output,
803
- :hooks => {
804
- :before_session => proc { |out,_| out.puts "OPEN" }
805
- }
806
- ).repl
905
+ str_output = StringIO.new
906
+ Pry.new(:output => str_output,
907
+ :hooks => {
908
+ :before_session => proc { |out,_| out.puts "MORNING" },
909
+ :after_session => proc { |out,_| out.puts "EVENING" }
910
+ }
911
+ ).repl
912
+
913
+ str_output.string.should =~ /MORNING/
914
+ str_output.string.should =~ /EVENING/
915
+
916
+ # try below with just defining one hook
917
+ Pry.input.rewind
918
+ str_output = StringIO.new
919
+ Pry.new(:output => str_output,
920
+ :hooks => {
921
+ :before_session => proc { |out,_| out.puts "OPEN" }
922
+ }
923
+ ).repl
807
924
 
808
- str_output.string.should =~ /OPEN/
925
+ str_output.string.should =~ /OPEN/
809
926
 
810
- Pry.input.rewind
811
- str_output = StringIO.new
812
- Pry.new(:output => str_output,
813
- :hooks => {
814
- :after_session => proc { |out,_| out.puts "CLOSE" }
815
- }
816
- ).repl
927
+ Pry.input.rewind
928
+ str_output = StringIO.new
929
+ Pry.new(:output => str_output,
930
+ :hooks => {
931
+ :after_session => proc { |out,_| out.puts "CLOSE" }
932
+ }
933
+ ).repl
817
934
 
818
- str_output.string.should =~ /CLOSE/
935
+ str_output.string.should =~ /CLOSE/
819
936
 
820
- Pry.reset_defaults
821
- Pry.color = false
937
+ Pry.reset_defaults
938
+ Pry.color = false
939
+ end
822
940
  end
823
941
  end
824
942
  end
825
943
  end
826
- end