pry 0.7.7.2-i386-mingw32 → 0.8.0-i386-mingw32

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.
@@ -1,3 +1,3 @@
1
1
  class Pry
2
- VERSION = "0.7.7.2"
2
+ VERSION = "0.8.0"
3
3
  end
@@ -10,15 +10,9 @@ puts "Testing Pry #{Pry::VERSION}"
10
10
  puts "With method_source version #{MethodSource::VERSION}"
11
11
  puts "--"
12
12
 
13
- # Ensure we do not execute any rc files
14
- Pry::RC_FILES.clear
15
- Pry.color = false
16
- Pry.should_load_rc = false
17
-
18
13
  describe Pry do
19
14
  describe "open a Pry session on an object" do
20
15
  describe "rep" do
21
-
22
16
  before do
23
17
  class Hello
24
18
  end
@@ -41,7 +35,7 @@ describe Pry do
41
35
  it 'should make self evaluate to the receiver of the rep session' do
42
36
  o = Object.new
43
37
  str_output = StringIO.new
44
-
38
+
45
39
  pry_tester = Pry.new(:input => InputTester.new("self"), :output => str_output)
46
40
  pry_tester.rep(o)
47
41
  str_output.string.should =~ /#{o.to_s}/
@@ -50,7 +44,7 @@ describe Pry do
50
44
  it 'should work with multi-line input' do
51
45
  o = Object.new
52
46
  str_output = StringIO.new
53
-
47
+
54
48
  pry_tester = Pry.new(:input => InputTester.new("x = ", "1 + 4"), :output => str_output)
55
49
  pry_tester.rep(o)
56
50
  str_output.string.should =~ /5/
@@ -61,6 +55,60 @@ describe Pry do
61
55
  pry_tester.rep(Hello)
62
56
  Hello.const_defined?(:Nested).should == true
63
57
  end
58
+
59
+ it 'should suppress output if input ends in a ";" and is an Exception object (single line)' do
60
+ o = Object.new
61
+ str_output = StringIO.new
62
+
63
+ pry_tester = Pry.new(:input => InputTester.new("Exception.new;"), :output => str_output)
64
+ pry_tester.rep(o)
65
+ str_output.string.should == ""
66
+ end
67
+
68
+ it 'should suppress output if input ends in a ";" (single line)' do
69
+ o = Object.new
70
+ str_output = StringIO.new
71
+
72
+ pry_tester = Pry.new(:input => InputTester.new("x = 5;"), :output => str_output)
73
+ pry_tester.rep(o)
74
+ str_output.string.should == ""
75
+ end
76
+
77
+
78
+ it 'should suppress output if input ends in a ";" (multi-line)' do
79
+ o = Object.new
80
+ str_output = StringIO.new
81
+
82
+ pry_tester = Pry.new(:input => InputTester.new("def self.blah", ":test", "end;"), :output => str_output)
83
+ pry_tester.rep(o)
84
+ str_output.string.should == ""
85
+ end
86
+
87
+ it 'should be able to evaluate exceptions normally' do
88
+ o = Exception.new
89
+ str_output = StringIO.new
90
+
91
+ was_called = false
92
+ pry_tester = Pry.new(:input => InputTester.new("self"),
93
+ :output => str_output,
94
+ :exception_handler => proc { was_called = true })
95
+
96
+ pry_tester.rep(o)
97
+ was_called.should == false
98
+ end
99
+
100
+ it 'should notice when exceptions are raised' do
101
+ o = Exception.new
102
+ str_output = StringIO.new
103
+
104
+ was_called = false
105
+ pry_tester = Pry.new(:input => InputTester.new("raise self"),
106
+ :output => str_output,
107
+ :exception_handler => proc { was_called = true })
108
+
109
+ pry_tester.rep(o)
110
+ was_called.should == true
111
+ end
64
112
  end
65
113
 
66
114
  describe "repl" do
@@ -75,16 +123,6 @@ describe Pry do
75
123
 
76
124
  o.instance_variable_get(:@x).should == 10
77
125
  end
78
-
79
- it 'should execute start session and end session hooks' do
80
- input = InputTester.new("exit")
81
- str_output = StringIO.new
82
- o = Object.new
83
-
84
- pry_tester = Pry.start(o, :input => input, :output => str_output)
85
- str_output.string.should =~ /Beginning.*#{o}/
86
- str_output.string.should =~ /Ending.*#{o}/
87
- end
88
126
  end
89
127
 
90
128
  describe "test loading rc files" do
@@ -119,13 +157,13 @@ describe Pry do
119
157
  Pry.should_load_rc = false
120
158
  end
121
159
  end
122
-
160
+
123
161
  describe "nesting" do
124
162
  after do
125
163
  Pry.reset_defaults
126
164
  Pry.color = false
127
165
  end
128
-
166
+
129
167
  it 'should nest properly' do
130
168
  Pry.input = InputTester.new("pry", "pry", "pry", "\"nest:\#\{Pry.nesting.level\}\"", "exit_all")
131
169
 
@@ -144,7 +182,7 @@ describe Pry do
144
182
  [Object.new, {}, []].each do |val|
145
183
  str_input = StringIO.new("def hello;end")
146
184
  Pry.new(:input => str_input, :output => StringIO.new).rep(val)
147
-
185
+
148
186
  val.methods(false).map(&:to_sym).include?(:hello).should == true
149
187
  end
150
188
  end
@@ -172,9 +210,9 @@ describe Pry do
172
210
  val.class.instance_methods(false).map(&:to_sym).include?(:hello).should == true
173
211
  end
174
212
  end
175
-
176
- end
177
-
213
+
214
+ end
215
+
178
216
 
179
217
  describe "commands" do
180
218
  it 'should run a command with no parameter' do
@@ -212,7 +250,7 @@ describe Pry do
212
250
  Pry.reset_defaults
213
251
  Pry.color = false
214
252
  end
215
-
253
+
216
254
  it "should start a pry session on the receiver (first form)" do
217
255
  Pry.input = InputTester.new("self", "exit")
218
256
 
@@ -231,7 +269,7 @@ describe Pry do
231
269
  Pry.output = str_output
232
270
 
233
271
  pry 20
234
-
272
+
235
273
  str_output.string.should =~ /20/
236
274
  end
237
275
 
@@ -256,14 +294,14 @@ describe Pry do
256
294
  Pry.reset_defaults
257
295
  Pry.color = false
258
296
  end
259
-
297
+
260
298
  describe "input" do
261
299
 
262
300
  after do
263
301
  Pry.reset_defaults
264
302
  Pry.color = false
265
303
  end
266
-
304
+
267
305
  it 'should set the input default, and the default should be overridable' do
268
306
  Pry.input = InputTester.new("5")
269
307
 
@@ -308,7 +346,7 @@ describe Pry do
308
346
 
309
347
  arity_multi_input = Class.new do
310
348
  attr_accessor :prompt
311
-
349
+
312
350
  def readline(*args)
313
351
  @prompt = args.first
314
352
  "exit"
@@ -318,15 +356,15 @@ describe Pry do
318
356
  Pry.start(self, :input => arity_multi_input, :output => Pry::NullOutput)
319
357
  arity_multi_input.prompt.should == nil
320
358
  end
321
-
359
+
322
360
  end
323
361
 
324
362
  it 'should set the output default, and the default should be overridable' do
325
363
  Pry.input = InputTester.new("5", "6", "7")
326
-
364
+
327
365
  str_output = StringIO.new
328
366
  Pry.output = str_output
329
-
367
+
330
368
  Pry.new.rep
331
369
  str_output.string.should =~ /5/
332
370
 
@@ -351,7 +389,7 @@ describe Pry do
351
389
  after do
352
390
  Object.remove_const(:RCTest)
353
391
  end
354
-
392
+
355
393
  it "should execute command in the appropriate object context" do
356
394
  result = Pry.run_command "ls", :context => RCTest
357
395
  result.map(&:to_sym).should == [:@x]
@@ -365,7 +403,7 @@ describe Pry do
365
403
  it "should execute command and show output with :show_output => true flag" do
366
404
  str = StringIO.new
367
405
  Pry.output = str
368
- result = Pry.run_command "ls -av", :context => RCTest, :show_output => true
406
+ result = Pry.run_command "ls -afv", :context => RCTest, :show_output => true
369
407
  str.string.should =~ /global variables/
370
408
  Pry.output = $stdout
371
409
  end
@@ -377,6 +415,30 @@ describe Pry do
377
415
  end
378
416
 
379
417
  describe "commands" do
418
+ it 'should interpolate ruby code into commands' do
419
+ klass = Class.new(Pry::CommandBase) do
420
+ command "hello", "", :keep_retval => true do |arg|
421
+ arg
422
+ end
423
+ end
424
+
425
+ $test_interpolation = "bing"
426
+ str_output = StringIO.new
427
+ Pry.new(:input => StringIO.new("hello #{$test_interpolation}"), :output => str_output, :commands => klass).rep
428
+ str_output.string.should =~ /bing/
429
+ $test_interpolation = nil
430
+ end
431
+
432
+ it 'should create a comand in a nested context and that command should be accessible from the parent' do
433
+ str_input = StringIO.new("@x=nil\ncd 7\n_pry_.commands.instance_eval {\ncommand('bing') { |arg| run arg }\n}\ncd ..\nbing ls\nexit")
434
+ str_output = StringIO.new
435
+ Pry.input = str_input
436
+ obj = Object.new
437
+ Pry.new(:output => str_output).repl(obj)
438
+ Pry.input = Readline
439
+ str_output.string.should =~ /@x/
440
+ end
441
+
380
442
  it 'should define a command that keeps its return value' do
381
443
  class Command68 < Pry::CommandBase
382
444
  command "hello", "", :keep_retval => true do
@@ -384,8 +446,9 @@ describe Pry do
384
446
  end
385
447
  end
386
448
  str_output = StringIO.new
387
- Pry.new(:input => StringIO.new("hello"), :output => str_output, :commands => Command68).rep
449
+ Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => Command68).rep
388
450
  str_output.string.should =~ /:kept_hello/
451
+ str_output.string.should =~ /=>/
389
452
 
390
453
  Object.remove_const(:Command68)
391
454
  end
@@ -397,13 +460,13 @@ describe Pry do
397
460
  end
398
461
  end
399
462
  str_output = StringIO.new
400
- Pry.new(:input => StringIO.new("hello"), :output => str_output, :commands => Command68).rep
463
+ Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => Command68).rep
401
464
  (str_output.string =~ /:kept_hello/).should == nil
465
+ str_output.string !~ /=>/
402
466
 
403
467
  Object.remove_const(:Command68)
404
468
  end
405
-
406
-
469
+
407
470
  it 'should set the commands default, and the default should be overridable' do
408
471
  class Command0 < Pry::CommandBase
409
472
  command "hello" do
@@ -424,7 +487,7 @@ describe Pry do
424
487
  end
425
488
 
426
489
  str_output = StringIO.new
427
-
490
+
428
491
  Pry.new(:input => InputTester.new("goodbye"), :output => str_output, :commands => Command1).rep
429
492
  str_output.string.should =~ /goodbye world/
430
493
 
@@ -438,8 +501,9 @@ describe Pry do
438
501
  end
439
502
  end
440
503
 
441
- Command2.commands.keys.size.should == 2
504
+ Command2.commands.keys.size.should == 3
442
505
  Command2.commands.keys.include?("help").should == true
506
+ Command2.commands.keys.include?("install").should == true
443
507
  Command2.commands.keys.include?("h").should == true
444
508
 
445
509
  Object.remove_const(:Command2)
@@ -473,7 +537,7 @@ describe Pry do
473
537
  end
474
538
 
475
539
  it 'should change description of a command using desc' do
476
-
540
+
477
541
  class Command7 < Pry::Commands
478
542
  end
479
543
 
@@ -485,10 +549,10 @@ describe Pry do
485
549
 
486
550
  Command7.commands["help"][:description].should.not == orig
487
551
  Command7.commands["help"][:description].should == "blah"
488
-
552
+
489
553
  Object.remove_const(:Command7)
490
554
  end
491
-
555
+
492
556
  it 'should run a command from within a command' do
493
557
  class Command01 < Pry::Commands
494
558
  command "v" do
@@ -520,30 +584,33 @@ describe Pry do
520
584
  str_output = StringIO.new
521
585
  Pry.new(:print => proc {}, :input => InputTester.new("v"),
522
586
  :output => str_output, :commands => Command4).rep("john")
523
- str_output.string.chomp.should == "john"
587
+
588
+ str_output.string.rstrip.should == "john"
524
589
 
525
590
  Object.remove_const(:Command3)
526
591
  Object.remove_const(:Command4)
527
592
  end
528
593
 
529
594
  it 'should import commands from another command object' do
530
- class Command3 < Pry::CommandBase
595
+ Object.remove_const(:Command77) if Object.const_defined?(:Command77)
596
+
597
+ class Command77 < Pry::CommandBase
531
598
  import_from Pry::Commands, "status", "jump-to"
532
599
  end
533
600
 
534
601
  str_output = StringIO.new
535
602
  Pry.new(:print => proc {}, :input => InputTester.new("status"),
536
- :output => str_output, :commands => Command3).rep("john")
603
+ :output => str_output, :commands => Command77).rep("john")
537
604
  str_output.string.should =~ /Status:/
538
605
 
539
- Object.remove_const(:Command3)
606
+ Object.remove_const(:Command77)
540
607
  end
541
608
 
542
609
  it 'should delete some inherited commands when using delete method' do
543
610
  class Command3 < Pry::Commands
544
611
  command "v" do
545
612
  end
546
-
613
+
547
614
  delete "show_doc", "show_method"
548
615
  delete "ls"
549
616
  end
@@ -572,15 +639,15 @@ describe Pry do
572
639
 
573
640
  # suppress evaluation output
574
641
  Pry.print = proc {}
575
-
642
+
576
643
  str_output = StringIO.new
577
644
  Pry.new(:input => InputTester.new("jump-to"), :output => str_output, :commands => Command3).rep
578
- str_output.string.chomp.should == "jump-to the music"
645
+ str_output.string.rstrip.should == "jump-to the music"
579
646
 
580
647
  str_output = StringIO.new
581
648
  Pry.new(:input => InputTester.new("help"), :output => str_output, :commands => Command3).rep
582
- str_output.string.chomp.should == "help to the music"
583
-
649
+ str_output.string.rstrip.should == "help to the music"
650
+
584
651
  Object.remove_const(:Command3)
585
652
 
586
653
  Pry.reset_defaults
@@ -601,7 +668,7 @@ describe Pry do
601
668
  Pry.new(:input => InputTester.new("\"test\""), :output => str_output,
602
669
  :print => proc { |out, value| out.puts value.reverse }).rep
603
670
  str_output.string.should == "tset\n"
604
-
671
+
605
672
  Pry.new.print.should == Pry.print
606
673
  str_output = StringIO.new
607
674
  Pry.new(:input => InputTester.new("\"test\""), :output => str_output).rep
@@ -629,7 +696,7 @@ describe Pry do
629
696
  Pry.start("carl", :input => StringIO.new("exit self"), :output => Pry::NullOutput).should == "carl"
630
697
  end
631
698
  end
632
-
699
+
633
700
  describe "prompts" do
634
701
  it 'should set the prompt default, and the default should be overridable (single prompt)' do
635
702
  new_prompt = proc { "test prompt> " }
@@ -644,7 +711,7 @@ describe Pry do
644
711
  pry_tester.prompt.should == new_prompt
645
712
  pry_tester.select_prompt(true, 0).should == "A"
646
713
  pry_tester.select_prompt(false, 0).should == "A"
647
-
714
+
648
715
  Pry.new.prompt.should == Pry.prompt
649
716
  Pry.new.select_prompt(true, 0).should == "test prompt> "
650
717
  Pry.new.select_prompt(false, 0).should == "test prompt> "
@@ -663,7 +730,7 @@ describe Pry do
663
730
  pry_tester.prompt.should == new_prompt
664
731
  pry_tester.select_prompt(true, 0).should == "A"
665
732
  pry_tester.select_prompt(false, 0).should == "B"
666
-
733
+
667
734
  Pry.new.prompt.should == Pry.prompt
668
735
  Pry.new.select_prompt(true, 0).should == "test prompt> "
669
736
  Pry.new.select_prompt(false, 0).should == "test prompt* "
@@ -676,12 +743,12 @@ describe Pry do
676
743
  :before_session => proc { |out,_| out.puts "HELLO" },
677
744
  :after_session => proc { |out,_| out.puts "BYE" }
678
745
  }
679
-
746
+
680
747
  str_output = StringIO.new
681
748
  Pry.new(:output => str_output).repl
682
749
  str_output.string.should =~ /HELLO/
683
750
  str_output.string.should =~ /BYE/
684
-
751
+
685
752
  Pry.input.rewind
686
753
 
687
754
  str_output = StringIO.new
@@ -703,7 +770,7 @@ describe Pry do
703
770
  :before_session => proc { |out,_| out.puts "OPEN" }
704
771
  }
705
772
  ).repl
706
-
773
+
707
774
  str_output.string.should =~ /OPEN/
708
775
 
709
776
  Pry.input.rewind
@@ -1,3 +1,8 @@
1
+ # Ensure we do not execute any rc files
2
+ Pry::RC_FILES.clear
3
+ Pry.color = false
4
+ Pry.should_load_rc = false
5
+
1
6
  class Module
2
7
  public :remove_const
3
8
  end
@@ -30,6 +35,7 @@ class Pry
30
35
  # null output class - doesn't write anywwhere.
31
36
  class NullOutput
32
37
  def self.puts(*) end
38
+ def self.string(*) end
33
39
  end
34
40
  end
35
41