pry 0.9.7.4-i386-mswin32 → 0.9.8-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 (65) hide show
  1. data/.gitignore +2 -3
  2. data/CHANGELOG +43 -0
  3. data/README.markdown +3 -1
  4. data/Rakefile +51 -32
  5. data/bin/pry +2 -80
  6. data/lib/pry.rb +33 -26
  7. data/lib/pry/cli.rb +152 -0
  8. data/lib/pry/code.rb +351 -0
  9. data/lib/pry/command.rb +422 -0
  10. data/lib/pry/command_set.rb +259 -129
  11. data/lib/pry/commands.rb +0 -1
  12. data/lib/pry/config.rb +43 -9
  13. data/lib/pry/default_commands/context.rb +109 -92
  14. data/lib/pry/default_commands/documentation.rb +174 -63
  15. data/lib/pry/default_commands/easter_eggs.rb +26 -2
  16. data/lib/pry/default_commands/gems.rb +65 -37
  17. data/lib/pry/default_commands/input.rb +175 -243
  18. data/lib/pry/default_commands/introspection.rb +173 -112
  19. data/lib/pry/default_commands/ls.rb +96 -114
  20. data/lib/pry/default_commands/shell.rb +175 -70
  21. data/lib/pry/helpers/base_helpers.rb +7 -2
  22. data/lib/pry/helpers/command_helpers.rb +71 -77
  23. data/lib/pry/helpers/options_helpers.rb +10 -41
  24. data/lib/pry/helpers/text.rb +24 -4
  25. data/lib/pry/history.rb +55 -17
  26. data/lib/pry/history_array.rb +2 -0
  27. data/lib/pry/hooks.rb +252 -0
  28. data/lib/pry/indent.rb +9 -5
  29. data/lib/pry/method.rb +149 -50
  30. data/lib/pry/plugins.rb +12 -4
  31. data/lib/pry/pry_class.rb +69 -26
  32. data/lib/pry/pry_instance.rb +187 -115
  33. data/lib/pry/version.rb +1 -1
  34. data/lib/pry/wrapped_module.rb +73 -0
  35. data/man/pry.1 +195 -0
  36. data/man/pry.1.html +204 -0
  37. data/man/pry.1.ronn +141 -0
  38. data/pry.gemspec +29 -32
  39. data/test/helper.rb +32 -36
  40. data/test/test_cli.rb +78 -0
  41. data/test/test_code.rb +201 -0
  42. data/test/test_command.rb +327 -0
  43. data/test/test_command_integration.rb +512 -0
  44. data/test/test_command_set.rb +338 -12
  45. data/test/test_completion.rb +1 -1
  46. data/test/test_default_commands.rb +1 -2
  47. data/test/test_default_commands/test_context.rb +27 -5
  48. data/test/test_default_commands/test_documentation.rb +20 -8
  49. data/test/test_default_commands/test_input.rb +84 -45
  50. data/test/test_default_commands/test_introspection.rb +74 -17
  51. data/test/test_default_commands/test_ls.rb +9 -36
  52. data/test/test_default_commands/test_shell.rb +240 -13
  53. data/test/test_hooks.rb +490 -0
  54. data/test/test_indent.rb +2 -0
  55. data/test/test_method.rb +60 -0
  56. data/test/test_pry.rb +29 -904
  57. data/test/test_pry_defaults.rb +380 -0
  58. data/test/test_pry_history.rb +24 -24
  59. data/test/test_syntax_checking.rb +63 -0
  60. data/test/test_wrapped_module.rb +71 -0
  61. metadata +50 -39
  62. data/lib/pry/command_context.rb +0 -53
  63. data/lib/pry/command_processor.rb +0 -181
  64. data/lib/pry/extended_commands/user_command_api.rb +0 -65
  65. data/test/test_command_processor.rb +0 -176
@@ -3,29 +3,41 @@ require 'helper'
3
3
  describe "Pry::DefaultCommands::Documentation" do
4
4
  describe "show-doc" do
5
5
  it 'should output a method\'s documentation' do
6
- str_output = StringIO.new
7
- redirect_pry_io(InputTester.new("show-doc sample_method", "exit-all"), str_output) do
6
+ redirect_pry_io(InputTester.new("show-doc sample_method", "exit-all"), str_output=StringIO.new) do
8
7
  pry
9
8
  end
10
9
 
11
10
  str_output.string.should =~ /sample doc/
12
11
  end
13
12
 
14
- it 'should output a method\'s documentation if inside method without needing to use method name' do
15
- $str_output = StringIO.new
13
+ it 'should output a method\'s documentation with line numbers' do
14
+ redirect_pry_io(InputTester.new("show-doc sample_method -l", "exit-all"), str_output=StringIO.new) do
15
+ pry
16
+ end
17
+
18
+ str_output.string.should =~ /\d: sample doc/
19
+ end
20
+
21
+ it 'should output a method\'s documentation with line numbers (base one)' do
22
+ redirect_pry_io(InputTester.new("show-doc sample_method -b", "exit-all"), str_output=StringIO.new) do
23
+ pry
24
+ end
25
+
26
+ str_output.string.should =~ /1: sample doc/
27
+ end
16
28
 
29
+ it 'should output a method\'s documentation if inside method without needing to use method name' do
17
30
  o = Object.new
18
31
 
19
32
  # sample comment
20
33
  def o.sample
21
- redirect_pry_io(InputTester.new("show-doc", "exit-all"), $str_output) do
34
+ redirect_pry_io(InputTester.new("show-doc", "exit-all"), $out=StringIO.new) do
22
35
  binding.pry
23
36
  end
24
37
  end
25
38
  o.sample
26
-
27
- $str_output.string.should =~ /sample comment/
28
- $str_output = nil
39
+ $out.string.should =~ /sample comment/
40
+ $out = nil
29
41
  end
30
42
 
31
43
  it "should be able to find super methods" do
@@ -154,7 +154,7 @@ describe "Pry::DefaultCommands::Input" do
154
154
  b = binding
155
155
  b.eval('x = "\"hello\""')
156
156
  redirect_pry_io(InputTester.new("play x", "exit-all"), str_output = StringIO.new) do
157
- Pry.start b, :hooks => {}
157
+ Pry.start b, :hooks => Pry::Hooks.new
158
158
  end
159
159
  str_output.string.should =~ /hello/
160
160
  end
@@ -163,66 +163,100 @@ describe "Pry::DefaultCommands::Input" do
163
163
  b = binding
164
164
  b.eval('x = "\"hello\"\n\"goodbye\"\n\"love\""')
165
165
  redirect_pry_io(InputTester.new("play x --lines 1", "exit-all"), str_output = StringIO.new) do
166
- Pry.start b, :hooks => {}
166
+ Pry.start b, :hooks => Pry::Hooks.new
167
167
  end
168
168
  str_output.string.should =~ /hello/
169
169
  str_output.string.should.not =~ /love/
170
170
  str_output.string.should.not =~ /goodbye/
171
171
  end
172
172
 
173
+ it 'should play documentation with the -d switch' do
174
+ o = Object.new
175
+
176
+ # @v = 10
177
+ # @y = 20
178
+ def o.test_method
179
+ :test_method_content
180
+ end
181
+
182
+ redirect_pry_io(InputTester.new('play -d test_method', "exit-all"), str_output = StringIO.new) do
183
+ o.pry
184
+ end
185
+
186
+ o.instance_variable_get(:@v).should == 10
187
+ o.instance_variable_get(:@y).should == 20
188
+ end
189
+
190
+ it 'should play documentation with the -d switch (restricted by --lines)' do
191
+ o = Object.new
192
+
193
+ # @x = 0
194
+ # @v = 10
195
+ # @y = 20
196
+ # @z = 30
197
+ def o.test_method
198
+ :test_method_content
199
+ end
200
+
201
+ redirect_pry_io(InputTester.new('play -d test_method --lines 2..3', "exit-all"), str_output = StringIO.new) do
202
+ o.pry
203
+ end
204
+
205
+ o.instance_variable_get(:@x).should == nil
206
+ o.instance_variable_get(:@z).should == nil
207
+ o.instance_variable_get(:@v).should == 10
208
+ o.instance_variable_get(:@y).should == 20
209
+ end
210
+
211
+
173
212
  it 'should play a method with the -m switch (a single line)' do
174
- $o = Object.new
175
- def $o.test_method
213
+ o = Object.new
214
+ def o.test_method
176
215
  :test_method_content
177
216
  end
178
217
 
179
- redirect_pry_io(InputTester.new('play -m $o.test_method --lines 2', "exit-all"), str_output = StringIO.new) do
180
- pry
218
+ redirect_pry_io(InputTester.new('play -m test_method --lines 2', "exit-all"), str_output = StringIO.new) do
219
+ o.pry
181
220
  end
182
221
 
183
222
  str_output.string.should =~ /:test_method_content/
184
- $o = nil
185
223
  end
186
224
 
187
225
  it 'should APPEND to the input buffer when playing a line with play -m, not replace it' do
188
- $o = Object.new
189
- def $o.test_method
226
+ o = Object.new
227
+ def o.test_method
190
228
  :test_method_content
191
229
  end
192
230
 
193
- redirect_pry_io(InputTester.new('def another_test_method', 'play -m $o.test_method --lines 2', 'show-input', 'exit-all'), str_output = StringIO.new) do
194
- pry
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
+ o.pry
195
233
  end
196
234
  str_output.string.should =~ /def another_test_method/
197
235
  str_output.string.should =~ /:test_method_content/
198
- $o = nil
199
236
  end
200
237
 
201
238
 
202
239
  it 'should play a method with the -m switch (multiple line)' do
203
- $o = Object.new
204
- class << $o
205
- attr_accessor :var1, :var2
206
- end
240
+ o = Object.new
207
241
 
208
- def $o.test_method
242
+ def o.test_method
243
+ @var0 = 10
209
244
  @var1 = 20
210
245
  @var2 = 30
246
+ @var3 = 40
211
247
  end
212
248
 
213
- obj = Object.new
214
- b = Pry.binding_for(obj)
215
-
216
- redirect_pry_io(InputTester.new('play -m $o.test_method --lines 2..3', "exit-all"), str_output = StringIO.new) do
217
- b.pry
249
+ redirect_pry_io(InputTester.new('play -m test_method --lines 3..4', "exit-all"), str_output = StringIO.new) do
250
+ o.pry
218
251
  end
219
252
 
220
- obj.instance_variable_get(:@var1).should == 20
221
- obj.instance_variable_get(:@var2).should == 30
253
+ o.instance_variable_get(:@var0).should == nil
254
+ o.instance_variable_get(:@var1).should == 20
255
+ o.instance_variable_get(:@var2).should == 30
256
+ o.instance_variable_get(:@var3).should == nil
222
257
  str_output.string.should =~ /30/
223
258
  str_output.string.should.not =~ /20/
224
259
  end
225
-
226
260
  end
227
261
 
228
262
  describe "hist" do
@@ -235,31 +269,36 @@ describe "Pry::DefaultCommands::Input" do
235
269
  @hist.push "hello"
236
270
  @hist.push "world"
237
271
  str_output = StringIO.new
238
- redirect_pry_io(InputTester.new("hist", "exit-all", :history => @hist), str_output) do
272
+ redirect_pry_io(InputTester.new("hist", "exit-all"), str_output) do
239
273
  pry
240
274
  end
241
275
  str_output.string.should =~ /hello\n.*world/
242
276
  end
243
277
 
244
278
  it 'should replay history correctly (single item)' do
245
- @hist.push ":blah"
246
- @hist.push ":bucket"
247
- @hist.push ":ostrich"
279
+ o = Object.new
280
+ @hist.push "@x = 10"
281
+ @hist.push "@y = 20"
282
+ @hist.push "@z = 30"
248
283
  str_output = StringIO.new
249
- redirect_pry_io(InputTester.new("hist --replay -1", "exit-all", :history => @hist), str_output) do
250
- pry
284
+ redirect_pry_io(InputTester.new("hist --replay -1", "exit-all"), str_output) do
285
+ o.pry
251
286
  end
252
- str_output.string.should =~ /ostrich/
287
+ o.instance_variable_get(:@x).should == nil
288
+ o.instance_variable_get(:@y).should == nil
289
+ o.instance_variable_get(:@z).should == 30
253
290
  end
254
291
 
255
292
  it 'should replay a range of history correctly (range of items)' do
256
- @hist.push ":hello"
257
- @hist.push ":carl"
293
+ o = Object.new
294
+ @hist.push "@x = 10"
295
+ @hist.push "@y = 20"
258
296
  str_output = StringIO.new
259
- redirect_pry_io(InputTester.new("hist --replay 0..2", "exit-all", :history => @hist), str_output) do
260
- pry
297
+ redirect_pry_io(InputTester.new("hist --replay 0..2", "exit-all"), str_output) do
298
+ o.pry
261
299
  end
262
- str_output.string.should =~ /:hello\n.*:carl/
300
+ o.instance_variable_get(:@x).should == 10
301
+ o.instance_variable_get(:@y).should == 20
263
302
  end
264
303
 
265
304
  it 'should grep for correct lines in history' do
@@ -274,21 +313,21 @@ describe "Pry::DefaultCommands::Input" do
274
313
  @hist.push "place holder"
275
314
 
276
315
  str_output = StringIO.new
277
- redirect_pry_io(InputTester.new("hist --grep o", "exit-all", :history => @hist), str_output) do
316
+ redirect_pry_io(InputTester.new("hist --grep o", "exit-all"), str_output) do
278
317
  pry
279
318
  end
280
319
  str_output.string.should =~ /\d:.*?box\n\d:.*?button\n\d:.*?orange/
281
320
 
282
321
  # test more than one word in a regex match (def blah)
283
322
  str_output = StringIO.new
284
- redirect_pry_io(InputTester.new("hist --grep def blah", "exit-all", :history => @hist), str_output) do
323
+ redirect_pry_io(InputTester.new("hist --grep def blah", "exit-all"), str_output) do
285
324
  pry
286
325
  end
287
326
  str_output.string.should =~ /def blah 1/
288
327
 
289
328
  # test more than one word with leading white space in a regex match (def boink)
290
329
  str_output = StringIO.new
291
- redirect_pry_io(InputTester.new("hist --grep def boink", "exit-all", :history => @hist), str_output) do
330
+ redirect_pry_io(InputTester.new("hist --grep def boink", "exit-all"), str_output) do
292
331
  pry
293
332
  end
294
333
  str_output.string.should =~ /def boink 2/
@@ -300,7 +339,7 @@ describe "Pry::DefaultCommands::Input" do
300
339
  end
301
340
 
302
341
  str_output = StringIO.new
303
- redirect_pry_io(InputTester.new("hist --tail 3", "exit-all", :history => @hist), str_output) do
342
+ redirect_pry_io(InputTester.new("hist --tail 3", "exit-all"), str_output) do
304
343
  pry
305
344
  end
306
345
 
@@ -316,7 +355,7 @@ describe "Pry::DefaultCommands::Input" do
316
355
  end
317
356
 
318
357
  str_output = StringIO.new
319
- redirect_pry_io(InputTester.new("hist --head 4", "exit-all", :history => @hist), str_output) do
358
+ redirect_pry_io(InputTester.new("hist --head 4", "exit-all"), str_output) do
320
359
  pry
321
360
  end
322
361
 
@@ -332,7 +371,7 @@ describe "Pry::DefaultCommands::Input" do
332
371
  end
333
372
 
334
373
  str_output = StringIO.new
335
- redirect_pry_io(InputTester.new("hist --show 1..4", "exit-all", :history => @hist), str_output) do
374
+ redirect_pry_io(InputTester.new("hist --show 1..4", "exit-all"), str_output) do
336
375
  pry
337
376
  end
338
377
 
@@ -342,7 +381,7 @@ describe "Pry::DefaultCommands::Input" do
342
381
 
343
382
  it "should not contain duplicated lines" do
344
383
  str_output = StringIO.new
345
- redirect_pry_io(InputTester.new("3", "_ += 1", "_ += 1", "hist", "exit-all", :history => @hist), str_output) do
384
+ redirect_pry_io(InputTester.new("3", "_ += 1", "_ += 1", "hist", "exit-all"), str_output) do
346
385
  pry
347
386
  end
348
387
 
@@ -351,7 +390,7 @@ describe "Pry::DefaultCommands::Input" do
351
390
 
352
391
  it "should not contain duplicated lines" do
353
392
  str_output = StringIO.new
354
- redirect_pry_io(InputTester.new(":place_holder", "2 + 2", "", "", "3 + 3", "hist", "exit-all", :history => @hist), str_output) do
393
+ redirect_pry_io(InputTester.new(":place_holder", "2 + 2", "", "", "3 + 3", "hist", "exit-all"), str_output) do
355
394
  pry
356
395
  end
357
396
 
@@ -48,52 +48,52 @@ describe "Pry::DefaultCommands::Introspection" do
48
48
  end
49
49
 
50
50
  it "should reload the file if it is a ruby file" do
51
- tf = Tempfile.new(["tmp", ".rb"])
51
+ tf = Tempfile.new(["pry", ".rb"])
52
52
  path = tf.path
53
53
 
54
54
  mock_pry("edit #{path}", "$rand").should =~ /#{@rand}/
55
55
 
56
- tf.close
56
+ tf.close(true)
57
57
  end
58
58
 
59
59
  it "should not reload the file if it is not a ruby file" do
60
- tf = Tempfile.new(["tmp", ".py"])
60
+ tf = Tempfile.new(["pry", ".py"])
61
61
  path = tf.path
62
62
 
63
63
  mock_pry("edit #{path}", "$rand").should.not =~ /#{@rand}/
64
64
 
65
- tf.close
65
+ tf.close(true)
66
66
  end
67
67
 
68
68
  it "should not reload a ruby file if -n is given" do
69
- tf = Tempfile.new(["tmp", ".rb"])
69
+ tf = Tempfile.new(["pry", ".rb"])
70
70
  path = tf.path
71
71
 
72
72
  mock_pry("edit -n #{path}", "$rand").should.not =~ /#{@rand}/
73
73
 
74
- tf.close
74
+ tf.close(true)
75
75
  end
76
76
 
77
77
  it "should reload a non-ruby file if -r is given" do
78
- tf = Tempfile.new(["tmp", ".pryrc"])
78
+ tf = Tempfile.new(["pry", ".pryrc"])
79
79
  path = tf.path
80
80
 
81
81
  mock_pry("edit -r #{path}", "$rand").should =~ /#{@rand}/
82
82
 
83
- tf.close
83
+ tf.close(true)
84
84
  end
85
85
  end
86
86
  end
87
87
 
88
88
  describe "with --ex" do
89
89
  before do
90
- @tf = Tempfile.new(["tmp", ".rb"])
90
+ @tf = Tempfile.new(["pry", ".rb"])
91
91
  @path = @tf.path
92
92
  @tf << "1\n2\nraise RuntimeError"
93
93
  @tf.flush
94
94
  end
95
95
  after do
96
- @tf.close
96
+ @tf.close(true)
97
97
  File.unlink("#{@path}c") if File.exists?("#{@path}c") #rbx
98
98
  end
99
99
  it "should open the correct file" do
@@ -133,7 +133,7 @@ describe "Pry::DefaultCommands::Introspection" do
133
133
 
134
134
  it 'should start editor on first level of backtrace when --ex used with no argument ' do
135
135
  pry_instance = Pry.new(:input => StringIO.new("edit -n --ex"), :output => StringIO.new)
136
- pry_instance.last_exception = MockPryException.new("a:1", "b:2", "c:3")
136
+ pry_instance.last_exception = mock_exception("a:1", "b:2", "c:3")
137
137
  pry_instance.rep(self)
138
138
  @__ex_file__.should == "a"
139
139
  @__ex_line__.should == 1
@@ -141,7 +141,7 @@ describe "Pry::DefaultCommands::Introspection" do
141
141
 
142
142
  it 'should start editor on first level of backtrace when --ex 0 used ' do
143
143
  pry_instance = Pry.new(:input => StringIO.new("edit -n --ex 0"), :output => StringIO.new)
144
- pry_instance.last_exception = MockPryException.new("a:1", "b:2", "c:3")
144
+ pry_instance.last_exception = mock_exception("a:1", "b:2", "c:3")
145
145
  pry_instance.rep(self)
146
146
  @__ex_file__.should == "a"
147
147
  @__ex_line__.should == 1
@@ -149,7 +149,7 @@ describe "Pry::DefaultCommands::Introspection" do
149
149
 
150
150
  it 'should start editor on second level of backtrace when --ex 1 used' do
151
151
  pry_instance = Pry.new(:input => StringIO.new("edit -n --ex 1"), :output => StringIO.new)
152
- pry_instance.last_exception = MockPryException.new("a:1", "b:2", "c:3")
152
+ pry_instance.last_exception = mock_exception("a:1", "b:2", "c:3")
153
153
  pry_instance.rep(self)
154
154
  @__ex_file__.should == "b"
155
155
  @__ex_line__.should == 2
@@ -157,7 +157,7 @@ describe "Pry::DefaultCommands::Introspection" do
157
157
 
158
158
  it 'should start editor on third level of backtrace when --ex 2 used' do
159
159
  pry_instance = Pry.new(:input => StringIO.new("edit -n --ex 2"), :output => StringIO.new)
160
- pry_instance.last_exception = MockPryException.new("a:1", "b:2", "c:3")
160
+ pry_instance.last_exception = mock_exception("a:1", "b:2", "c:3")
161
161
  pry_instance.rep(self)
162
162
  @__ex_file__.should == "c"
163
163
  @__ex_line__.should == 3
@@ -165,7 +165,7 @@ describe "Pry::DefaultCommands::Introspection" do
165
165
 
166
166
  it 'should display error message when backtrace level is out of bounds (using --ex 4)' do
167
167
  pry_instance = Pry.new(:input => StringIO.new("edit -n --ex 4"), :output => str_output = StringIO.new)
168
- pry_instance.last_exception = MockPryException.new("a:1", "b:2", "c:3")
168
+ pry_instance.last_exception = mock_exception("a:1", "b:2", "c:3")
169
169
  pry_instance.rep(self)
170
170
  str_output.string.should =~ /Exception has no associated file/
171
171
  end
@@ -254,6 +254,10 @@ describe "Pry::DefaultCommands::Introspection" do
254
254
  str_output.string.should =~ /def sample/
255
255
  end
256
256
 
257
+ it 'should output help' do
258
+ mock_pry('show-method -h').should =~ /Usage: show-method/
259
+ end
260
+
257
261
  it 'should output a method\'s source with line numbers' do
258
262
  str_output = StringIO.new
259
263
  redirect_pry_io(InputTester.new("show-method -l sample_method", "exit-all"), str_output) do
@@ -316,6 +320,59 @@ describe "Pry::DefaultCommands::Introspection" do
316
320
  str_output.string.should =~ /Mr flibble/
317
321
  end
318
322
 
323
+ it "should find instance methods with -M" do
324
+ c = Class.new{ def moo; "ve over!"; end }
325
+ mock_pry(binding, "cd c","show-method -M moo").should =~ /ve over/
326
+ end
327
+
328
+ it "should not find instance methods with -m" do
329
+ c = Class.new{ def moo; "ve over!"; end }
330
+ mock_pry(binding, "cd c", "show-method -m moo").should =~ /could not be found/
331
+ end
332
+
333
+ it "should find normal methods with -m" do
334
+ c = Class.new{ def self.moo; "ve over!"; end }
335
+ mock_pry(binding, "cd c", "show-method -m moo").should =~ /ve over/
336
+ end
337
+
338
+ it "should not find normal methods with -M" do
339
+ c = Class.new{ def self.moo; "ve over!"; end }
340
+ mock_pry(binding, "cd c", "show-method -M moo").should =~ /could not be found/
341
+ end
342
+
343
+ it "should find normal methods with no -M or -m" do
344
+ c = Class.new{ def self.moo; "ve over!"; end }
345
+ mock_pry(binding, "cd c", "show-method moo").should =~ /ve over/
346
+ end
347
+
348
+ it "should find instance methods with no -M or -m" do
349
+ c = Class.new{ def moo; "ve over!"; end }
350
+ mock_pry(binding, "cd c", "show-method moo").should =~ /ve over/
351
+ end
352
+
353
+ it "should find super methods" do
354
+ class Foo
355
+ def foo(*bars)
356
+ :super_wibble
357
+ end
358
+ end
359
+ o = Foo.new
360
+ Object.remove_const(:Foo)
361
+ def o.foo(*bars)
362
+ :wibble
363
+ end
364
+
365
+ mock_pry(binding, "show-method --super o.foo").should =~ /:super_wibble/
366
+
367
+ end
368
+
369
+ it "should not raise an exception when a non-extant super method is requested" do
370
+ o = Object.new
371
+ def o.foo(*bars); end
372
+
373
+ mock_pry(binding, "show-method --super o.foo").should =~ /'self.foo' has no super method/
374
+ end
375
+
319
376
  # dynamically defined method source retrieval is only supported in
320
377
  # 1.9 - where Method#source_location is native
321
378
  if RUBY_VERSION =~ /1.9/
@@ -364,7 +421,7 @@ describe "Pry::DefaultCommands::Introspection" do
364
421
  describe "edit-method" do
365
422
  describe "on a method defined in a file" do
366
423
  before do
367
- @tempfile = Tempfile.new(['tmp', '*.rb'])
424
+ @tempfile = Tempfile.new(['pry', '*.rb'])
368
425
  @tempfile.puts <<-EOS
369
426
  module A
370
427
  def a
@@ -398,7 +455,7 @@ describe "Pry::DefaultCommands::Introspection" do
398
455
  end
399
456
 
400
457
  after do
401
- @tempfile.close
458
+ @tempfile.close(true)
402
459
  end
403
460
 
404
461
  describe 'without -p' do