pry 0.9.7.4-i386-mswin32 → 0.9.8-i386-mswin32

Sign up to get free protection for your applications and to get access to all the features.
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