pry 0.9.11.4-java → 0.9.12-java

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 (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
data/spec/method_spec.rb CHANGED
@@ -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: java
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