pry 0.9.12.2 → 0.14.2

Sign up to get free protection for your applications and to get access to all the features.
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