pry 0.9.9.6pre2-i386-mswin32 → 0.9.10-i386-mswin32

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 (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