pry 0.10.pre.1-i386-mingw32 → 0.10.0.pre3-i386-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +702 -0
  3. data/LICENSE +2 -2
  4. data/{README.markdown → README.md} +41 -35
  5. data/lib/pry.rb +82 -139
  6. data/lib/pry/cli.rb +77 -30
  7. data/lib/pry/code.rb +122 -183
  8. data/lib/pry/code/code_file.rb +103 -0
  9. data/lib/pry/code/code_range.rb +71 -0
  10. data/lib/pry/code/loc.rb +92 -0
  11. data/lib/pry/code_object.rb +172 -0
  12. data/lib/pry/color_printer.rb +55 -0
  13. data/lib/pry/command.rb +184 -28
  14. data/lib/pry/command_set.rb +113 -59
  15. data/lib/pry/commands.rb +4 -27
  16. data/lib/pry/commands/amend_line.rb +99 -0
  17. data/lib/pry/commands/bang.rb +20 -0
  18. data/lib/pry/commands/bang_pry.rb +17 -0
  19. data/lib/pry/commands/cat.rb +62 -0
  20. data/lib/pry/commands/cat/abstract_formatter.rb +27 -0
  21. data/lib/pry/commands/cat/exception_formatter.rb +77 -0
  22. data/lib/pry/commands/cat/file_formatter.rb +67 -0
  23. data/lib/pry/commands/cat/input_expression_formatter.rb +43 -0
  24. data/lib/pry/commands/cd.rb +41 -0
  25. data/lib/pry/commands/change_inspector.rb +27 -0
  26. data/lib/pry/commands/change_prompt.rb +26 -0
  27. data/lib/pry/commands/code_collector.rb +165 -0
  28. data/lib/pry/commands/disable_pry.rb +27 -0
  29. data/lib/pry/commands/disabled_commands.rb +2 -0
  30. data/lib/pry/commands/easter_eggs.rb +112 -0
  31. data/lib/pry/commands/edit.rb +195 -0
  32. data/lib/pry/commands/edit/exception_patcher.rb +25 -0
  33. data/lib/pry/commands/edit/file_and_line_locator.rb +36 -0
  34. data/lib/pry/commands/exit.rb +42 -0
  35. data/lib/pry/commands/exit_all.rb +29 -0
  36. data/lib/pry/commands/exit_program.rb +23 -0
  37. data/lib/pry/commands/find_method.rb +193 -0
  38. data/lib/pry/commands/fix_indent.rb +19 -0
  39. data/lib/pry/commands/gem_cd.rb +26 -0
  40. data/lib/pry/commands/gem_install.rb +32 -0
  41. data/lib/pry/commands/gem_list.rb +33 -0
  42. data/lib/pry/commands/gem_open.rb +29 -0
  43. data/lib/pry/commands/gist.rb +101 -0
  44. data/lib/pry/commands/help.rb +164 -0
  45. data/lib/pry/commands/hist.rb +180 -0
  46. data/lib/pry/commands/import_set.rb +22 -0
  47. data/lib/pry/commands/install_command.rb +53 -0
  48. data/lib/pry/commands/jump_to.rb +29 -0
  49. data/lib/pry/commands/list_inspectors.rb +35 -0
  50. data/lib/pry/commands/list_prompts.rb +35 -0
  51. data/lib/pry/commands/ls.rb +114 -0
  52. data/lib/pry/commands/ls/constants.rb +47 -0
  53. data/lib/pry/commands/ls/formatter.rb +49 -0
  54. data/lib/pry/commands/ls/globals.rb +48 -0
  55. data/lib/pry/commands/ls/grep.rb +21 -0
  56. data/lib/pry/commands/ls/instance_vars.rb +39 -0
  57. data/lib/pry/commands/ls/interrogatable.rb +18 -0
  58. data/lib/pry/commands/ls/jruby_hacks.rb +49 -0
  59. data/lib/pry/commands/ls/local_names.rb +35 -0
  60. data/lib/pry/commands/ls/local_vars.rb +39 -0
  61. data/lib/pry/commands/ls/ls_entity.rb +70 -0
  62. data/lib/pry/commands/ls/methods.rb +57 -0
  63. data/lib/pry/commands/ls/methods_helper.rb +46 -0
  64. data/lib/pry/commands/ls/self_methods.rb +32 -0
  65. data/lib/pry/commands/nesting.rb +25 -0
  66. data/lib/pry/commands/play.rb +103 -0
  67. data/lib/pry/commands/pry_backtrace.rb +25 -0
  68. data/lib/pry/commands/pry_version.rb +17 -0
  69. data/lib/pry/commands/raise_up.rb +32 -0
  70. data/lib/pry/commands/reload_code.rb +62 -0
  71. data/lib/pry/commands/reset.rb +18 -0
  72. data/lib/pry/commands/ri.rb +60 -0
  73. data/lib/pry/commands/save_file.rb +61 -0
  74. data/lib/pry/commands/shell_command.rb +48 -0
  75. data/lib/pry/commands/shell_mode.rb +25 -0
  76. data/lib/pry/commands/show_doc.rb +83 -0
  77. data/lib/pry/commands/show_info.rb +195 -0
  78. data/lib/pry/commands/show_input.rb +17 -0
  79. data/lib/pry/commands/show_source.rb +50 -0
  80. data/lib/pry/commands/simple_prompt.rb +22 -0
  81. data/lib/pry/commands/stat.rb +40 -0
  82. data/lib/pry/commands/switch_to.rb +23 -0
  83. data/lib/pry/commands/toggle_color.rb +24 -0
  84. data/lib/pry/commands/watch_expression.rb +105 -0
  85. data/lib/pry/commands/watch_expression/expression.rb +38 -0
  86. data/lib/pry/commands/whereami.rb +190 -0
  87. data/lib/pry/commands/wtf.rb +57 -0
  88. data/lib/pry/config.rb +20 -229
  89. data/lib/pry/config/behavior.rb +139 -0
  90. data/lib/pry/config/convenience.rb +26 -0
  91. data/lib/pry/config/default.rb +165 -0
  92. data/lib/pry/core_extensions.rb +59 -38
  93. data/lib/pry/editor.rb +133 -0
  94. data/lib/pry/exceptions.rb +77 -0
  95. data/lib/pry/helpers.rb +1 -0
  96. data/lib/pry/helpers/base_helpers.rb +40 -154
  97. data/lib/pry/helpers/command_helpers.rb +19 -130
  98. data/lib/pry/helpers/documentation_helpers.rb +21 -11
  99. data/lib/pry/helpers/table.rb +109 -0
  100. data/lib/pry/helpers/text.rb +8 -9
  101. data/lib/pry/history.rb +61 -45
  102. data/lib/pry/history_array.rb +11 -1
  103. data/lib/pry/hooks.rb +10 -32
  104. data/lib/pry/indent.rb +110 -38
  105. data/lib/pry/input_completer.rb +242 -0
  106. data/lib/pry/input_lock.rb +132 -0
  107. data/lib/pry/inspector.rb +27 -0
  108. data/lib/pry/last_exception.rb +61 -0
  109. data/lib/pry/method.rb +199 -200
  110. data/lib/pry/method/disowned.rb +53 -0
  111. data/lib/pry/method/patcher.rb +125 -0
  112. data/lib/pry/method/weird_method_locator.rb +186 -0
  113. data/lib/pry/module_candidate.rb +39 -33
  114. data/lib/pry/object_path.rb +82 -0
  115. data/lib/pry/output.rb +50 -0
  116. data/lib/pry/pager.rb +234 -0
  117. data/lib/pry/plugins.rb +4 -3
  118. data/lib/pry/prompt.rb +26 -0
  119. data/lib/pry/pry_class.rb +199 -227
  120. data/lib/pry/pry_instance.rb +344 -403
  121. data/lib/pry/rbx_path.rb +1 -1
  122. data/lib/pry/repl.rb +202 -0
  123. data/lib/pry/repl_file_loader.rb +20 -26
  124. data/lib/pry/rubygem.rb +82 -0
  125. data/lib/pry/terminal.rb +79 -0
  126. data/lib/pry/test/helper.rb +170 -0
  127. data/lib/pry/version.rb +1 -1
  128. data/lib/pry/wrapped_module.rb +133 -48
  129. metadata +132 -197
  130. data/.document +0 -2
  131. data/.gemtest +0 -0
  132. data/.gitignore +0 -16
  133. data/.travis.yml +0 -17
  134. data/.yardopts +0 -1
  135. data/CHANGELOG +0 -387
  136. data/CONTRIBUTORS +0 -36
  137. data/Gemfile +0 -2
  138. data/Rakefile +0 -137
  139. data/TODO +0 -117
  140. data/examples/example_basic.rb +0 -15
  141. data/examples/example_command_override.rb +0 -32
  142. data/examples/example_commands.rb +0 -36
  143. data/examples/example_hooks.rb +0 -9
  144. data/examples/example_image_edit.rb +0 -67
  145. data/examples/example_input.rb +0 -7
  146. data/examples/example_input2.rb +0 -29
  147. data/examples/example_output.rb +0 -11
  148. data/examples/example_print.rb +0 -6
  149. data/examples/example_prompt.rb +0 -9
  150. data/examples/helper.rb +0 -6
  151. data/lib/pry/completion.rb +0 -221
  152. data/lib/pry/custom_completions.rb +0 -6
  153. data/lib/pry/default_commands/cd.rb +0 -81
  154. data/lib/pry/default_commands/commands.rb +0 -62
  155. data/lib/pry/default_commands/context.rb +0 -98
  156. data/lib/pry/default_commands/easter_eggs.rb +0 -95
  157. data/lib/pry/default_commands/editing.rb +0 -420
  158. data/lib/pry/default_commands/find_method.rb +0 -169
  159. data/lib/pry/default_commands/gems.rb +0 -84
  160. data/lib/pry/default_commands/gist.rb +0 -187
  161. data/lib/pry/default_commands/help.rb +0 -127
  162. data/lib/pry/default_commands/hist.rb +0 -120
  163. data/lib/pry/default_commands/input_and_output.rb +0 -306
  164. data/lib/pry/default_commands/introspection.rb +0 -410
  165. data/lib/pry/default_commands/ls.rb +0 -272
  166. data/lib/pry/default_commands/misc.rb +0 -38
  167. data/lib/pry/default_commands/navigating_pry.rb +0 -110
  168. data/lib/pry/default_commands/whereami.rb +0 -92
  169. data/lib/pry/extended_commands/experimental.rb +0 -7
  170. data/lib/pry/rbx_method.rb +0 -13
  171. data/man/pry.1 +0 -195
  172. data/man/pry.1.html +0 -204
  173. data/man/pry.1.ronn +0 -141
  174. data/pry.gemspec +0 -46
  175. data/test/candidate_helper1.rb +0 -11
  176. data/test/candidate_helper2.rb +0 -8
  177. data/test/helper.rb +0 -223
  178. data/test/test_cli.rb +0 -78
  179. data/test/test_code.rb +0 -201
  180. data/test/test_command.rb +0 -712
  181. data/test/test_command_helpers.rb +0 -9
  182. data/test/test_command_integration.rb +0 -668
  183. data/test/test_command_set.rb +0 -610
  184. data/test/test_completion.rb +0 -62
  185. data/test/test_control_d_handler.rb +0 -45
  186. data/test/test_default_commands/example.erb +0 -5
  187. data/test/test_default_commands/test_cd.rb +0 -318
  188. data/test/test_default_commands/test_context.rb +0 -280
  189. data/test/test_default_commands/test_documentation.rb +0 -314
  190. data/test/test_default_commands/test_find_method.rb +0 -50
  191. data/test/test_default_commands/test_gems.rb +0 -18
  192. data/test/test_default_commands/test_help.rb +0 -57
  193. data/test/test_default_commands/test_input.rb +0 -428
  194. data/test/test_default_commands/test_introspection.rb +0 -511
  195. data/test/test_default_commands/test_ls.rb +0 -151
  196. data/test/test_default_commands/test_shell.rb +0 -343
  197. data/test/test_default_commands/test_show_source.rb +0 -432
  198. data/test/test_exception_whitelist.rb +0 -21
  199. data/test/test_history_array.rb +0 -65
  200. data/test/test_hooks.rb +0 -521
  201. data/test/test_indent.rb +0 -277
  202. data/test/test_input_stack.rb +0 -86
  203. data/test/test_method.rb +0 -401
  204. data/test/test_pry.rb +0 -463
  205. data/test/test_pry_defaults.rb +0 -419
  206. data/test/test_pry_history.rb +0 -84
  207. data/test/test_pry_output.rb +0 -41
  208. data/test/test_sticky_locals.rb +0 -155
  209. data/test/test_syntax_checking.rb +0 -65
  210. data/test/test_wrapped_module.rb +0 -174
  211. data/test/testrc +0 -2
  212. data/test/testrcbad +0 -2
  213. data/wiki/Customizing-pry.md +0 -397
  214. data/wiki/Home.md +0 -4
@@ -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 => Pry::NullOutput)
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 => Pry::NullOutput) }.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 => Pry::NullOutput)
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 value }
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 == "test\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 == "test\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 => Pry::NullOutput).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 => Pry::NullOutput).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 => Pry::NullOutput).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 => Pry::NullOutput).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 => Pry::NullOutput).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
- mock_pry(Pry.toplevel_binding, "ls -l").should.not =~ /version/
359
- end
360
-
361
- it 'should have self the same as TOPLEVEL_BINDING' do
362
- mock_pry(Pry.toplevel_binding, "self.equal? TOPLEVEL_BINDING.eval('self')").should =~ /=> true/
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
- mock_pry(TOPLEVEL_BINDING, "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
@@ -1,84 +0,0 @@
1
- require 'helper'
2
- require 'tempfile'
3
-
4
- describe Pry do
5
- before do
6
- Pry.history.clear
7
-
8
- @saved_history = "1\n2\n3\n"
9
-
10
- Pry.history.loader = proc do |&blk|
11
- @saved_history.lines.each { |l| blk.call(l) }
12
- end
13
-
14
- Pry.history.saver = proc do |lines|
15
- @saved_history << lines.map { |l| "#{l}\n" }.join
16
- end
17
-
18
- Pry.load_history
19
- end
20
-
21
- after do
22
- Pry.history.clear
23
- Pry.history.restore_default_behavior
24
- end
25
-
26
- describe ".load_history" do
27
- it "should read the contents of the file" do
28
- Pry.history.to_a[-2..-1].should == %w(2 3)
29
- end
30
- end
31
-
32
- describe ".save_history" do
33
- it "should include a trailing newline" do
34
- Pry.history << "4"
35
- Pry.save_history
36
- @saved_history.should =~ /4\n\z/
37
- end
38
-
39
- it "should not change anything if history is not changed" do
40
- @saved_history = "4\n5\n6\n"
41
- Pry.save_history
42
- @saved_history.should == "4\n5\n6\n"
43
- end
44
-
45
- it "should append new lines to the file" do
46
- Pry.history << "4"
47
- Pry.save_history
48
- @saved_history.should == "1\n2\n3\n4\n"
49
- end
50
-
51
- it "should not clobber lines written by other Pry's in the meantime" do
52
- Pry.history << "5"
53
- @saved_history << "4\n"
54
- Pry.save_history
55
-
56
- Pry.history.to_a[-3..-1].should == ["2", "3", "5"]
57
- @saved_history.should == "1\n2\n3\n4\n5\n"
58
- end
59
-
60
- it "should not delete lines from the file if this session's history was cleared" do
61
- Pry.history.clear
62
- Pry.save_history
63
- @saved_history.should == "1\n2\n3\n"
64
- end
65
-
66
- it "should save new lines that are added after the history was cleared" do
67
- Pry.history.clear
68
- Pry.history << "4"
69
- Pry.save_history
70
- @saved_history.should =~ /1\n2\n3\n4\n/
71
- end
72
-
73
- it "should only append new lines the second time it is saved" do
74
- Pry.history << "4"
75
- Pry.save_history
76
- @saved_history << "5\n"
77
- Pry.history << "6"
78
- Pry.save_history
79
-
80
- Pry.history.to_a[-4..-1].should == ["2", "3", "4", "6"]
81
- @saved_history.should == "1\n2\n3\n4\n5\n6\n"
82
- end
83
- end
84
- end