pry 0.9.11.4-i386-mingw32 → 0.9.12-i386-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/.travis.yml +2 -0
  2. data/CHANGELOG +19 -0
  3. data/Rakefile +4 -0
  4. data/lib/pry.rb +1 -1
  5. data/lib/pry/cli.rb +14 -8
  6. data/lib/pry/code.rb +3 -3
  7. data/lib/pry/command.rb +20 -5
  8. data/lib/pry/command_set.rb +3 -3
  9. data/lib/pry/commands.rb +1 -1
  10. data/lib/pry/commands/disabled_commands.rb +2 -0
  11. data/lib/pry/commands/ls.rb +1 -2
  12. data/lib/pry/commands/reload_code.rb +8 -1
  13. data/lib/pry/commands/show_info.rb +66 -5
  14. data/lib/pry/commands/show_source.rb +2 -1
  15. data/lib/pry/commands/whereami.rb +87 -19
  16. data/lib/pry/completion.rb +13 -4
  17. data/lib/pry/helpers/base_helpers.rb +5 -2
  18. data/lib/pry/helpers/command_helpers.rb +3 -1
  19. data/lib/pry/helpers/documentation_helpers.rb +18 -7
  20. data/lib/pry/helpers/table.rb +4 -4
  21. data/lib/pry/indent.rb +2 -7
  22. data/lib/pry/method.rb +89 -129
  23. data/lib/pry/method/disowned.rb +53 -0
  24. data/lib/pry/method/weird_method_locator.rb +186 -0
  25. data/lib/pry/module_candidate.rb +13 -8
  26. data/lib/pry/pager.rb +12 -11
  27. data/lib/pry/plugins.rb +2 -0
  28. data/lib/pry/pry_class.rb +19 -3
  29. data/lib/pry/pry_instance.rb +3 -0
  30. data/lib/pry/terminal.rb +78 -0
  31. data/lib/pry/version.rb +1 -1
  32. data/lib/pry/wrapped_module.rb +63 -1
  33. data/spec/Procfile +3 -0
  34. data/spec/command_helpers_spec.rb +21 -1
  35. data/spec/commands/ls_spec.rb +4 -0
  36. data/spec/commands/show_doc_spec.rb +255 -123
  37. data/spec/commands/show_source_spec.rb +421 -236
  38. data/spec/commands/whereami_spec.rb +60 -11
  39. data/spec/completion_spec.rb +6 -0
  40. data/spec/documentation_helper_spec.rb +73 -0
  41. data/spec/fixtures/whereami_helper.rb +6 -0
  42. data/spec/helpers/table_spec.rb +19 -0
  43. data/spec/method_spec.rb +24 -7
  44. metadata +12 -5
  45. data/.gemtest +0 -0
  46. data/lib/pry/commands/deprecated_commands.rb +0 -2
  47. data/lib/pry/terminal_info.rb +0 -48
@@ -63,7 +63,6 @@ describe "whereami" do
63
63
  end
64
64
 
65
65
  Cor.instance_method(:blimey!).source.should =~ /pry_eval/
66
-
67
66
  Cor.new.blimey!.should =~ /Cor#blimey!.*Look at me/m
68
67
  Object.remove_const(:Cor)
69
68
  end
@@ -85,26 +84,76 @@ describe "whereami" do
85
84
  Object.remove_const(:Cor)
86
85
  end
87
86
 
88
- it 'should display a description and and error if reading the file goes wrong' do
87
+ # Now that we use stagger_output (paging output) we no longer get
88
+ # the "From: " line, as we output everything in one go (not separate output.puts)
89
+ # and so the user just gets a single `Error: Cannot open
90
+ # "not.found.file.erb" for reading.`
91
+ # which is good enough IMO. Unfortunately we can't test for it
92
+ # though, as we don't hook stdout.
93
+ #
94
+ # it 'should display a description and error if reading the file goes wrong' do
95
+ # class Cor
96
+ # def blimey!
97
+ # eval <<-END, binding, "not.found.file.erb", 7
98
+ # Pad.tester = pry_tester(binding)
99
+ # Pad.tester.eval('whereami')
100
+ # END
101
+ # end
102
+ # end
103
+
104
+ # proc { Cor.new.blimey! }.should.raise(MethodSource::SourceNotFoundError)
105
+
106
+ # Pad.tester.last_output.should =~
107
+ # /From: not.found.file.erb @ line 7 Cor#blimey!:/
108
+ # Object.remove_const(:Cor)
109
+ # end
110
+
111
+ it 'should show code window (not just method source) if parameter passed to whereami' do
89
112
  class Cor
90
113
  def blimey!
91
- eval <<-END, binding, "not.found.file.erb", 7
92
- Pad.tester = pry_tester(binding)
93
- Pad.tester.eval('whereami')
94
- END
114
+ pry_eval(binding, 'whereami 3').should =~ /class Cor/
115
+ end
116
+ end
117
+ Cor.new.blimey!
118
+ Object.remove_const(:Cor)
119
+ end
120
+
121
+ it 'should show entire method when -m option used' do
122
+ old_size, Pry.config.default_window_size = Pry.config.default_window_size, 1
123
+ old_cutoff, Pry::Command::Whereami.method_size_cutoff = Pry::Command::Whereami.method_size_cutoff, 1
124
+ class Cor
125
+ def blimey!
126
+ 1
127
+ 2
128
+ pry_eval(binding, 'whereami -m').should =~ /def blimey/
95
129
  end
96
130
  end
131
+ Pry::Command::Whereami.method_size_cutoff, Pry.config.default_window_size = old_cutoff, old_size
132
+ Cor.new.blimey!
133
+ Object.remove_const(:Cor)
134
+ end
97
135
 
98
- proc { Cor.new.blimey! }.should.raise(MethodSource::SourceNotFoundError)
99
- Pad.tester.last_output.should =~
100
- /From: not.found.file.erb @ line 7 Cor#blimey!:/
136
+ it 'should show entire file when -f option used' do
137
+ class Cor
138
+ def blimey!
139
+ 1
140
+ 2
141
+ pry_eval(binding, 'whereami -f').should =~ /show entire file when -f option used/
142
+ end
143
+ end
144
+ Cor.new.blimey!
101
145
  Object.remove_const(:Cor)
102
146
  end
103
147
 
104
- it 'should show code window (not just method source) if parameter passed to whereami' do
148
+ it 'should show class when -c option used, and locate correct candidate' do
149
+ require 'fixtures/whereami_helper'
105
150
  class Cor
106
151
  def blimey!
107
- pry_eval(binding, 'whereami 3').should =~ /class Cor/
152
+ 1
153
+ 2
154
+ out = pry_eval(binding, 'whereami -c')
155
+ out.should =~ /class Cor/
156
+ out.should =~ /blimey/
108
157
  end
109
158
  end
110
159
  Cor.new.blimey!
@@ -230,4 +230,10 @@ describe Pry::InputCompleter do
230
230
  pry = Pry.new
231
231
  new_completer(binding, pry).call("pry.").should.not.include nil
232
232
  end
233
+
234
+ it "does not raise when complete file paths" do
235
+ should.not.raise(Pry::CommandError) {
236
+ new_completer(binding, Pry.new).call("cat lib/p")
237
+ }
238
+ end
233
239
  end
@@ -0,0 +1,73 @@
1
+ require 'helper'
2
+
3
+ describe Pry::Helpers::DocumentationHelpers do
4
+ before do
5
+ @helper = Pry::Helpers::DocumentationHelpers
6
+ end
7
+
8
+ describe "get_comment_content" do
9
+ it "should strip off the hash and unindent" do
10
+ @helper.get_comment_content(" # hello\n # world\n").should == "hello\nworld\n"
11
+ end
12
+
13
+ it "should strip out leading lines of hashes" do
14
+ @helper.get_comment_content("###############\n#hello\n#world\n").should == "hello\nworld\n"
15
+ end
16
+
17
+ it "should remove shebangs" do
18
+ @helper.get_comment_content("#!/usr/bin/env ruby\n# This is a program\n").should == "This is a program\n"
19
+ end
20
+
21
+ it "should unindent past separators" do
22
+ @helper.get_comment_content(" # Copyright Me <me@cirw.in>\n #--\n # So there.\n").should == "Copyright Me <me@cirw.in>\n--\nSo there.\n"
23
+ end
24
+ end
25
+
26
+ describe "process_rdoc" do
27
+ before do
28
+ Pry.color = true
29
+ end
30
+
31
+ after do
32
+ Pry.color = false
33
+ end
34
+
35
+ it "should syntax highlight indented code" do
36
+ @helper.process_rdoc(" 4 + 4\n").should.not == " 4 + 4\n"
37
+ end
38
+
39
+ it "should highlight words surrounded by +s" do
40
+ @helper.process_rdoc("the +parameter+").should =~ /the \e.*parameter\e.*/
41
+ end
42
+
43
+ it "should syntax highlight things in backticks" do
44
+ @helper.process_rdoc("for `Example`").should =~ /for `\e.*Example\e.*`/
45
+ end
46
+
47
+ it "should emphasise em tags" do
48
+ @helper.process_rdoc("for <em>science</em>").should == "for \e[1mscience\e[0m"
49
+ end
50
+
51
+ it "should emphasise italic tags" do
52
+ @helper.process_rdoc("for <i>science</i>").should == "for \e[1mscience\e[0m"
53
+ end
54
+
55
+ it "should syntax highlight code in <code>" do
56
+ @helper.process_rdoc("for <code>Example</code>").should =~ /for \e.*Example\e.*/
57
+ end
58
+
59
+ it "should not double-highlight backticks inside indented code" do
60
+ @helper.process_rdoc(" `echo 5`").should =~ /echo 5/
61
+ end
62
+
63
+ it "should not remove ++" do
64
+ @helper.process_rdoc("--\n comment in a bubble\n++").should =~ /\+\+/
65
+ end
66
+
67
+ it "should do nothing if Pry.color is false" do
68
+ Pry.color = false
69
+ @helper.process_rdoc(" 4 + 4\n").should == " 4 + 4\n"
70
+ end
71
+ end
72
+
73
+ end
@@ -0,0 +1,6 @@
1
+ class Cor
2
+ def a; end
3
+ def b; end
4
+ def c; end
5
+ def d; end
6
+ end
@@ -80,6 +80,25 @@ asfadsssaaad fasfaafdssd s
80
80
  end
81
81
  end
82
82
 
83
+ describe 'line length is smaller than the length of the longest word' do
84
+ before do
85
+ element = 'swizzle'
86
+ @elem_len = element.length
87
+ @out = [element, 'crime', 'fun']
88
+ end
89
+
90
+ it 'should not raise error' do
91
+ should.not.raise(FloatDomainError) {
92
+ Pry::Helpers.tablify(@out, @elem_len - 1)
93
+ }
94
+ end
95
+
96
+ it 'should format output as one column' do
97
+ table = Pry::Helpers.tablify(@out, @elem_len - 1).to_s
98
+ table.should == "swizzle\ncrime \nfun "
99
+ end
100
+ end
101
+
83
102
  describe 'decide between one-line or indented output' do
84
103
  Pry::Helpers.tablify_or_one_line('head', %w(ing)).should == 'head: ing'
85
104
  end
@@ -95,27 +95,29 @@ describe Pry::Method do
95
95
  end
96
96
 
97
97
  it "should find methods that have been undef'd" do
98
- m = Pry::Method.from_binding(Class.new do
98
+ c = Class.new do
99
99
  def self.bar
100
100
  class << self; undef bar; end
101
101
  binding
102
102
  end
103
- end.bar)
103
+ end
104
+
105
+ m = Pry::Method.from_binding(c.bar)
104
106
  m.name.should == "bar"
105
107
  end
106
108
 
107
109
  # Our source_location trick doesn't work, due to https://github.com/rubinius/rubinius/issues/953
108
110
  unless Pry::Helpers::BaseHelpers.rbx?
109
- it 'should find the super method correctly' do
110
- a = Class.new{ def gag; binding; end; def self.line; __LINE__; end }
111
- b = Class.new(a){ def gag; super; end }
111
+ it 'should find the super method correctly' do
112
+ a = Class.new{ def gag33; binding; end; def self.line; __LINE__; end }
113
+ b = Class.new(a){ def gag33; super; end }
112
114
 
113
- g = b.new.gag
115
+ g = b.new.gag33
114
116
  m = Pry::Method.from_binding(g)
115
117
 
116
118
  m.owner.should == a
117
119
  m.source_line.should == a.line
118
- m.name.should == "gag"
120
+ m.name.should == "gag33"
119
121
  end
120
122
  end
121
123
 
@@ -140,6 +142,21 @@ describe Pry::Method do
140
142
  m.source_line.should == a.line
141
143
  end
142
144
  end
145
+
146
+ it 'should find the right method even if it was renamed and replaced' do
147
+ o = Object.new
148
+ class << o
149
+ def borscht
150
+ "nips"
151
+ binding
152
+ end
153
+ alias paella borscht
154
+ def borscht() paella end
155
+ end
156
+
157
+ m = Pry::Method.from_binding(o.borscht)
158
+ m.source.should == Pry::Method(o.method(:paella)).source
159
+ end
143
160
  end
144
161
 
145
162
  describe 'super' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.11.4
4
+ version: 0.9.12
5
5
  prerelease:
6
6
  platform: i386-mingw32
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-01-20 00:00:00.000000000 Z
14
+ date: 2013-02-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: coderay
@@ -184,7 +184,6 @@ extensions: []
184
184
  extra_rdoc_files: []
185
185
  files:
186
186
  - .document
187
- - .gemtest
188
187
  - .gitignore
189
188
  - .travis.yml
190
189
  - .yardopts
@@ -216,8 +215,8 @@ files:
216
215
  - lib/pry/commands/cat/input_expression_formatter.rb
217
216
  - lib/pry/commands/cd.rb
218
217
  - lib/pry/commands/code_collector.rb
219
- - lib/pry/commands/deprecated_commands.rb
220
218
  - lib/pry/commands/disable_pry.rb
219
+ - lib/pry/commands/disabled_commands.rb
221
220
  - lib/pry/commands/easter_eggs.rb
222
221
  - lib/pry/commands/edit.rb
223
222
  - lib/pry/commands/edit/exception_patcher.rb
@@ -277,6 +276,8 @@ files:
277
276
  - lib/pry/hooks.rb
278
277
  - lib/pry/indent.rb
279
278
  - lib/pry/method.rb
279
+ - lib/pry/method/disowned.rb
280
+ - lib/pry/method/weird_method_locator.rb
280
281
  - lib/pry/module_candidate.rb
281
282
  - lib/pry/pager.rb
282
283
  - lib/pry/plugins.rb
@@ -286,7 +287,7 @@ files:
286
287
  - lib/pry/rbx_path.rb
287
288
  - lib/pry/repl_file_loader.rb
288
289
  - lib/pry/rubygem.rb
289
- - lib/pry/terminal_info.rb
290
+ - lib/pry/terminal.rb
290
291
  - lib/pry/test/helper.rb
291
292
  - lib/pry/version.rb
292
293
  - lib/pry/wrapped_module.rb
@@ -294,6 +295,7 @@ files:
294
295
  - man/pry.1.html
295
296
  - man/pry.1.ronn
296
297
  - pry.gemspec
298
+ - spec/Procfile
297
299
  - spec/cli_spec.rb
298
300
  - spec/code_object_spec.rb
299
301
  - spec/code_spec.rb
@@ -326,6 +328,7 @@ files:
326
328
  - spec/commands/whereami_spec.rb
327
329
  - spec/completion_spec.rb
328
330
  - spec/control_d_handler_spec.rb
331
+ - spec/documentation_helper_spec.rb
329
332
  - spec/editor_spec.rb
330
333
  - spec/exception_whitelist_spec.rb
331
334
  - spec/fixtures/candidate_helper1.rb
@@ -335,6 +338,7 @@ files:
335
338
  - spec/fixtures/show_source_doc_examples.rb
336
339
  - spec/fixtures/testrc
337
340
  - spec/fixtures/testrcbad
341
+ - spec/fixtures/whereami_helper.rb
338
342
  - spec/helper.rb
339
343
  - spec/helpers/bacon.rb
340
344
  - spec/helpers/mock_pry.rb
@@ -380,6 +384,7 @@ signing_key:
380
384
  specification_version: 3
381
385
  summary: An IRB alternative and runtime developer console
382
386
  test_files:
387
+ - spec/Procfile
383
388
  - spec/cli_spec.rb
384
389
  - spec/code_object_spec.rb
385
390
  - spec/code_spec.rb
@@ -412,6 +417,7 @@ test_files:
412
417
  - spec/commands/whereami_spec.rb
413
418
  - spec/completion_spec.rb
414
419
  - spec/control_d_handler_spec.rb
420
+ - spec/documentation_helper_spec.rb
415
421
  - spec/editor_spec.rb
416
422
  - spec/exception_whitelist_spec.rb
417
423
  - spec/fixtures/candidate_helper1.rb
@@ -421,6 +427,7 @@ test_files:
421
427
  - spec/fixtures/show_source_doc_examples.rb
422
428
  - spec/fixtures/testrc
423
429
  - spec/fixtures/testrcbad
430
+ - spec/fixtures/whereami_helper.rb
424
431
  - spec/helper.rb
425
432
  - spec/helpers/bacon.rb
426
433
  - spec/helpers/mock_pry.rb
data/.gemtest DELETED
File without changes
@@ -1,2 +0,0 @@
1
- Pry::Commands.deprecated_command("edit-method", "Use `edit` instead.")
2
- Pry::Commands.deprecated_command("show-command", "Use show-source [command_name] instead.")
@@ -1,48 +0,0 @@
1
- class Pry::TerminalInfo
2
- # Return a pair of [rows, columns] which gives the size of the window.
3
- #
4
- # If the window size cannot be determined, return nil.
5
- def self.screen_size
6
- rows, cols = actual_screen_size
7
- if rows && cols
8
- [rows.to_i, cols.to_i]
9
- else
10
- nil
11
- end
12
- end
13
-
14
- # Return a screen width or a default if it fails.
15
- def self.width! default = 80
16
- (screen_size || [nil, default])[1]
17
- end
18
-
19
- def self.actual_screen_size
20
- [
21
- # Some readlines also provides get_screen_size.
22
- # Readline comes before IO#winsize because jruby sometimes defaults winsize to [25, 80]
23
- readline_screen_size,
24
-
25
- # io/console adds a winsize method to IO streams.
26
- # rescue nil for jruby 1.7.0 [jruby/jruby#354]
27
- $stdout.tty? && $stdout.respond_to?(:winsize) && ($stdout.winsize rescue nil),
28
-
29
- # Otherwise try to use the environment (this may be out of date due
30
- # to window resizing, but it's better than nothing).
31
- [ENV["LINES"] || ENV["ROWS"], ENV["COLUMNS"]],
32
-
33
- # If the user is running within ansicon, then use the screen size
34
- # that it reports (same caveats apply as with ROWS and COLUMNS)
35
- ENV['ANSICON'] =~ /\((.*)x(.*)\)/ && [$2, $1],
36
- ].detect do |(_, cols)|
37
- cols.to_i > 0
38
- end
39
- end
40
-
41
- def self.readline_screen_size
42
- Readline.get_screen_size if Readline.respond_to?(:get_screen_size)
43
- rescue Java::JavaLang::NullPointerException
44
- # This rescue won't happen on jrubies later than:
45
- # https://github.com/jruby/jruby/pull/436
46
- nil
47
- end
48
- end