pry 0.9.12.2 → 0.14.2

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 (237) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1141 -0
  3. data/LICENSE +2 -2
  4. data/README.md +466 -0
  5. data/bin/pry +4 -7
  6. data/lib/pry/basic_object.rb +10 -0
  7. data/lib/pry/block_command.rb +22 -0
  8. data/lib/pry/class_command.rb +194 -0
  9. data/lib/pry/cli.rb +97 -92
  10. data/lib/pry/code/code_file.rb +114 -0
  11. data/lib/pry/code/code_range.rb +7 -4
  12. data/lib/pry/code/loc.rb +27 -14
  13. data/lib/pry/code.rb +62 -90
  14. data/lib/pry/code_object.rb +83 -39
  15. data/lib/pry/color_printer.rb +66 -0
  16. data/lib/pry/command.rb +202 -371
  17. data/lib/pry/command_set.rb +151 -133
  18. data/lib/pry/command_state.rb +31 -0
  19. data/lib/pry/commands/amend_line.rb +86 -82
  20. data/lib/pry/commands/bang.rb +18 -14
  21. data/lib/pry/commands/bang_pry.rb +15 -11
  22. data/lib/pry/commands/cat/abstract_formatter.rb +23 -18
  23. data/lib/pry/commands/cat/exception_formatter.rb +85 -73
  24. data/lib/pry/commands/cat/file_formatter.rb +56 -63
  25. data/lib/pry/commands/cat/input_expression_formatter.rb +35 -30
  26. data/lib/pry/commands/cat.rb +64 -47
  27. data/lib/pry/commands/cd.rb +42 -26
  28. data/lib/pry/commands/change_inspector.rb +34 -0
  29. data/lib/pry/commands/change_prompt.rb +51 -0
  30. data/lib/pry/commands/clear_screen.rb +20 -0
  31. data/lib/pry/commands/code_collector.rb +148 -131
  32. data/lib/pry/commands/disable_pry.rb +23 -19
  33. data/lib/pry/commands/easter_eggs.rb +23 -34
  34. data/lib/pry/commands/edit/exception_patcher.rb +21 -17
  35. data/lib/pry/commands/edit/file_and_line_locator.rb +33 -24
  36. data/lib/pry/commands/edit.rb +183 -167
  37. data/lib/pry/commands/exit.rb +40 -35
  38. data/lib/pry/commands/exit_all.rb +24 -20
  39. data/lib/pry/commands/exit_program.rb +20 -17
  40. data/lib/pry/commands/find_method.rb +167 -167
  41. data/lib/pry/commands/fix_indent.rb +16 -12
  42. data/lib/pry/commands/help.rb +140 -133
  43. data/lib/pry/commands/hist.rb +153 -132
  44. data/lib/pry/commands/import_set.rb +20 -15
  45. data/lib/pry/commands/jump_to.rb +25 -21
  46. data/lib/pry/commands/list_inspectors.rb +42 -0
  47. data/lib/pry/commands/ls/constants.rb +75 -0
  48. data/lib/pry/commands/ls/formatter.rb +55 -0
  49. data/lib/pry/commands/ls/globals.rb +50 -0
  50. data/lib/pry/commands/ls/grep.rb +23 -0
  51. data/lib/pry/commands/ls/instance_vars.rb +40 -0
  52. data/lib/pry/commands/ls/interrogatable.rb +24 -0
  53. data/lib/pry/commands/ls/jruby_hacks.rb +55 -0
  54. data/lib/pry/commands/ls/local_names.rb +37 -0
  55. data/lib/pry/commands/ls/local_vars.rb +47 -0
  56. data/lib/pry/commands/ls/ls_entity.rb +65 -0
  57. data/lib/pry/commands/ls/methods.rb +55 -0
  58. data/lib/pry/commands/ls/methods_helper.rb +50 -0
  59. data/lib/pry/commands/ls/self_methods.rb +34 -0
  60. data/lib/pry/commands/ls.rb +100 -303
  61. data/lib/pry/commands/nesting.rb +21 -17
  62. data/lib/pry/commands/play.rb +93 -49
  63. data/lib/pry/commands/pry_backtrace.rb +22 -18
  64. data/lib/pry/commands/pry_version.rb +15 -11
  65. data/lib/pry/commands/raise_up.rb +33 -27
  66. data/lib/pry/commands/reload_code.rb +57 -48
  67. data/lib/pry/commands/reset.rb +16 -12
  68. data/lib/pry/commands/ri.rb +57 -38
  69. data/lib/pry/commands/save_file.rb +45 -43
  70. data/lib/pry/commands/shell_command.rb +66 -34
  71. data/lib/pry/commands/shell_mode.rb +22 -20
  72. data/lib/pry/commands/show_doc.rb +80 -65
  73. data/lib/pry/commands/show_info.rb +193 -159
  74. data/lib/pry/commands/show_input.rb +16 -11
  75. data/lib/pry/commands/show_source.rb +113 -33
  76. data/lib/pry/commands/stat.rb +35 -31
  77. data/lib/pry/commands/switch_to.rb +21 -15
  78. data/lib/pry/commands/toggle_color.rb +21 -13
  79. data/lib/pry/commands/watch_expression/expression.rb +43 -0
  80. data/lib/pry/commands/watch_expression.rb +110 -0
  81. data/lib/pry/commands/whereami.rb +157 -134
  82. data/lib/pry/commands/wtf.rb +78 -40
  83. data/lib/pry/config/attributable.rb +22 -0
  84. data/lib/pry/config/lazy_value.rb +29 -0
  85. data/lib/pry/config/memoized_value.rb +34 -0
  86. data/lib/pry/config/value.rb +24 -0
  87. data/lib/pry/config.rb +290 -220
  88. data/lib/pry/control_d_handler.rb +28 -0
  89. data/lib/pry/core_extensions.rb +50 -27
  90. data/lib/pry/editor.rb +130 -102
  91. data/lib/pry/env.rb +18 -0
  92. data/lib/pry/exception_handler.rb +43 -0
  93. data/lib/pry/exceptions.rb +73 -0
  94. data/lib/pry/forwardable.rb +27 -0
  95. data/lib/pry/helpers/base_helpers.rb +22 -151
  96. data/lib/pry/helpers/command_helpers.rb +55 -63
  97. data/lib/pry/helpers/documentation_helpers.rb +21 -13
  98. data/lib/pry/helpers/options_helpers.rb +15 -8
  99. data/lib/pry/helpers/platform.rb +55 -0
  100. data/lib/pry/helpers/table.rb +44 -32
  101. data/lib/pry/helpers/text.rb +96 -86
  102. data/lib/pry/helpers.rb +3 -0
  103. data/lib/pry/history.rb +101 -70
  104. data/lib/pry/hooks.rb +67 -137
  105. data/lib/pry/indent.rb +79 -73
  106. data/lib/pry/input_completer.rb +283 -0
  107. data/lib/pry/input_lock.rb +129 -0
  108. data/lib/pry/inspector.rb +39 -0
  109. data/lib/pry/last_exception.rb +61 -0
  110. data/lib/pry/method/disowned.rb +19 -5
  111. data/lib/pry/{commands/edit/method_patcher.rb → method/patcher.rb} +51 -42
  112. data/lib/pry/method/weird_method_locator.rb +80 -44
  113. data/lib/pry/method.rb +225 -176
  114. data/lib/pry/object_path.rb +91 -0
  115. data/lib/pry/output.rb +136 -0
  116. data/lib/pry/pager.rb +227 -68
  117. data/lib/pry/prompt.rb +214 -0
  118. data/lib/pry/pry_class.rb +216 -289
  119. data/lib/pry/pry_instance.rb +438 -500
  120. data/lib/pry/repl.rb +256 -0
  121. data/lib/pry/repl_file_loader.rb +34 -35
  122. data/lib/pry/ring.rb +89 -0
  123. data/lib/pry/slop/LICENSE +20 -0
  124. data/lib/pry/slop/commands.rb +190 -0
  125. data/lib/pry/slop/option.rb +210 -0
  126. data/lib/pry/slop.rb +672 -0
  127. data/lib/pry/syntax_highlighter.rb +26 -0
  128. data/lib/pry/system_command_handler.rb +17 -0
  129. data/lib/pry/testable/evalable.rb +24 -0
  130. data/lib/pry/testable/mockable.rb +22 -0
  131. data/lib/pry/testable/pry_tester.rb +88 -0
  132. data/lib/pry/testable/utility.rb +34 -0
  133. data/lib/pry/testable/variables.rb +52 -0
  134. data/lib/pry/testable.rb +68 -0
  135. data/lib/pry/version.rb +3 -1
  136. data/lib/pry/warning.rb +20 -0
  137. data/lib/pry/{module_candidate.rb → wrapped_module/candidate.rb} +36 -43
  138. data/lib/pry/wrapped_module.rb +102 -103
  139. data/lib/pry.rb +135 -261
  140. metadata +94 -283
  141. data/.document +0 -2
  142. data/.gitignore +0 -16
  143. data/.travis.yml +0 -21
  144. data/.yardopts +0 -1
  145. data/CHANGELOG +0 -534
  146. data/CONTRIBUTORS +0 -55
  147. data/Gemfile +0 -9
  148. data/Guardfile +0 -62
  149. data/README.markdown +0 -400
  150. data/Rakefile +0 -140
  151. data/TODO +0 -117
  152. data/lib/pry/commands/disabled_commands.rb +0 -2
  153. data/lib/pry/commands/gem_cd.rb +0 -26
  154. data/lib/pry/commands/gem_install.rb +0 -29
  155. data/lib/pry/commands/gem_list.rb +0 -33
  156. data/lib/pry/commands/gem_open.rb +0 -29
  157. data/lib/pry/commands/gist.rb +0 -102
  158. data/lib/pry/commands/install_command.rb +0 -51
  159. data/lib/pry/commands/simple_prompt.rb +0 -22
  160. data/lib/pry/commands.rb +0 -6
  161. data/lib/pry/completion.rb +0 -304
  162. data/lib/pry/custom_completions.rb +0 -6
  163. data/lib/pry/history_array.rb +0 -116
  164. data/lib/pry/plugins.rb +0 -103
  165. data/lib/pry/rbx_method.rb +0 -13
  166. data/lib/pry/rbx_path.rb +0 -22
  167. data/lib/pry/rubygem.rb +0 -74
  168. data/lib/pry/terminal.rb +0 -78
  169. data/lib/pry/test/helper.rb +0 -185
  170. data/man/pry.1 +0 -195
  171. data/man/pry.1.html +0 -204
  172. data/man/pry.1.ronn +0 -141
  173. data/pry.gemspec +0 -30
  174. data/spec/Procfile +0 -3
  175. data/spec/cli_spec.rb +0 -78
  176. data/spec/code_object_spec.rb +0 -277
  177. data/spec/code_spec.rb +0 -219
  178. data/spec/command_helpers_spec.rb +0 -29
  179. data/spec/command_integration_spec.rb +0 -644
  180. data/spec/command_set_spec.rb +0 -627
  181. data/spec/command_spec.rb +0 -821
  182. data/spec/commands/amend_line_spec.rb +0 -247
  183. data/spec/commands/bang_spec.rb +0 -19
  184. data/spec/commands/cat_spec.rb +0 -164
  185. data/spec/commands/cd_spec.rb +0 -250
  186. data/spec/commands/disable_pry_spec.rb +0 -25
  187. data/spec/commands/edit_spec.rb +0 -727
  188. data/spec/commands/exit_all_spec.rb +0 -34
  189. data/spec/commands/exit_program_spec.rb +0 -19
  190. data/spec/commands/exit_spec.rb +0 -34
  191. data/spec/commands/find_method_spec.rb +0 -70
  192. data/spec/commands/gem_list_spec.rb +0 -26
  193. data/spec/commands/gist_spec.rb +0 -79
  194. data/spec/commands/help_spec.rb +0 -56
  195. data/spec/commands/hist_spec.rb +0 -181
  196. data/spec/commands/jump_to_spec.rb +0 -15
  197. data/spec/commands/ls_spec.rb +0 -181
  198. data/spec/commands/play_spec.rb +0 -140
  199. data/spec/commands/raise_up_spec.rb +0 -56
  200. data/spec/commands/save_file_spec.rb +0 -177
  201. data/spec/commands/show_doc_spec.rb +0 -510
  202. data/spec/commands/show_input_spec.rb +0 -17
  203. data/spec/commands/show_source_spec.rb +0 -782
  204. data/spec/commands/whereami_spec.rb +0 -203
  205. data/spec/completion_spec.rb +0 -239
  206. data/spec/control_d_handler_spec.rb +0 -58
  207. data/spec/documentation_helper_spec.rb +0 -73
  208. data/spec/editor_spec.rb +0 -79
  209. data/spec/exception_whitelist_spec.rb +0 -21
  210. data/spec/fixtures/candidate_helper1.rb +0 -11
  211. data/spec/fixtures/candidate_helper2.rb +0 -8
  212. data/spec/fixtures/example.erb +0 -5
  213. data/spec/fixtures/example_nesting.rb +0 -33
  214. data/spec/fixtures/show_source_doc_examples.rb +0 -15
  215. data/spec/fixtures/testrc +0 -2
  216. data/spec/fixtures/testrcbad +0 -2
  217. data/spec/fixtures/whereami_helper.rb +0 -6
  218. data/spec/helper.rb +0 -34
  219. data/spec/helpers/bacon.rb +0 -86
  220. data/spec/helpers/mock_pry.rb +0 -43
  221. data/spec/helpers/table_spec.rb +0 -105
  222. data/spec/history_array_spec.rb +0 -67
  223. data/spec/hooks_spec.rb +0 -522
  224. data/spec/indent_spec.rb +0 -301
  225. data/spec/input_stack_spec.rb +0 -90
  226. data/spec/method_spec.rb +0 -482
  227. data/spec/prompt_spec.rb +0 -60
  228. data/spec/pry_defaults_spec.rb +0 -419
  229. data/spec/pry_history_spec.rb +0 -99
  230. data/spec/pry_output_spec.rb +0 -95
  231. data/spec/pry_spec.rb +0 -504
  232. data/spec/run_command_spec.rb +0 -25
  233. data/spec/sticky_locals_spec.rb +0 -157
  234. data/spec/syntax_checking_spec.rb +0 -81
  235. data/spec/wrapped_module_spec.rb +0 -261
  236. data/wiki/Customizing-pry.md +0 -397
  237. data/wiki/Home.md +0 -4
@@ -1,277 +0,0 @@
1
- require 'helper'
2
-
3
- describe Pry::CodeObject do
4
- describe "basic lookups" do
5
- before do
6
- @obj = Object.new
7
- def @obj.ziggy
8
- "a flight of scarlet pigeons thunders round my thoughts"
9
- end
10
-
11
- class ClassyWassy
12
- def piggy
13
- binding
14
- end
15
- end
16
-
17
- @p = Pry.new
18
- @p.binding_stack = [binding]
19
- end
20
-
21
- after do
22
- Object.remove_const(:ClassyWassy)
23
- end
24
-
25
- it 'should lookup methods' do
26
- m = Pry::CodeObject.lookup("@obj.ziggy", @p)
27
- m.is_a?(Pry::Method).should == true
28
- m.name.to_sym.should == :ziggy
29
- end
30
-
31
- it 'should lookup modules' do
32
- m = Pry::CodeObject.lookup("ClassyWassy", @p)
33
- m.is_a?(Pry::WrappedModule).should == true
34
- m.source.should =~ /piggy/
35
- end
36
-
37
- it 'should lookup procs' do
38
- my_proc = proc { :hello }
39
- @p.binding_stack = [binding]
40
- m = Pry::CodeObject.lookup("my_proc", @p)
41
- m.is_a?(Pry::Method).should == true
42
- m.source.should =~ /hello/
43
- end
44
-
45
- describe 'commands lookup' do
46
- before do
47
- @p = Pry.new
48
- @p.binding_stack = [binding]
49
- end
50
-
51
- it 'should return command class' do
52
- @p.commands.command "jeremy-jones" do
53
- "lobster"
54
- end
55
- m = Pry::CodeObject.lookup("jeremy-jones", @p)
56
- (m <= Pry::Command).should == true
57
- m.source.should =~ /lobster/
58
- end
59
-
60
- describe "class commands" do
61
- before do
62
- class LobsterLady < Pry::ClassCommand
63
- match "lobster-lady"
64
- description "nada."
65
- def process
66
- "lobster"
67
- end
68
- end
69
- end
70
-
71
- after do
72
- Object.remove_const(:LobsterLady)
73
- end
74
-
75
- it 'should return Pry::ClassCommand class when looking up class command' do
76
- Pry.commands.add_command(LobsterLady)
77
- m = Pry::CodeObject.lookup("lobster-lady", @p)
78
- (m <= Pry::ClassCommand).should == true
79
- m.source.should =~ /class LobsterLady/
80
- Pry.commands.delete("lobster-lady")
81
- end
82
-
83
- it 'should return Pry::WrappedModule when looking up command class directly (as a class, not as a command)' do
84
- Pry.commands.add_command(LobsterLady)
85
- m = Pry::CodeObject.lookup("LobsterLady", @p)
86
- m.is_a?(Pry::WrappedModule).should == true
87
- m.source.should =~ /class LobsterLady/
88
- Pry.commands.delete("lobster-lady")
89
- end
90
- end
91
-
92
- it 'looks up commands by :listing name as well' do
93
- @p.commands.command /jeremy-.*/, "", :listing => "jeremy-baby" do
94
- "lobster"
95
- end
96
- m = Pry::CodeObject.lookup("jeremy-baby", @p)
97
- (m <= Pry::Command).should == true
98
- m.source.should =~ /lobster/
99
- end
100
-
101
- it 'finds nothing when passing nil as the first argument' do
102
- Pry::CodeObject.lookup(nil, @p).should == nil
103
- end
104
-
105
- end
106
-
107
- it 'should lookup instance methods defined on classes accessed via local variable' do
108
- o = Class.new do
109
- def princess_bubblegum
110
- "mathematic!"
111
- end
112
- end
113
-
114
- @p.binding_stack = [binding]
115
- m = Pry::CodeObject.lookup("o#princess_bubblegum", @p)
116
- m.is_a?(Pry::Method).should == true
117
- m.source.should =~ /mathematic!/
118
- end
119
-
120
- it 'should lookup class methods defined on classes accessed via local variable' do
121
- o = Class.new do
122
- def self.finn
123
- "4 realzies"
124
- end
125
- end
126
- @p.binding_stack = [binding]
127
- m = Pry::CodeObject.lookup("o.finn", @p)
128
- m.is_a?(Pry::Method).should == true
129
- m.source.should =~ /4 realzies/
130
- end
131
-
132
- it 'should lookup the class of an object (when given a variable)' do
133
- moddy = ClassyWassy.new
134
- @p.binding_stack = [binding]
135
- m = Pry::CodeObject.lookup("moddy", @p)
136
- m.is_a?(Pry::WrappedModule).should == true
137
- m.source.should =~ /piggy/
138
- end
139
-
140
- describe "inferring object from binding when lookup str is empty/nil" do
141
- before do
142
- @b1 = Pry.binding_for(ClassyWassy)
143
- @b2 = Pry.binding_for(ClassyWassy.new)
144
- end
145
-
146
- describe "infer module objects" do
147
- it 'should infer module object when binding self is a module' do
148
- ["", nil].each do |v|
149
- @p.binding_stack = [@b1]
150
- m = Pry::CodeObject.lookup(v, @p)
151
- m.is_a?(Pry::WrappedModule).should == true
152
- m.name.should =~ /ClassyWassy/
153
- end
154
- end
155
-
156
- it 'should infer module object when binding self is an instance' do
157
- ["", nil].each do |v|
158
- @p.binding_stack = [@b2]
159
- m = Pry::CodeObject.lookup(v, @p)
160
- m.is_a?(Pry::WrappedModule).should == true
161
- m.name.should =~ /ClassyWassy/
162
- end
163
- end
164
- end
165
-
166
- describe "infer method objects" do
167
- it 'should infer method object from binding when inside method context' do
168
- b = ClassyWassy.new.piggy
169
-
170
- ["", nil].each do |v|
171
- @p.binding_stack = [b]
172
- m = Pry::CodeObject.lookup(v, @p)
173
- m.is_a?(Pry::Method).should == true
174
- m.name.should =~ /piggy/
175
- end
176
- end
177
- end
178
- end
179
- end
180
-
181
- describe "lookups with :super" do
182
- before do
183
- class MyClassyWassy; end
184
- class CuteSubclass < MyClassyWassy; end
185
- @p = Pry.new
186
- @p.binding_stack = [binding]
187
- end
188
-
189
- after do
190
- Object.remove_const(:MyClassyWassy)
191
- Object.remove_const(:CuteSubclass)
192
- end
193
-
194
- it 'should lookup original class with :super => 0' do
195
- m = Pry::CodeObject.lookup("CuteSubclass", @p, :super => 0)
196
- m.is_a?(Pry::WrappedModule).should == true
197
- m.wrapped.should == CuteSubclass
198
- end
199
-
200
- it 'should lookup immediate super class with :super => 1' do
201
- m = Pry::CodeObject.lookup("CuteSubclass", @p, :super => 1)
202
- m.is_a?(Pry::WrappedModule).should == true
203
- m.wrapped.should == MyClassyWassy
204
- end
205
-
206
- it 'should ignore :super parameter for commands' do
207
- p = Pry.new
208
- p.commands.command "jeremy-jones" do
209
- "lobster"
210
- end
211
- p.binding_stack = [binding]
212
- m = Pry::CodeObject.lookup("jeremy-jones", p, :super => 10)
213
- m.source.should =~ /lobster/
214
- end
215
- end
216
-
217
- describe "precedence" do
218
- before do
219
- class ClassyWassy
220
- class Puff
221
- def tiggy
222
- end
223
- end
224
-
225
- def Puff
226
- end
227
-
228
- def piggy
229
- end
230
- end
231
-
232
- Object.class_eval do
233
- def ClassyWassy
234
- :ducky
235
- end
236
- end
237
-
238
- @p = Pry.new
239
- @p.binding_stack = [binding]
240
- end
241
-
242
- after do
243
- Object.remove_const(:ClassyWassy)
244
- Object.remove_method(:ClassyWassy)
245
- end
246
-
247
- it 'should look up methods before classes (at top-level)' do
248
- m = Pry::CodeObject.lookup("ClassyWassy", @p)
249
- m.is_a?(Pry::Method).should == true
250
- m.source.should =~ /ducky/
251
- end
252
-
253
- it 'should look up classes before methods when namespaced' do
254
- m = Pry::CodeObject.lookup("ClassyWassy::Puff", @p)
255
- m.is_a?(Pry::WrappedModule).should == true
256
- m.source.should =~ /tiggy/
257
- end
258
-
259
- it 'should look up locals before methods' do
260
- b = Pry.binding_for(ClassyWassy)
261
- b.eval("piggy = Puff.new")
262
- @p.binding_stack = [b]
263
- o = Pry::CodeObject.lookup("piggy", @p)
264
- o.is_a?(Pry::WrappedModule).should == true
265
- end
266
-
267
- # actually locals are never looked up (via co.default_lookup) when they're classes, it
268
- # just falls through to co.method_or_class
269
- it 'should look up classes before locals' do
270
- c = ClassyWassy
271
- @p.binding_stack = [binding]
272
- o = Pry::CodeObject.lookup("c", @p)
273
- o.is_a?(Pry::WrappedModule).should == true
274
- o.wrapped.should == ClassyWassy
275
- end
276
- end
277
- end
data/spec/code_spec.rb DELETED
@@ -1,219 +0,0 @@
1
- require 'helper'
2
-
3
- describe Pry::Code do
4
- describe '.from_file' do
5
- should 'read lines from a file on disk' do
6
- Pry::Code.from_file('lib/pry.rb').length.should > 0
7
- end
8
-
9
- should 'read lines from Pry\'s line buffer' do
10
- pry_eval ':hay_guys'
11
- Pry::Code.from_file('(pry)').grep(/:hay_guys/).length.should == 1
12
- end
13
-
14
- should 'default to Ruby' do
15
- temp_file('') do |f|
16
- Pry::Code.from_file(f.path).code_type.should == :ruby
17
- end
18
- end
19
-
20
- should 'check the extension' do
21
- temp_file('.c') do |f|
22
- Pry::Code.from_file(f.path).code_type.should == :c
23
- end
24
- end
25
-
26
- should 'use the provided extension' do
27
- temp_file('.c') do |f|
28
- Pry::Code.from_file(f.path, :ruby).code_type.should == :ruby
29
- end
30
- end
31
-
32
- should 'raise an error if the file doesn\'t exist' do
33
- proc do
34
- Pry::Code.from_file('/knalkjsdnalsd/alkjdlkq')
35
- end.should.raise(MethodSource::SourceNotFoundError)
36
- end
37
-
38
- should 'check for files relative to origin pwd' do
39
- Dir.chdir('spec') do |f|
40
- Pry::Code.from_file('spec/' + File.basename(__FILE__)).code_type.should == :ruby
41
- end
42
- end
43
-
44
- should 'find files that are relative to the current working directory' do
45
- Dir.chdir('spec') do |f|
46
- Pry::Code.from_file(File.basename(__FILE__)).code_type.should == :ruby
47
- end
48
- end
49
- end
50
-
51
- describe '.from_method' do
52
- should 'read lines from a method\'s definition' do
53
- m = Pry::Method.from_obj(Pry, :load_history)
54
- Pry::Code.from_method(m).length.should > 0
55
- end
56
- end
57
-
58
- describe '#initialize' do
59
- before do
60
- @str = Pry::Helpers::CommandHelpers.unindent <<-CODE
61
- def hay
62
- :guys
63
- end
64
- CODE
65
-
66
- @array = ['def hay', ' :guys', 'end']
67
- end
68
-
69
- should 'break a string into lines' do
70
- Pry::Code.new(@str).length.should == 3
71
- end
72
-
73
- should 'accept an array' do
74
- Pry::Code.new(@array).length.should == 3
75
- end
76
-
77
- it 'an array or string should produce an equivalent object' do
78
- Pry::Code.new(@str).should == Pry::Code.new(@array)
79
- end
80
- end
81
-
82
- describe 'filters and formatters' do
83
- before do
84
- @code = Pry::Code(Pry::Helpers::CommandHelpers.unindent <<-STR)
85
- class MyProgram
86
- def self.main
87
- puts 'Hello, world!'
88
- end
89
- end
90
- STR
91
- end
92
-
93
- describe 'filters' do
94
- describe '#between' do
95
- should 'work with an inclusive range' do
96
- @code = @code.between(1..3)
97
- @code.length.should == 3
98
- @code.should =~ /\Aclass MyProgram/
99
- @code.should =~ /world!'\Z/
100
- end
101
-
102
- should 'default to an inclusive range' do
103
- @code = @code.between(3, 5)
104
- @code.length.should == 3
105
- end
106
-
107
- should 'work with an exclusive range' do
108
- @code = @code.between(2...4)
109
- @code.length.should == 2
110
- @code.should =~ /\A def self/
111
- @code.should =~ /world!'\Z/
112
- end
113
-
114
- should 'use real line numbers for positive indices' do
115
- @code = @code.after(3, 3)
116
- @code = @code.between(4, 4)
117
- @code.length.should == 1
118
- @code.should =~ /\A end\Z/
119
- end
120
- end
121
-
122
- describe '#before' do
123
- should 'work' do
124
- @code = @code.before(3, 1)
125
- @code.should =~ /\A def self\.main\Z/
126
- end
127
- end
128
-
129
- describe '#around' do
130
- should 'work' do
131
- @code = @code.around(3, 1)
132
- @code.length.should == 3
133
- @code.should =~ /\A def self/
134
- @code.should =~ / end\Z/
135
- end
136
- end
137
-
138
- describe '#after' do
139
- should 'work' do
140
- @code = @code.after(3, 1)
141
- @code.should =~ /\A end\Z/
142
- end
143
- end
144
-
145
- describe '#grep' do
146
- should 'work' do
147
- @code = @code.grep(/end/)
148
- @code.length.should == 2
149
- end
150
- end
151
- end
152
-
153
- describe 'formatters' do
154
- describe '#with_line_numbers' do
155
- should 'show line numbers' do
156
- @code = @code.with_line_numbers
157
- @code.should =~ /1:/
158
- end
159
-
160
- should 'disable line numbers when falsy' do
161
- @code = @code.with_line_numbers
162
- @code = @code.with_line_numbers(false)
163
- @code.should.not =~ /1:/
164
- end
165
- end
166
-
167
- describe '#with_marker' do
168
- should 'show a marker in the right place' do
169
- @code = @code.with_marker(2)
170
- @code.should =~ /^ => def self/
171
- end
172
-
173
- should 'disable the marker when falsy' do
174
- @code = @code.with_marker(2)
175
- @code = @code.with_marker(false)
176
- @code.should =~ /^ def self/
177
- end
178
- end
179
-
180
- describe '#with_indentation' do
181
- should 'indent the text' do
182
- @code = @code.with_indentation(2)
183
- @code.should =~ /^ def self/
184
- end
185
-
186
- should 'disable the indentation when falsy' do
187
- @code = @code.with_indentation(2)
188
- @code = @code.with_indentation(false)
189
- @code.should =~ /^ def self/
190
- end
191
- end
192
- end
193
-
194
- describe 'composition' do
195
- describe 'grep and with_line_numbers' do
196
- should 'work' do
197
- @code = @code.grep(/end/).with_line_numbers
198
- @code.should =~ /\A4: end/
199
- @code.should =~ /5: end\Z/
200
- end
201
- end
202
-
203
- describe 'grep and before and with_line_numbers' do
204
- should 'work' do
205
- @code = @code.grep(/e/).before(5, 5).with_line_numbers
206
- @code.should =~ /\A2: def self.main\n3:/
207
- @code.should =~ /4: end\Z/
208
- end
209
- end
210
-
211
- describe 'before and after' do
212
- should 'work' do
213
- @code = @code.before(4, 2).after(2)
214
- @code.should == " puts 'Hello, world!'"
215
- end
216
- end
217
- end
218
- end
219
- end
@@ -1,29 +0,0 @@
1
- require 'helper'
2
-
3
- describe Pry::Helpers::CommandHelpers do
4
- before do
5
- @helper = Pry::Helpers::CommandHelpers
6
- end
7
-
8
- describe "unindent" do
9
- it "should remove the same prefix from all lines" do
10
- @helper.unindent(" one\n two\n").should == "one\ntwo\n"
11
- end
12
-
13
- it "should not be phased by empty lines" do
14
- @helper.unindent(" one\n\n two\n").should == "one\n\ntwo\n"
15
- end
16
-
17
- it "should only remove a common prefix" do
18
- @helper.unindent(" one\n two\n").should == " one\ntwo\n"
19
- end
20
-
21
- it "should also remove tabs if present" do
22
- @helper.unindent("\tone\n\ttwo\n").should == "one\ntwo\n"
23
- end
24
-
25
- it "should ignore lines starting with --" do
26
- @helper.unindent(" one\n--\n two\n").should == "one\n--\ntwo\n"
27
- end
28
- end
29
- end