pry 0.9.12.6-i386-mswin32 → 0.10.0-i386-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +702 -0
  3. data/LICENSE +2 -2
  4. data/{README.markdown → README.md} +37 -31
  5. data/lib/pry.rb +38 -151
  6. data/lib/pry/cli.rb +35 -17
  7. data/lib/pry/code.rb +19 -63
  8. data/lib/pry/code/code_file.rb +103 -0
  9. data/lib/pry/code/code_range.rb +2 -1
  10. data/lib/pry/code/loc.rb +2 -2
  11. data/lib/pry/code_object.rb +40 -21
  12. data/lib/pry/color_printer.rb +55 -0
  13. data/lib/pry/command.rb +12 -9
  14. data/lib/pry/command_set.rb +81 -38
  15. data/lib/pry/commands.rb +1 -1
  16. data/lib/pry/commands/amend_line.rb +2 -2
  17. data/lib/pry/commands/bang.rb +1 -1
  18. data/lib/pry/commands/cat.rb +11 -2
  19. data/lib/pry/commands/cat/exception_formatter.rb +6 -7
  20. data/lib/pry/commands/cat/file_formatter.rb +15 -32
  21. data/lib/pry/commands/cat/input_expression_formatter.rb +1 -1
  22. data/lib/pry/commands/cd.rb +14 -3
  23. data/lib/pry/commands/change_inspector.rb +27 -0
  24. data/lib/pry/commands/change_prompt.rb +26 -0
  25. data/lib/pry/commands/code_collector.rb +4 -4
  26. data/lib/pry/commands/easter_eggs.rb +3 -3
  27. data/lib/pry/commands/edit.rb +10 -22
  28. data/lib/pry/commands/edit/exception_patcher.rb +2 -2
  29. data/lib/pry/commands/edit/file_and_line_locator.rb +0 -2
  30. data/lib/pry/commands/exit_program.rb +0 -1
  31. data/lib/pry/commands/find_method.rb +16 -22
  32. data/lib/pry/commands/gem_install.rb +5 -2
  33. data/lib/pry/commands/gem_open.rb +1 -1
  34. data/lib/pry/commands/gist.rb +10 -11
  35. data/lib/pry/commands/help.rb +14 -14
  36. data/lib/pry/commands/hist.rb +27 -8
  37. data/lib/pry/commands/install_command.rb +14 -12
  38. data/lib/pry/commands/list_inspectors.rb +35 -0
  39. data/lib/pry/commands/list_prompts.rb +35 -0
  40. data/lib/pry/commands/ls.rb +72 -296
  41. data/lib/pry/commands/ls/constants.rb +47 -0
  42. data/lib/pry/commands/ls/formatter.rb +49 -0
  43. data/lib/pry/commands/ls/globals.rb +48 -0
  44. data/lib/pry/commands/ls/grep.rb +21 -0
  45. data/lib/pry/commands/ls/instance_vars.rb +39 -0
  46. data/lib/pry/commands/ls/interrogatable.rb +18 -0
  47. data/lib/pry/commands/ls/jruby_hacks.rb +49 -0
  48. data/lib/pry/commands/ls/local_names.rb +35 -0
  49. data/lib/pry/commands/ls/local_vars.rb +39 -0
  50. data/lib/pry/commands/ls/ls_entity.rb +70 -0
  51. data/lib/pry/commands/ls/methods.rb +57 -0
  52. data/lib/pry/commands/ls/methods_helper.rb +46 -0
  53. data/lib/pry/commands/ls/self_methods.rb +32 -0
  54. data/lib/pry/commands/play.rb +44 -10
  55. data/lib/pry/commands/pry_backtrace.rb +1 -2
  56. data/lib/pry/commands/raise_up.rb +2 -2
  57. data/lib/pry/commands/reload_code.rb +16 -19
  58. data/lib/pry/commands/ri.rb +7 -3
  59. data/lib/pry/commands/shell_command.rb +18 -13
  60. data/lib/pry/commands/shell_mode.rb +2 -4
  61. data/lib/pry/commands/show_doc.rb +5 -0
  62. data/lib/pry/commands/show_info.rb +8 -13
  63. data/lib/pry/commands/show_source.rb +15 -3
  64. data/lib/pry/commands/simple_prompt.rb +1 -1
  65. data/lib/pry/commands/toggle_color.rb +8 -4
  66. data/lib/pry/commands/watch_expression.rb +105 -0
  67. data/lib/pry/commands/watch_expression/expression.rb +38 -0
  68. data/lib/pry/commands/whereami.rb +18 -10
  69. data/lib/pry/commands/wtf.rb +3 -3
  70. data/lib/pry/config.rb +20 -254
  71. data/lib/pry/config/behavior.rb +139 -0
  72. data/lib/pry/config/convenience.rb +26 -0
  73. data/lib/pry/config/default.rb +165 -0
  74. data/lib/pry/core_extensions.rb +31 -21
  75. data/lib/pry/editor.rb +107 -103
  76. data/lib/pry/exceptions.rb +77 -0
  77. data/lib/pry/helpers/base_helpers.rb +22 -109
  78. data/lib/pry/helpers/command_helpers.rb +10 -8
  79. data/lib/pry/helpers/documentation_helpers.rb +1 -2
  80. data/lib/pry/helpers/text.rb +4 -5
  81. data/lib/pry/history.rb +46 -45
  82. data/lib/pry/history_array.rb +6 -1
  83. data/lib/pry/hooks.rb +9 -29
  84. data/lib/pry/indent.rb +6 -6
  85. data/lib/pry/input_completer.rb +242 -0
  86. data/lib/pry/input_lock.rb +132 -0
  87. data/lib/pry/inspector.rb +27 -0
  88. data/lib/pry/last_exception.rb +61 -0
  89. data/lib/pry/method.rb +82 -87
  90. data/lib/pry/{commands/edit/method_patcher.rb → method/patcher.rb} +41 -38
  91. data/lib/pry/module_candidate.rb +4 -14
  92. data/lib/pry/object_path.rb +82 -0
  93. data/lib/pry/output.rb +50 -0
  94. data/lib/pry/pager.rb +193 -48
  95. data/lib/pry/plugins.rb +1 -1
  96. data/lib/pry/prompt.rb +26 -0
  97. data/lib/pry/pry_class.rb +149 -230
  98. data/lib/pry/pry_instance.rb +302 -413
  99. data/lib/pry/rbx_path.rb +1 -1
  100. data/lib/pry/repl.rb +202 -0
  101. data/lib/pry/repl_file_loader.rb +20 -26
  102. data/lib/pry/rubygem.rb +13 -5
  103. data/lib/pry/terminal.rb +2 -1
  104. data/lib/pry/test/helper.rb +26 -41
  105. data/lib/pry/version.rb +1 -1
  106. data/lib/pry/wrapped_module.rb +45 -59
  107. metadata +62 -225
  108. data/.document +0 -2
  109. data/.gitignore +0 -16
  110. data/.travis.yml +0 -25
  111. data/.yardopts +0 -1
  112. data/CHANGELOG +0 -534
  113. data/CONTRIBUTORS +0 -55
  114. data/Gemfile +0 -12
  115. data/Rakefile +0 -140
  116. data/TODO +0 -117
  117. data/lib/pry/completion.rb +0 -321
  118. data/lib/pry/custom_completions.rb +0 -6
  119. data/lib/pry/rbx_method.rb +0 -13
  120. data/man/pry.1 +0 -195
  121. data/man/pry.1.html +0 -204
  122. data/man/pry.1.ronn +0 -141
  123. data/pry.gemspec +0 -29
  124. data/spec/Procfile +0 -3
  125. data/spec/cli_spec.rb +0 -78
  126. data/spec/code_object_spec.rb +0 -277
  127. data/spec/code_spec.rb +0 -219
  128. data/spec/command_helpers_spec.rb +0 -29
  129. data/spec/command_integration_spec.rb +0 -644
  130. data/spec/command_set_spec.rb +0 -627
  131. data/spec/command_spec.rb +0 -821
  132. data/spec/commands/amend_line_spec.rb +0 -247
  133. data/spec/commands/bang_spec.rb +0 -19
  134. data/spec/commands/cat_spec.rb +0 -164
  135. data/spec/commands/cd_spec.rb +0 -250
  136. data/spec/commands/disable_pry_spec.rb +0 -25
  137. data/spec/commands/edit_spec.rb +0 -727
  138. data/spec/commands/exit_all_spec.rb +0 -34
  139. data/spec/commands/exit_program_spec.rb +0 -19
  140. data/spec/commands/exit_spec.rb +0 -34
  141. data/spec/commands/find_method_spec.rb +0 -70
  142. data/spec/commands/gem_list_spec.rb +0 -26
  143. data/spec/commands/gist_spec.rb +0 -79
  144. data/spec/commands/help_spec.rb +0 -56
  145. data/spec/commands/hist_spec.rb +0 -181
  146. data/spec/commands/jump_to_spec.rb +0 -15
  147. data/spec/commands/ls_spec.rb +0 -181
  148. data/spec/commands/play_spec.rb +0 -140
  149. data/spec/commands/raise_up_spec.rb +0 -56
  150. data/spec/commands/save_file_spec.rb +0 -177
  151. data/spec/commands/show_doc_spec.rb +0 -510
  152. data/spec/commands/show_input_spec.rb +0 -17
  153. data/spec/commands/show_source_spec.rb +0 -782
  154. data/spec/commands/whereami_spec.rb +0 -203
  155. data/spec/completion_spec.rb +0 -241
  156. data/spec/control_d_handler_spec.rb +0 -58
  157. data/spec/documentation_helper_spec.rb +0 -73
  158. data/spec/editor_spec.rb +0 -79
  159. data/spec/exception_whitelist_spec.rb +0 -21
  160. data/spec/fixtures/candidate_helper1.rb +0 -11
  161. data/spec/fixtures/candidate_helper2.rb +0 -8
  162. data/spec/fixtures/example.erb +0 -5
  163. data/spec/fixtures/example_nesting.rb +0 -33
  164. data/spec/fixtures/show_source_doc_examples.rb +0 -15
  165. data/spec/fixtures/testrc +0 -2
  166. data/spec/fixtures/testrcbad +0 -2
  167. data/spec/fixtures/whereami_helper.rb +0 -6
  168. data/spec/helper.rb +0 -34
  169. data/spec/helpers/bacon.rb +0 -86
  170. data/spec/helpers/mock_pry.rb +0 -43
  171. data/spec/helpers/table_spec.rb +0 -105
  172. data/spec/history_array_spec.rb +0 -67
  173. data/spec/hooks_spec.rb +0 -522
  174. data/spec/indent_spec.rb +0 -301
  175. data/spec/input_stack_spec.rb +0 -90
  176. data/spec/method_spec.rb +0 -482
  177. data/spec/prompt_spec.rb +0 -60
  178. data/spec/pry_defaults_spec.rb +0 -419
  179. data/spec/pry_history_spec.rb +0 -99
  180. data/spec/pry_output_spec.rb +0 -95
  181. data/spec/pry_spec.rb +0 -515
  182. data/spec/run_command_spec.rb +0 -25
  183. data/spec/sticky_locals_spec.rb +0 -157
  184. data/spec/syntax_checking_spec.rb +0 -81
  185. data/spec/wrapped_module_spec.rb +0 -261
  186. data/wiki/Customizing-pry.md +0 -397
  187. data/wiki/Home.md +0 -4
@@ -1,60 +0,0 @@
1
- require 'helper'
2
-
3
- describe "Prompts" do
4
- describe "one-parameter prompt proc" do
5
- it 'should get full config object' do
6
- config = nil
7
- redirect_pry_io(InputTester.new("exit-all")) do
8
- Pry.start(self, :prompt => proc { |v| config = v })
9
- end
10
- config.is_a?(OpenStruct).should == true
11
- end
12
-
13
- it 'should get full config object, when using a proc array' do
14
- config1 = nil
15
- redirect_pry_io(InputTester.new("exit-all")) do
16
- Pry.start(self, :prompt => [proc { |v| config1 = v }, proc { |v| config2 = v }])
17
- end
18
- config1.is_a?(OpenStruct).should == true
19
- end
20
-
21
- it 'should receive correct data in the config object' do
22
- config = nil
23
- redirect_pry_io(InputTester.new("def hello", "exit-all")) do
24
- Pry.start(self, :prompt => proc { |v| config = v })
25
- end
26
- config.eval_string.should =~ /def hello/
27
- config.nesting_level.should == 0
28
- config.expr_number.should == 1
29
- config.cont.should == true
30
- config._pry_.is_a?(Pry).should == true
31
- config.object.should == self
32
- end
33
- end
34
-
35
- describe "BACKWARDS COMPATIBILITY: 3 parameter prompt proc" do
36
- it 'should get 3 parameters' do
37
- o = n = p = nil
38
- redirect_pry_io(InputTester.new("exit-all")) do
39
- Pry.start(:test, :prompt => proc { |obj, nesting, _pry_|
40
- o, n, p = obj, nesting, _pry_ })
41
- end
42
- o.should == :test
43
- n.should == 0
44
- p.is_a?(Pry).should == true
45
- end
46
-
47
- it 'should get 3 parameters, when using proc array' do
48
- o1 = n1 = p1 = nil
49
- redirect_pry_io(InputTester.new("exit-all")) do
50
- Pry.start(:test, :prompt => [proc { |obj, nesting, _pry_|
51
- o1, n1, p1 = obj, nesting, _pry_ },
52
- proc { |obj, nesting, _pry_|
53
- o2, n2, p2 = obj, nesting, _pry_ }])
54
- end
55
- o1.should == :test
56
- n1.should == 0
57
- p1.is_a?(Pry).should == true
58
- end
59
- end
60
- end
@@ -1,419 +0,0 @@
1
- require 'helper'
2
-
3
- version = 1
4
-
5
- describe "test Pry defaults" do
6
- before do
7
- @str_output = StringIO.new
8
- end
9
-
10
- after do
11
- Pry.reset_defaults
12
- Pry.color = false
13
- end
14
-
15
- describe "input" do
16
- after do
17
- Pry.reset_defaults
18
- Pry.color = false
19
- end
20
-
21
- it 'should set the input default, and the default should be overridable' do
22
- Pry.input = InputTester.new("5")
23
-
24
- Pry.output = @str_output
25
- Pry.new.rep
26
- @str_output.string.should =~ /5/
27
-
28
- Pry.new(:input => InputTester.new("6")).rep
29
- @str_output.string.should =~ /6/
30
- end
31
-
32
- it 'should pass in the prompt if readline arity is 1' do
33
- Pry.prompt = proc { "A" }
34
-
35
- arity_one_input = Class.new do
36
- attr_accessor :prompt
37
- def readline(prompt)
38
- @prompt = prompt
39
- "exit-all"
40
- end
41
- end.new
42
-
43
- Pry.start(self, :input => arity_one_input, :output => StringIO.new)
44
- arity_one_input.prompt.should == Pry.prompt.call
45
- end
46
-
47
- it 'should not pass in the prompt if the arity is 0' do
48
- Pry.prompt = proc { "A" }
49
-
50
- arity_zero_input = Class.new do
51
- def readline
52
- "exit-all"
53
- end
54
- end.new
55
-
56
- lambda { Pry.start(self, :input => arity_zero_input, :output => StringIO.new) }.should.not.raise Exception
57
- end
58
-
59
- it 'should not pass in the prompt if the arity is -1' do
60
- Pry.prompt = proc { "A" }
61
-
62
- arity_multi_input = Class.new do
63
- attr_accessor :prompt
64
-
65
- def readline(*args)
66
- @prompt = args.first
67
- "exit-all"
68
- end
69
- end.new
70
-
71
- Pry.start(self, :input => arity_multi_input, :output => StringIO.new)
72
- arity_multi_input.prompt.should == nil
73
- end
74
-
75
- end
76
-
77
- it 'should set the output default, and the default should be overridable' do
78
- Pry.input = InputTester.new("5", "6", "7")
79
-
80
- Pry.output = @str_output
81
-
82
- Pry.new.rep
83
- @str_output.string.should =~ /5/
84
-
85
- Pry.new.rep
86
- @str_output.string.should =~ /5\n.*6/
87
-
88
- @str_output = StringIO.new
89
- Pry.new(:output => @str_output).rep
90
- @str_output.string.should.not =~ /5\n.*6/
91
- @str_output.string.should =~ /7/
92
- end
93
-
94
- it "should set the print default, and the default should be overridable" do
95
- new_print = proc { |out, value| out.puts "=> LOL" }
96
- Pry.print = new_print
97
-
98
- Pry.new.print.should == Pry.print
99
- Pry.new(:input => InputTester.new("\"test\""), :output => @str_output).rep
100
- @str_output.string.should == "=> LOL\n"
101
-
102
- @str_output = StringIO.new
103
- Pry.new(:input => InputTester.new("\"test\""), :output => @str_output,
104
- :print => proc { |out, value| out.puts value.reverse }).rep
105
- @str_output.string.should == "tset\n"
106
-
107
- Pry.new.print.should == Pry.print
108
- @str_output = StringIO.new
109
- Pry.new(:input => InputTester.new("\"test\""), :output => @str_output).rep
110
- @str_output.string.should == "=> LOL\n"
111
- end
112
-
113
- describe "pry return values" do
114
- it 'should return nil' do
115
- Pry.start(self, :input => StringIO.new("exit-all"), :output => StringIO.new).should == nil
116
- end
117
-
118
- it 'should return the parameter given to exit-all' do
119
- Pry.start(self, :input => StringIO.new("exit-all 10"), :output => StringIO.new).should == 10
120
- end
121
-
122
- it 'should return the parameter (multi word string) given to exit-all' do
123
- Pry.start(self, :input => StringIO.new("exit-all \"john mair\""), :output => StringIO.new).should == "john mair"
124
- end
125
-
126
- it 'should return the parameter (function call) given to exit-all' do
127
- Pry.start(self, :input => StringIO.new("exit-all 'abc'.reverse"), :output => StringIO.new).should == 'cba'
128
- end
129
-
130
- it 'should return the parameter (self) given to exit-all' do
131
- Pry.start("carl", :input => StringIO.new("exit-all self"), :output => StringIO.new).should == "carl"
132
- end
133
- end
134
-
135
- describe "prompts" do
136
- before do
137
- @empty_input_buffer = ""
138
- @non_empty_input_buffer = "def hello"
139
- @context = Pry.binding_for(0)
140
- end
141
-
142
- it 'should set the prompt default, and the default should be overridable (single prompt)' do
143
- new_prompt = proc { "test prompt> " }
144
- Pry.prompt = new_prompt
145
-
146
- Pry.new.prompt.should == Pry.prompt
147
- Pry.new.select_prompt(@empty_input_buffer, @context).should == "test prompt> "
148
- Pry.new.select_prompt(@non_empty_input_buffer, @context).should == "test prompt> "
149
-
150
- new_prompt = proc { "A" }
151
- pry_tester = Pry.new(:prompt => new_prompt)
152
- pry_tester.prompt.should == new_prompt
153
- pry_tester.select_prompt(@empty_input_buffer, @context).should == "A"
154
- pry_tester.select_prompt(@non_empty_input_buffer, @context).should == "A"
155
-
156
- Pry.new.prompt.should == Pry.prompt
157
- Pry.new.select_prompt(@empty_input_buffer, @context).should == "test prompt> "
158
- Pry.new.select_prompt(@non_empty_input_buffer, @context).should == "test prompt> "
159
- end
160
-
161
- it 'should set the prompt default, and the default should be overridable (multi prompt)' do
162
- new_prompt = [proc { "test prompt> " }, proc { "test prompt* " }]
163
- Pry.prompt = new_prompt
164
-
165
- Pry.new.prompt.should == Pry.prompt
166
- Pry.new.select_prompt(@empty_input_buffer, @context).should == "test prompt> "
167
- Pry.new.select_prompt(@non_empty_input_buffer, @context).should == "test prompt* "
168
-
169
- new_prompt = [proc { "A" }, proc { "B" }]
170
- pry_tester = Pry.new(:prompt => new_prompt)
171
- pry_tester.prompt.should == new_prompt
172
- pry_tester.select_prompt(@empty_input_buffer, @context).should == "A"
173
- pry_tester.select_prompt(@non_empty_input_buffer, @context).should == "B"
174
-
175
- Pry.new.prompt.should == Pry.prompt
176
- Pry.new.select_prompt(@empty_input_buffer, @context).should == "test prompt> "
177
- Pry.new.select_prompt(@non_empty_input_buffer, @context).should == "test prompt* "
178
- end
179
-
180
- describe 'storing and restoring the prompt' do
181
- before do
182
- make = lambda do |name,i|
183
- prompt = [ proc { "#{i}>" } , proc { "#{i+1}>" } ]
184
- (class << prompt; self; end).send(:define_method, :inspect) { "<Prompt-#{name}>" }
185
- prompt
186
- end
187
- @a , @b , @c = make[:a,0] , make[:b,1] , make[:c,2]
188
- @pry = Pry.new :prompt => @a
189
- end
190
- it 'should have a prompt stack' do
191
- @pry.push_prompt @b
192
- @pry.push_prompt @c
193
- @pry.prompt.should == @c
194
- @pry.pop_prompt
195
- @pry.prompt.should == @b
196
- @pry.pop_prompt
197
- @pry.prompt.should == @a
198
- end
199
-
200
- it 'should restore overridden prompts when returning from file-mode' do
201
- pry = Pry.new :input => InputTester.new('shell-mode', 'shell-mode'),
202
- :prompt => [ proc { 'P>' } ] * 2
203
- pry.select_prompt(@empty_input_buffer, @context).should == "P>"
204
- pry.re
205
- pry.select_prompt(@empty_input_buffer, @context).should =~ /\Apry .* \$ \z/
206
- pry.re
207
- pry.select_prompt(@empty_input_buffer, @context).should == "P>"
208
- end
209
-
210
- it '#pop_prompt should return the popped prompt' do
211
- @pry.push_prompt @b
212
- @pry.push_prompt @c
213
- @pry.pop_prompt.should == @c
214
- @pry.pop_prompt.should == @b
215
- end
216
-
217
- it 'should not pop the last prompt' do
218
- @pry.push_prompt @b
219
- @pry.pop_prompt.should == @b
220
- @pry.pop_prompt.should == @a
221
- @pry.pop_prompt.should == @a
222
- @pry.prompt.should == @a
223
- end
224
-
225
- describe '#prompt= should replace the current prompt with the new prompt' do
226
- it 'when only one prompt on the stack' do
227
- @pry.prompt = @b
228
- @pry.prompt.should == @b
229
- @pry.pop_prompt.should == @b
230
- @pry.pop_prompt.should == @b
231
- end
232
- it 'when several prompts on the stack' do
233
- @pry.push_prompt @b
234
- @pry.prompt = @c
235
- @pry.pop_prompt.should == @c
236
- @pry.pop_prompt.should == @a
237
- end
238
- end
239
- end
240
- end
241
-
242
- describe "view_clip used for displaying an object in a truncated format" do
243
-
244
- VC_MAX_LENGTH = 60
245
-
246
- describe "given an object with an #inspect string" do
247
- it "returns the #<> format of the object (never use inspect)" do
248
- o = Object.new
249
- def o.inspect; "a" * VC_MAX_LENGTH; end
250
-
251
- Pry.view_clip(o, VC_MAX_LENGTH).should =~ /#<Object/
252
- end
253
- end
254
-
255
- describe "given the 'main' object" do
256
- it "returns the #to_s of main (special case)" do
257
- o = TOPLEVEL_BINDING.eval('self')
258
- Pry.view_clip(o, VC_MAX_LENGTH).should == o.to_s
259
- end
260
- end
261
-
262
- describe "given the a Numeric, String or Symbol object" do
263
- [1, 2.0, -5, "hello", :test].each do |o|
264
- it "returns the #inspect of the special-cased immediate object: #{o}" do
265
- Pry.view_clip(o, VC_MAX_LENGTH).should == o.inspect
266
- end
267
- end
268
-
269
- # only testing with String here :)
270
- it "returns #<> format of the special-cased immediate object if #inspect is longer than maximum" do
271
- o = "o" * (VC_MAX_LENGTH + 1)
272
- Pry.view_clip(o, VC_MAX_LENGTH).should =~ /#<String/
273
- end
274
- end
275
-
276
- describe "given an object with an #inspect string as long as the maximum specified" do
277
- it "returns the #<> format of the object (never use inspect)" do
278
- o = Object.new
279
- def o.inspect; "a" * VC_MAX_LENGTH; end
280
-
281
- Pry.view_clip(o, VC_MAX_LENGTH).should =~ /#<Object/
282
- end
283
- end
284
-
285
- describe "given a regular object with an #inspect string longer than the maximum specified" do
286
-
287
- describe "when the object is a regular one" do
288
- it "returns a string of the #<class name:object idish> format" do
289
- o = Object.new
290
- def o.inspect; "a" * (VC_MAX_LENGTH + 1); end
291
-
292
- Pry.view_clip(o, VC_MAX_LENGTH).should =~ /#<Object/
293
- end
294
- end
295
-
296
- describe "when the object is a Class or a Module" do
297
- describe "without a name (usually a c = Class.new)" do
298
- it "returns a string of the #<class name:object idish> format" do
299
- c, m = Class.new, Module.new
300
-
301
- Pry.view_clip(c, VC_MAX_LENGTH).should =~ /#<Class/
302
- Pry.view_clip(m, VC_MAX_LENGTH).should =~ /#<Module/
303
- end
304
- end
305
-
306
- describe "with a #name longer than the maximum specified" do
307
- it "returns a string of the #<class name:object idish> format" do
308
- c, m = Class.new, Module.new
309
-
310
-
311
- def c.name; "a" * (VC_MAX_LENGTH + 1); end
312
- def m.name; "a" * (VC_MAX_LENGTH + 1); end
313
-
314
- Pry.view_clip(c, VC_MAX_LENGTH).should =~ /#<Class/
315
- Pry.view_clip(m, VC_MAX_LENGTH).should =~ /#<Module/
316
- end
317
- end
318
-
319
- describe "with a #name shorter than or equal to the maximum specified" do
320
- it "returns a string of the #<class name:object idish> format" do
321
- c, m = Class.new, Module.new
322
-
323
- def c.name; "a" * VC_MAX_LENGTH; end
324
- def m.name; "a" * VC_MAX_LENGTH; end
325
-
326
- Pry.view_clip(c, VC_MAX_LENGTH).should == c.name
327
- Pry.view_clip(m, VC_MAX_LENGTH).should == m.name
328
- end
329
- end
330
-
331
- end
332
-
333
- end
334
-
335
- end
336
-
337
- describe 'quiet' do
338
- it 'should show whereami by default' do
339
- Pry.start(binding, :input => InputTester.new("1", "exit-all"),
340
- :output => @str_output,
341
- :hooks => Pry::DEFAULT_HOOKS)
342
-
343
- @str_output.string.should =~ /[w]hereami by default/
344
- end
345
-
346
- it 'should hide whereami if quiet is set' do
347
- Pry.new(:input => InputTester.new("exit-all"),
348
- :output => @str_output,
349
- :quiet => true,
350
- :hooks => Pry::DEFAULT_HOOKS)
351
-
352
- @str_output.string.should == ""
353
- end
354
- end
355
-
356
- describe 'toplevel_binding' do
357
- it 'should be devoid of local variables' do
358
- pry_eval(Pry.toplevel_binding, "ls -l").should.not =~ /version/
359
- end
360
-
361
- it 'should have self the same as TOPLEVEL_BINDING' do
362
- Pry.toplevel_binding.eval('self').should.equal? TOPLEVEL_BINDING.eval('self')
363
- end
364
-
365
- # https://github.com/rubinius/rubinius/issues/1779
366
- unless Pry::Helpers::BaseHelpers.rbx?
367
- it 'should define private methods on Object' do
368
- TOPLEVEL_BINDING.eval 'def gooey_fooey; end'
369
- method(:gooey_fooey).owner.should == Object
370
- Pry::Method(method(:gooey_fooey)).visibility.should == :private
371
- end
372
- end
373
- end
374
-
375
- it 'should set the hooks default, and the default should be overridable' do
376
- Pry.input = InputTester.new("exit-all")
377
- Pry.hooks = Pry::Hooks.new.
378
- add_hook(:before_session, :my_name) { |out,_,_| out.puts "HELLO" }.
379
- add_hook(:after_session, :my_name) { |out,_,_| out.puts "BYE" }
380
-
381
- Pry.new(:output => @str_output).repl
382
- @str_output.string.should =~ /HELLO/
383
- @str_output.string.should =~ /BYE/
384
-
385
- Pry.input.rewind
386
-
387
- @str_output = StringIO.new
388
- Pry.new(:output => @str_output,
389
- :hooks => Pry::Hooks.new.
390
- add_hook( :before_session, :my_name) { |out,_,_| out.puts "MORNING" }.
391
- add_hook(:after_session, :my_name) { |out,_,_| out.puts "EVENING" }
392
- ).repl
393
-
394
- @str_output.string.should =~ /MORNING/
395
- @str_output.string.should =~ /EVENING/
396
-
397
- # try below with just defining one hook
398
- Pry.input.rewind
399
- @str_output = StringIO.new
400
- Pry.new(:output => @str_output,
401
- :hooks => Pry::Hooks.new.
402
- add_hook(:before_session, :my_name) { |out,_,_| out.puts "OPEN" }
403
- ).repl
404
-
405
- @str_output.string.should =~ /OPEN/
406
-
407
- Pry.input.rewind
408
- @str_output = StringIO.new
409
- Pry.new(:output => @str_output,
410
- :hooks => Pry::Hooks.new.
411
- add_hook(:after_session, :my_name) { |out,_,_| out.puts "CLOSE" }
412
- ).repl
413
-
414
- @str_output.string.should =~ /CLOSE/
415
-
416
- Pry.reset_defaults
417
- Pry.color = false
418
- end
419
- end