pry 0.9.9.6pre2-i386-mingw32 → 0.9.10-i386-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. data/CHANGELOG +41 -0
  2. data/CONTRIBUTORS +27 -26
  3. data/README.markdown +4 -4
  4. data/Rakefile +2 -2
  5. data/lib/pry.rb +25 -19
  6. data/lib/pry/cli.rb +31 -10
  7. data/lib/pry/code.rb +41 -83
  8. data/lib/pry/command.rb +87 -76
  9. data/lib/pry/command_set.rb +13 -20
  10. data/lib/pry/completion.rb +139 -121
  11. data/lib/pry/config.rb +4 -0
  12. data/lib/pry/core_extensions.rb +88 -31
  13. data/lib/pry/default_commands/cd.rb +31 -8
  14. data/lib/pry/default_commands/context.rb +4 -58
  15. data/lib/pry/default_commands/easter_eggs.rb +1 -1
  16. data/lib/pry/default_commands/editing.rb +21 -14
  17. data/lib/pry/default_commands/find_method.rb +5 -7
  18. data/lib/pry/default_commands/gist.rb +187 -0
  19. data/lib/pry/default_commands/hist.rb +6 -6
  20. data/lib/pry/default_commands/input_and_output.rb +73 -129
  21. data/lib/pry/default_commands/introspection.rb +107 -52
  22. data/lib/pry/default_commands/ls.rb +1 -1
  23. data/lib/pry/default_commands/misc.rb +0 -5
  24. data/lib/pry/default_commands/whereami.rb +92 -0
  25. data/lib/pry/helpers/base_helpers.rb +6 -1
  26. data/lib/pry/helpers/command_helpers.rb +30 -9
  27. data/lib/pry/helpers/documentation_helpers.rb +7 -7
  28. data/lib/pry/helpers/options_helpers.rb +1 -1
  29. data/lib/pry/helpers/text.rb +7 -9
  30. data/lib/pry/history.rb +15 -2
  31. data/lib/pry/hooks.rb +1 -1
  32. data/lib/pry/indent.rb +17 -10
  33. data/lib/pry/method.rb +35 -19
  34. data/lib/pry/module_candidate.rb +130 -0
  35. data/lib/pry/pry_class.rb +54 -22
  36. data/lib/pry/pry_instance.rb +71 -14
  37. data/lib/pry/repl_file_loader.rb +80 -0
  38. data/lib/pry/version.rb +1 -1
  39. data/lib/pry/wrapped_module.rb +121 -142
  40. data/pry.gemspec +13 -13
  41. data/test/candidate_helper1.rb +11 -0
  42. data/test/candidate_helper2.rb +8 -0
  43. data/test/helper.rb +16 -0
  44. data/test/test_code.rb +1 -1
  45. data/test/test_command.rb +364 -270
  46. data/test/test_command_integration.rb +235 -267
  47. data/test/test_completion.rb +36 -0
  48. data/test/test_control_d_handler.rb +45 -0
  49. data/test/test_default_commands/example.erb +5 -0
  50. data/test/test_default_commands/test_cd.rb +316 -11
  51. data/test/test_default_commands/test_context.rb +143 -192
  52. data/test/test_default_commands/test_documentation.rb +81 -14
  53. data/test/test_default_commands/test_find_method.rb +10 -2
  54. data/test/test_default_commands/test_input.rb +102 -111
  55. data/test/test_default_commands/test_introspection.rb +17 -12
  56. data/test/test_default_commands/test_ls.rb +8 -6
  57. data/test/test_default_commands/test_shell.rb +18 -15
  58. data/test/test_default_commands/test_show_source.rb +170 -44
  59. data/test/test_exception_whitelist.rb +6 -2
  60. data/test/test_hooks.rb +32 -0
  61. data/test/test_input_stack.rb +19 -16
  62. data/test/test_method.rb +0 -4
  63. data/test/test_prompt.rb +60 -0
  64. data/test/test_pry.rb +23 -31
  65. data/test/test_pry_defaults.rb +75 -57
  66. data/test/test_syntax_checking.rb +12 -11
  67. data/test/test_wrapped_module.rb +103 -0
  68. metadata +72 -26
@@ -3,42 +3,47 @@ require 'helper'
3
3
  if !mri18_and_no_real_source_location?
4
4
  describe "Pry::DefaultCommands::Documentation" do
5
5
  describe "show-doc" do
6
+ before do
7
+ @str_output = StringIO.new
8
+ @o = Object.new
9
+ end
10
+
6
11
  it 'should output a method\'s documentation' do
7
- redirect_pry_io(InputTester.new("show-doc sample_method", "exit-all"), str_output=StringIO.new) do
12
+ redirect_pry_io(InputTester.new("show-doc sample_method", "exit-all"), @str_output) do
8
13
  pry
9
14
  end
10
15
 
11
- str_output.string.should =~ /sample doc/
16
+ @str_output.string.should =~ /sample doc/
12
17
  end
13
18
 
14
19
  it 'should output a method\'s documentation with line numbers' do
15
- redirect_pry_io(InputTester.new("show-doc sample_method -l", "exit-all"), str_output=StringIO.new) do
20
+ redirect_pry_io(InputTester.new("show-doc sample_method -l", "exit-all"), @str_output) do
16
21
  pry
17
22
  end
18
23
 
19
- str_output.string.should =~ /\d: sample doc/
24
+ @str_output.string.should =~ /\d: sample doc/
20
25
  end
21
26
 
22
27
  it 'should output a method\'s documentation with line numbers (base one)' do
23
- redirect_pry_io(InputTester.new("show-doc sample_method -b", "exit-all"), str_output=StringIO.new) do
28
+ redirect_pry_io(InputTester.new("show-doc sample_method -b", "exit-all"), @str_output) do
24
29
  pry
25
30
  end
26
31
 
27
- str_output.string.should =~ /1: sample doc/
32
+ @str_output.string.should =~ /1: sample doc/
28
33
  end
29
34
 
30
35
  it 'should output a method\'s documentation if inside method without needing to use method name' do
31
- o = Object.new
36
+ Pad.str_output = @str_output
32
37
 
33
38
  # sample comment
34
- def o.sample
35
- redirect_pry_io(InputTester.new("show-doc", "exit-all"), $out=StringIO.new) do
39
+ def @o.sample
40
+ redirect_pry_io(InputTester.new("show-doc", "exit-all"), Pad.str_output) do
36
41
  binding.pry
37
42
  end
38
43
  end
39
- o.sample
40
- $out.string.should =~ /sample comment/
41
- $out = nil
44
+ @o.sample
45
+
46
+ Pad.str_output.string.should =~ /sample comment/
42
47
  end
43
48
 
44
49
  it "should be able to find super methods" do
@@ -206,11 +211,11 @@ if !mri18_and_no_real_source_location?
206
211
  end
207
212
  end
208
213
 
209
- redirect_pry_io(InputTester.new("show-doc BetaClass", "exit-all"), out=StringIO.new) do
214
+ redirect_pry_io(InputTester.new("show-doc BetaClass", "exit-all"), outp=StringIO.new) do
210
215
  AlphaClass.pry
211
216
  end
212
217
 
213
- out.string.should =~ /nested beta/
218
+ outp.string.should =~ /nested beta/
214
219
  end
215
220
  end
216
221
 
@@ -243,6 +248,68 @@ if !mri18_and_no_real_source_location?
243
248
  result.should =~ /local monkeypatch/
244
249
  end
245
250
  end
251
+
252
+ describe "when no class/module arg is given" do
253
+ before do
254
+ module TestHost
255
+
256
+ # hello there froggy
257
+ module M
258
+ def d; end
259
+ def e; end
260
+ end
261
+ end
262
+ end
263
+
264
+ after do
265
+ Object.remove_const(:TestHost)
266
+ end
267
+
268
+ it 'should return doc for current module' do
269
+ redirect_pry_io(InputTester.new("show-doc"), out = StringIO.new) do
270
+ Pry.start(TestHost::M)
271
+ end
272
+
273
+ out.string.should =~ /hello there froggy/
274
+ end
275
+
276
+ end
277
+
278
+
279
+ describe "should skip over broken modules" do
280
+ before do
281
+ module TestHost
282
+
283
+ # hello
284
+ module M
285
+ binding.eval("def a; end", "dummy.rb", 1)
286
+ binding.eval("def b; end", "dummy.rb", 2)
287
+ binding.eval("def c; end", "dummy.rb", 3)
288
+ end
289
+
290
+ # goodbye
291
+ module M
292
+ def d; end
293
+ def e; end
294
+ end
295
+ end
296
+ end
297
+
298
+ after do
299
+ Object.remove_const(:TestHost)
300
+ end
301
+
302
+ it 'should return doc for first valid module' do
303
+ redirect_pry_io(InputTester.new("show-doc TestHost::M"), out = StringIO.new) do
304
+ Pry.start
305
+ end
306
+
307
+ out.string.should =~ /goodbye/
308
+ out.string.should.not =~ /hello/
309
+ end
310
+
311
+ end
246
312
  end
313
+
247
314
  end
248
315
  end
@@ -20,7 +20,7 @@ unless Pry::Helpers::BaseHelpers.mri_18?
20
20
  it "should find a method by regex" do
21
21
  mock_pry("find-method hell MyKlass").should =~ /MyKlass.*?hello/m
22
22
  end
23
-
23
+
24
24
  it "should NOT match a method that does not match the regex" do
25
25
  mock_pry("find-method hell MyKlass").should.not =~ /MyKlass.*?goodbye/m
26
26
  end
@@ -35,7 +35,15 @@ unless Pry::Helpers::BaseHelpers.mri_18?
35
35
  mock_pry("find-method timothy MyKlass").should.not =~ /MyKlass.*?goodbye/m
36
36
  end
37
37
  end
38
-
38
+
39
+ it "should work with badly behaved constants" do
40
+ MyKlass::X = Object.new
41
+ def (MyKlass::X).hash
42
+ raise "mooo"
43
+ end
44
+
45
+ mock_pry("find-method -c timothy MyKlass").should =~ /MyKlass.*?hello/m
46
+ end
39
47
  end
40
48
 
41
49
  Object.remove_const(:MyKlass)
@@ -1,149 +1,148 @@
1
1
  require 'helper'
2
2
 
3
3
  describe "Pry::DefaultCommands::Input" do
4
+ before do
5
+ @str_output = StringIO.new
6
+ end
4
7
 
5
8
  describe "amend-line" do
6
9
  it 'should correctly amend the last line of input when no line number specified ' do
7
- str_output = StringIO.new
8
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "amend-line puts :blah", "show-input", "exit-all"), str_output) do
10
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "amend-line puts :blah", "show-input", "exit-all"), @str_output) do
9
11
  pry
10
12
  end
11
- str_output.string.should =~ /\A\d+: def hello\n\d+: puts :blah/
13
+
14
+ @str_output.string.should =~ /\A\d+: def hello\n\d+: puts :blah/
12
15
  end
13
16
 
14
17
  it 'should correctly amend the specified line of input when line number given ' do
15
- str_output = StringIO.new
16
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 1 def goodbye", "show-input", "exit-all"), str_output) do
18
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 1 def goodbye", "show-input", "exit-all"), @str_output) do
17
19
  pry
18
20
  end
19
- str_output.string.should =~ /\A\d+: def goodbye\n\d+: puts :bing\n\d+: puts :bang/
21
+
22
+ @str_output.string.should =~ /\A\d+: def goodbye\n\d+: puts :bing\n\d+: puts :bang/
20
23
  end
21
24
 
22
25
  it 'should correctly amend the specified line of input when line number given, 0 should behave as 1 ' do
23
- str_output = StringIO.new
24
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 0 def goodbye", "show-input", "exit-all"), str_output) do
26
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 0 def goodbye", "show-input", "exit-all"), @str_output) do
25
27
  pry
26
28
  end
27
- str_output.string.should =~ /\A\d+: def goodbye\n\d+: puts :bing\n\d+: puts :bang/
29
+
30
+ @str_output.string.should =~ /\A\d+: def goodbye\n\d+: puts :bing\n\d+: puts :bang/
28
31
  end
29
32
 
30
33
  it 'should correctly amend the specified line of input when line number given (negative number)' do
31
- str_output = StringIO.new
32
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line -1 puts :bink", "show-input", "exit-all"), str_output) do
34
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line -1 puts :bink", "show-input", "exit-all"), @str_output) do
33
35
  pry
34
36
  end
35
- str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bing\n\d+: puts :bink/
36
37
 
37
- str_output = StringIO.new
38
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line -2 puts :bink", "show-input", "exit-all"), str_output) do
38
+ @str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bing\n\d+: puts :bink/
39
+
40
+ @str_output = StringIO.new
41
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line -2 puts :bink", "show-input", "exit-all"), @str_output) do
39
42
  pry
40
43
  end
41
- str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bink\n\d+: puts :bang/
44
+
45
+ @str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bink\n\d+: puts :bang/
42
46
  end
43
47
 
44
48
  it 'should correctly amend the specified range of lines of input when range of negative numbers given (negative number)' do
45
- str_output = StringIO.new
46
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boat", "amend-line -3..-2 puts :bink", "show-input", "exit-all"), str_output) do
49
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boat", "amend-line -3..-2 puts :bink", "show-input", "exit-all"), @str_output) do
47
50
  pry
48
51
  end
49
- str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bink\n\d+: puts :boat/
52
+
53
+ @str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bink\n\d+: puts :boat/
50
54
  end
51
55
 
52
56
  it 'should correctly amend the specified line with string interpolated text' do
53
- str_output = StringIO.new
54
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", 'amend-line puts "#{goodbye}"', "show-input", "exit-all"), str_output) do
57
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", 'amend-line puts "#{goodbye}"', "show-input", "exit-all"), @str_output) do
55
58
  pry
56
59
  end
57
60
 
58
- str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bing\n\d+: puts \"\#\{goodbye\}\"/
61
+ @str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bing\n\d+: puts \"\#\{goodbye\}\"/
59
62
  end
60
63
 
61
64
  it 'should display error if nothing to amend' do
62
- str_output = StringIO.new
63
- redirect_pry_io(InputTester.new("amend-line", "exit-all"), str_output) do
65
+ redirect_pry_io(InputTester.new("amend-line", "exit-all"), @str_output) do
64
66
  pry
65
67
  end
66
- str_output.string.should =~ /No input to amend/
68
+
69
+ @str_output.string.should =~ /No input to amend/
67
70
  end
68
71
 
69
72
 
70
73
  it 'should correctly amend the specified range of lines' do
71
- str_output = StringIO.new
72
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :heart", "amend-line 2..3 puts :bong", "show-input", "exit-all"), str_output) do
74
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :heart", "amend-line 2..3 puts :bong", "show-input", "exit-all"), @str_output) do
73
75
  pry
74
76
  end
75
- str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bong\n\d+: puts :heart/
77
+
78
+ @str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bong\n\d+: puts :heart/
76
79
  end
77
80
 
78
81
  it 'should correctly delete a specific line using the ! for content' do
79
- str_output = StringIO.new
80
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line 3 !", "show-input", "exit-all"), str_output) do
82
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line 3 !", "show-input", "exit-all"), @str_output) do
81
83
  pry
82
84
  end
83
85
 
84
- str_output.string.should =~ /\d+: def hello\n\d+: puts :bing\n\d+: puts :boast\n\d+: puts :heart/
86
+ @str_output.string.should =~ /\d+: def hello\n\d+: puts :bing\n\d+: puts :boast\n\d+: puts :heart/
85
87
  end
86
88
 
87
89
  it 'should correctly delete a range of lines using the ! for content' do
88
- str_output = StringIO.new
89
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line 2..4 !", "show-input", "exit-all"), str_output) do
90
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line 2..4 !", "show-input", "exit-all"), @str_output) do
90
91
  pry
91
92
  end
92
93
 
93
- str_output.string.should =~ /\d+: def hello\n\d+: puts :heart\n\Z/
94
+ @str_output.string.should =~ /\d+: def hello\n\d+: puts :heart\n\Z/
94
95
  end
95
96
 
96
97
  it 'should correctly delete the previous line using the ! for content' do
97
- str_output = StringIO.new
98
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line !", "show-input", "exit-all"), str_output) do
98
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line !", "show-input", "exit-all"), @str_output) do
99
99
  pry
100
100
  end
101
101
 
102
- str_output.string.should =~ /\d+: def hello\n\d+: puts :bing\n\d+: puts :bang\n\d+: puts :boast\n\Z/
102
+ @str_output.string.should =~ /\d+: def hello\n\d+: puts :bing\n\d+: puts :bang\n\d+: puts :boast\n\Z/
103
103
  end
104
104
 
105
105
  it 'should correctly amend the specified range of lines, using negative numbers in range' do
106
- str_output = StringIO.new
107
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line 2..-2 puts :bong", "show-input", "exit-all"), str_output) do
106
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line 2..-2 puts :bong", "show-input", "exit-all"), @str_output) do
108
107
  pry
109
108
  end
110
- str_output.string.should =~ /\d+: def hello\n\d+: puts :bong\n\d+: puts :heart/
109
+ @str_output.string.should =~ /\d+: def hello\n\d+: puts :bong\n\d+: puts :heart/
111
110
  end
112
111
 
113
112
  it 'should correctly insert a new line of input before a specified line using the > syntax' do
114
- str_output = StringIO.new
115
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 2 >puts :inserted", "show-input", "exit-all"), str_output) do
113
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 2 >puts :inserted", "show-input", "exit-all"), @str_output) do
116
114
  pry
117
115
  end
118
- str_output.string.should =~ /\d+: def hello\n\d+: puts :inserted\n\d+: puts :bing\n\d+: puts :bang/
116
+
117
+ @str_output.string.should =~ /\d+: def hello\n\d+: puts :inserted\n\d+: puts :bing\n\d+: puts :bang/
119
118
  end
120
119
 
121
120
  it 'should correctly insert a new line of input before a specified line using the > syntax (should ignore second value of range)' do
122
- str_output = StringIO.new
123
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 2..21 >puts :inserted", "show-input", "exit-all"), str_output) do
121
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 2..21 >puts :inserted", "show-input", "exit-all"), @str_output) do
124
122
  pry
125
123
  end
126
- str_output.string.should =~ /\d+: def hello\n\d+: puts :inserted\n\d+: puts :bing\n\d+: puts :bang/
124
+
125
+ @str_output.string.should =~ /\d+: def hello\n\d+: puts :inserted\n\d+: puts :bing\n\d+: puts :bang/
127
126
  end
128
127
  end
129
128
 
130
129
  describe "show-input" do
131
130
  it 'should correctly show the current lines in the input buffer' do
132
- str_output = StringIO.new
133
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "show-input", "exit-all"), str_output) do
131
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "show-input", "exit-all"), @str_output) do
134
132
  pry
135
133
  end
136
- str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bing/
134
+
135
+ @str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bing/
137
136
  end
138
137
  end
139
138
 
140
139
  describe "!" do
141
140
  it 'should correctly clear the input buffer ' do
142
- str_output = StringIO.new
143
- redirect_pry_io(InputTester.new("def hello", "puts :bing", "!", "show-input", "exit-all"), str_output) do
141
+ redirect_pry_io(InputTester.new("def hello", "puts :bing", "!", "show-input", "exit-all"), @str_output) do
144
142
  pry
145
143
  end
146
- stripped_output = str_output.string.strip!
144
+
145
+ stripped_output = @str_output.string.strip!
147
146
  stripped_output.each_line.count.should == 1
148
147
  stripped_output.should =~ /Input buffer cleared!/
149
148
  end
@@ -153,21 +152,23 @@ describe "Pry::DefaultCommands::Input" do
153
152
  it 'should play a string variable (with no args)' do
154
153
  b = binding
155
154
  b.eval('x = "\"hello\""')
156
- redirect_pry_io(InputTester.new("play x", "exit-all"), str_output = StringIO.new) do
155
+ redirect_pry_io(InputTester.new("play x", "exit-all"), @str_output) do
157
156
  Pry.start b, :hooks => Pry::Hooks.new
158
157
  end
159
- str_output.string.should =~ /hello/
158
+
159
+ @str_output.string.should =~ /hello/
160
160
  end
161
161
 
162
162
  it 'should play a string variable (with no args) using --lines to select what to play' do
163
163
  b = binding
164
164
  b.eval('x = "\"hello\"\n\"goodbye\"\n\"love\""')
165
- redirect_pry_io(InputTester.new("play x --lines 1", "exit-all"), str_output = StringIO.new) do
165
+ redirect_pry_io(InputTester.new("play x --lines 1", "exit-all"), @str_output) do
166
166
  Pry.start b, :hooks => Pry::Hooks.new
167
167
  end
168
- str_output.string.should =~ /hello/
169
- str_output.string.should.not =~ /love/
170
- str_output.string.should.not =~ /goodbye/
168
+
169
+ @str_output.string.should =~ /hello/
170
+ @str_output.string.should.not =~ /love/
171
+ @str_output.string.should.not =~ /goodbye/
171
172
  end
172
173
 
173
174
  it 'should play documentation with the -d switch' do
@@ -179,7 +180,7 @@ describe "Pry::DefaultCommands::Input" do
179
180
  :test_method_content
180
181
  end
181
182
 
182
- redirect_pry_io(InputTester.new('play -d test_method', "exit-all"), str_output = StringIO.new) do
183
+ redirect_pry_io(InputTester.new('play -d test_method', "exit-all")) do
183
184
  o.pry
184
185
  end
185
186
 
@@ -198,7 +199,7 @@ describe "Pry::DefaultCommands::Input" do
198
199
  :test_method_content
199
200
  end
200
201
 
201
- redirect_pry_io(InputTester.new('play -d test_method --lines 2..3', "exit-all"), str_output = StringIO.new) do
202
+ redirect_pry_io(InputTester.new('play -d test_method --lines 2..3', "exit-all")) do
202
203
  o.pry
203
204
  end
204
205
 
@@ -215,11 +216,11 @@ describe "Pry::DefaultCommands::Input" do
215
216
  :test_method_content
216
217
  end
217
218
 
218
- redirect_pry_io(InputTester.new('play -m test_method --lines 2', "exit-all"), str_output = StringIO.new) do
219
+ redirect_pry_io(InputTester.new('play -m test_method --lines 2', "exit-all"), @str_output) do
219
220
  o.pry
220
221
  end
221
222
 
222
- str_output.string.should =~ /:test_method_content/
223
+ @str_output.string.should =~ /:test_method_content/
223
224
  end
224
225
 
225
226
  it 'should APPEND to the input buffer when playing a line with play -m, not replace it' do
@@ -228,11 +229,12 @@ describe "Pry::DefaultCommands::Input" do
228
229
  :test_method_content
229
230
  end
230
231
 
231
- redirect_pry_io(InputTester.new('def another_test_method', 'play -m test_method --lines 2', 'show-input', 'exit-all'), str_output = StringIO.new) do
232
+ redirect_pry_io(InputTester.new('def another_test_method', 'play -m test_method --lines 2', 'show-input', 'exit-all'), @str_output) do
232
233
  o.pry
233
234
  end
234
- str_output.string.should =~ /def another_test_method/
235
- str_output.string.should =~ /:test_method_content/
235
+
236
+ @str_output.string.should =~ /def another_test_method/
237
+ @str_output.string.should =~ /:test_method_content/
236
238
  end
237
239
 
238
240
 
@@ -246,7 +248,7 @@ describe "Pry::DefaultCommands::Input" do
246
248
  @var3 = 40
247
249
  end
248
250
 
249
- redirect_pry_io(InputTester.new('play -m test_method --lines 3..4', "exit-all"), str_output = StringIO.new) do
251
+ redirect_pry_io(InputTester.new('play -m test_method --lines 3..4', "exit-all"), @str_output) do
250
252
  o.pry
251
253
  end
252
254
 
@@ -254,8 +256,8 @@ describe "Pry::DefaultCommands::Input" do
254
256
  o.instance_variable_get(:@var1).should == 20
255
257
  o.instance_variable_get(:@var2).should == 30
256
258
  o.instance_variable_get(:@var3).should == nil
257
- str_output.string.should =~ /30/
258
- str_output.string.should.not =~ /20/
259
+ @str_output.string.should =~ /30/
260
+ @str_output.string.should.not =~ /20/
259
261
  end
260
262
  end
261
263
 
@@ -268,11 +270,11 @@ describe "Pry::DefaultCommands::Input" do
268
270
  it 'should display the correct history' do
269
271
  @hist.push "hello"
270
272
  @hist.push "world"
271
- str_output = StringIO.new
272
- redirect_pry_io(InputTester.new("hist", "exit-all"), str_output) do
273
+ redirect_pry_io(InputTester.new("hist", "exit-all"), @str_output) do
273
274
  pry
274
275
  end
275
- str_output.string.should =~ /hello\n.*world/
276
+
277
+ @str_output.string.should =~ /hello\n.*world/
276
278
  end
277
279
 
278
280
  it 'should replay history correctly (single item)' do
@@ -280,8 +282,7 @@ describe "Pry::DefaultCommands::Input" do
280
282
  @hist.push "@x = 10"
281
283
  @hist.push "@y = 20"
282
284
  @hist.push "@z = 30"
283
- str_output = StringIO.new
284
- redirect_pry_io(InputTester.new("hist --replay -1", "exit-all"), str_output) do
285
+ redirect_pry_io(InputTester.new("hist --replay -1", "exit-all")) do
285
286
  o.pry
286
287
  end
287
288
  o.instance_variable_get(:@x).should == nil
@@ -293,8 +294,7 @@ describe "Pry::DefaultCommands::Input" do
293
294
  o = Object.new
294
295
  @hist.push "@x = 10"
295
296
  @hist.push "@y = 20"
296
- str_output = StringIO.new
297
- redirect_pry_io(InputTester.new("hist --replay 0..2", "exit-all"), str_output) do
297
+ redirect_pry_io(InputTester.new("hist --replay 0..2", "exit-all")) do
298
298
  o.pry
299
299
  end
300
300
  o.instance_variable_get(:@x).should == 10
@@ -312,25 +312,24 @@ describe "Pry::DefaultCommands::Input" do
312
312
  @hist.push "def boink 2"
313
313
  @hist.push "place holder"
314
314
 
315
- str_output = StringIO.new
316
- redirect_pry_io(InputTester.new("hist --grep o", "exit-all"), str_output) do
315
+ redirect_pry_io(InputTester.new("hist --grep o", "exit-all"), @str_output) do
317
316
  pry
318
317
  end
319
- str_output.string.should =~ /\d:.*?box\n\d:.*?button\n\d:.*?orange/
318
+ @str_output.string.should =~ /\d:.*?box\n\d:.*?button\n\d:.*?orange/
320
319
 
321
320
  # test more than one word in a regex match (def blah)
322
- str_output = StringIO.new
323
- redirect_pry_io(InputTester.new("hist --grep def blah", "exit-all"), str_output) do
321
+ @str_output = StringIO.new
322
+ redirect_pry_io(InputTester.new("hist --grep def blah", "exit-all"), @str_output) do
324
323
  pry
325
324
  end
326
- str_output.string.should =~ /def blah 1/
325
+ @str_output.string.should =~ /def blah 1/
327
326
 
327
+ @str_output = StringIO.new
328
328
  # test more than one word with leading white space in a regex match (def boink)
329
- str_output = StringIO.new
330
- redirect_pry_io(InputTester.new("hist --grep def boink", "exit-all"), str_output) do
329
+ redirect_pry_io(InputTester.new("hist --grep def boink", "exit-all"), @str_output) do
331
330
  pry
332
331
  end
333
- str_output.string.should =~ /def boink 2/
332
+ @str_output.string.should =~ /def boink 2/
334
333
  end
335
334
 
336
335
  it 'should return last N lines in history with --tail switch' do
@@ -338,13 +337,12 @@ describe "Pry::DefaultCommands::Input" do
338
337
  @hist.push v
339
338
  end
340
339
 
341
- str_output = StringIO.new
342
- redirect_pry_io(InputTester.new("hist --tail 3", "exit-all"), str_output) do
340
+ redirect_pry_io(InputTester.new("hist --tail 3", "exit-all"), @str_output) do
343
341
  pry
344
342
  end
345
343
 
346
- str_output.string.each_line.count.should == 3
347
- str_output.string.should =~ /x\n\d+:.*y\n\d+:.*z/
344
+ @str_output.string.each_line.count.should == 3
345
+ @str_output.string.should =~ /x\n\d+:.*y\n\d+:.*z/
348
346
  end
349
347
 
350
348
  it 'should apply --tail after --grep' do
@@ -355,12 +353,12 @@ describe "Pry::DefaultCommands::Input" do
355
353
  @hist.push "puts 5"
356
354
 
357
355
  str_output = StringIO.new
358
- redirect_pry_io(InputTester.new("hist --tail 2 --grep print", "exit-all"), str_output) do
356
+ redirect_pry_io(InputTester.new("hist --tail 2 --grep print", "exit-all"), @str_output) do
359
357
  pry
360
358
  end
361
359
 
362
- str_output.string.each_line.count.should == 2
363
- str_output.string.should =~ /\d:.*?print 2\n\d:.*?print 4/
360
+ @str_output.string.each_line.count.should == 2
361
+ @str_output.string.should =~ /\d:.*?print 2\n\d:.*?print 4/
364
362
  end
365
363
 
366
364
  it 'should apply --head after --grep' do
@@ -370,13 +368,12 @@ describe "Pry::DefaultCommands::Input" do
370
368
  @hist.push "print 4"
371
369
  @hist.push "print 5"
372
370
 
373
- str_output = StringIO.new
374
- redirect_pry_io(InputTester.new("hist --head 2 --grep print", "exit-all"), str_output) do
371
+ redirect_pry_io(InputTester.new("hist --head 2 --grep print", "exit-all"), @str_output) do
375
372
  pry
376
373
  end
377
374
 
378
- str_output.string.each_line.count.should == 2
379
- str_output.string.should =~ /\d:.*?print 2\n\d:.*?print 4/
375
+ @str_output.string.each_line.count.should == 2
376
+ @str_output.string.should =~ /\d:.*?print 2\n\d:.*?print 4/
380
377
  end
381
378
 
382
379
  # strangeness in this test is due to bug in Readline::HISTORY not
@@ -386,13 +383,12 @@ describe "Pry::DefaultCommands::Input" do
386
383
  @hist.push v
387
384
  end
388
385
 
389
- str_output = StringIO.new
390
- redirect_pry_io(InputTester.new("hist --head 4", "exit-all"), str_output) do
386
+ redirect_pry_io(InputTester.new("hist --head 4", "exit-all"), @str_output) do
391
387
  pry
392
388
  end
393
389
 
394
- str_output.string.each_line.count.should == 4
395
- str_output.string.should =~ /a\n\d+:.*b\n\d+:.*c/
390
+ @str_output.string.each_line.count.should == 4
391
+ @str_output.string.should =~ /a\n\d+:.*b\n\d+:.*c/
396
392
  end
397
393
 
398
394
  # strangeness in this test is due to bug in Readline::HISTORY not
@@ -402,36 +398,31 @@ describe "Pry::DefaultCommands::Input" do
402
398
  @hist.push v
403
399
  end
404
400
 
405
- str_output = StringIO.new
406
- redirect_pry_io(InputTester.new("hist --show 1..4", "exit-all"), str_output) do
401
+ redirect_pry_io(InputTester.new("hist --show 1..4", "exit-all"), @str_output) do
407
402
  pry
408
403
  end
409
404
 
410
- str_output.string.each_line.count.should == 4
411
- str_output.string.should =~ /b\n\d+:.*c\n\d+:.*d/
405
+ @str_output.string.each_line.count.should == 4
406
+ @str_output.string.should =~ /b\n\d+:.*c\n\d+:.*d/
412
407
  end
413
408
 
414
409
  it "should not contain duplicated lines" do
415
- str_output = StringIO.new
416
- redirect_pry_io(InputTester.new("3", "_ += 1", "_ += 1", "hist", "exit-all"), str_output) do
410
+ redirect_pry_io(InputTester.new("3", "_ += 1", "_ += 1", "hist", "exit-all"), @str_output) do
417
411
  pry
418
412
  end
419
413
 
420
- str_output.string.each_line.grep(/_ \+= 1/).count.should == 1
414
+ @str_output.string.each_line.grep(/_ \+= 1/).count.should == 1
421
415
  end
422
416
 
423
417
  it "should not contain duplicated lines" do
424
- str_output = StringIO.new
425
- redirect_pry_io(InputTester.new(":place_holder", "2 + 2", "", "", "3 + 3", "hist", "exit-all"), str_output) do
418
+ redirect_pry_io(InputTester.new(":place_holder", "2 + 2", "", "", "3 + 3", "hist", "exit-all"), @str_output) do
426
419
  pry
427
420
  end
428
421
 
429
- a = str_output.string.each_line.to_a.index{|line| line.include?("2 + 2") }
430
- b = str_output.string.each_line.to_a.index{|line| line.include?("3 + 3") }
422
+ a = @str_output.string.each_line.to_a.index{|line| line.include?("2 + 2") }
423
+ b = @str_output.string.each_line.to_a.index{|line| line.include?("3 + 3") }
431
424
 
432
425
  (a + 1).should == b
433
426
  end
434
427
  end
435
-
436
-
437
428
  end