pry 0.9.10pre1-i386-mswin32 → 0.9.11-i386-mswin32
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.
- data/.travis.yml +3 -1
- data/CHANGELOG +63 -2
- data/CONTRIBUTORS +43 -25
- data/Gemfile +7 -0
- data/Guardfile +62 -0
- data/README.markdown +4 -4
- data/Rakefile +34 -35
- data/lib/pry.rb +107 -54
- data/lib/pry/cli.rb +34 -11
- data/lib/pry/code.rb +165 -182
- data/lib/pry/code/code_range.rb +70 -0
- data/lib/pry/code/loc.rb +92 -0
- data/lib/pry/code_object.rb +153 -0
- data/lib/pry/command.rb +160 -22
- data/lib/pry/command_set.rb +37 -26
- data/lib/pry/commands.rb +4 -27
- data/lib/pry/commands/amend_line.rb +99 -0
- data/lib/pry/commands/bang.rb +20 -0
- data/lib/pry/commands/bang_pry.rb +17 -0
- data/lib/pry/commands/cat.rb +53 -0
- data/lib/pry/commands/cat/abstract_formatter.rb +27 -0
- data/lib/pry/commands/cat/exception_formatter.rb +78 -0
- data/lib/pry/commands/cat/file_formatter.rb +84 -0
- data/lib/pry/commands/cat/input_expression_formatter.rb +43 -0
- data/lib/pry/commands/cd.rb +30 -0
- data/lib/pry/commands/code_collector.rb +165 -0
- data/lib/pry/commands/deprecated_commands.rb +2 -0
- data/lib/pry/commands/disable_pry.rb +27 -0
- data/lib/pry/commands/easter_eggs.rb +112 -0
- data/lib/pry/commands/edit.rb +206 -0
- data/lib/pry/commands/edit/exception_patcher.rb +25 -0
- data/lib/pry/commands/edit/file_and_line_locator.rb +38 -0
- data/lib/pry/commands/edit/method_patcher.rb +122 -0
- data/lib/pry/commands/exit.rb +42 -0
- data/lib/pry/commands/exit_all.rb +29 -0
- data/lib/pry/commands/exit_program.rb +24 -0
- data/lib/pry/commands/find_method.rb +199 -0
- data/lib/pry/commands/fix_indent.rb +19 -0
- data/lib/pry/commands/gem_cd.rb +26 -0
- data/lib/pry/commands/gem_install.rb +29 -0
- data/lib/pry/commands/gem_list.rb +33 -0
- data/lib/pry/commands/gem_open.rb +29 -0
- data/lib/pry/commands/gist.rb +95 -0
- data/lib/pry/commands/help.rb +164 -0
- data/lib/pry/commands/hist.rb +161 -0
- data/lib/pry/commands/import_set.rb +22 -0
- data/lib/pry/commands/install_command.rb +51 -0
- data/lib/pry/commands/jump_to.rb +29 -0
- data/lib/pry/commands/ls.rb +339 -0
- data/lib/pry/commands/nesting.rb +25 -0
- data/lib/pry/commands/play.rb +69 -0
- data/lib/pry/commands/pry_backtrace.rb +26 -0
- data/lib/pry/commands/pry_version.rb +17 -0
- data/lib/pry/commands/raise_up.rb +32 -0
- data/lib/pry/commands/reload_code.rb +39 -0
- data/lib/pry/commands/reset.rb +18 -0
- data/lib/pry/commands/ri.rb +56 -0
- data/lib/pry/commands/save_file.rb +61 -0
- data/lib/pry/commands/shell_command.rb +43 -0
- data/lib/pry/commands/shell_mode.rb +27 -0
- data/lib/pry/commands/show_doc.rb +78 -0
- data/lib/pry/commands/show_info.rb +139 -0
- data/lib/pry/commands/show_input.rb +17 -0
- data/lib/pry/commands/show_source.rb +37 -0
- data/lib/pry/commands/simple_prompt.rb +22 -0
- data/lib/pry/commands/stat.rb +40 -0
- data/lib/pry/commands/switch_to.rb +23 -0
- data/lib/pry/commands/toggle_color.rb +20 -0
- data/lib/pry/commands/whereami.rb +114 -0
- data/lib/pry/commands/wtf.rb +57 -0
- data/lib/pry/completion.rb +120 -46
- data/lib/pry/config.rb +11 -0
- data/lib/pry/core_extensions.rb +30 -19
- data/lib/pry/editor.rb +129 -0
- data/lib/pry/helpers.rb +1 -0
- data/lib/pry/helpers/base_helpers.rb +89 -119
- data/lib/pry/helpers/command_helpers.rb +7 -122
- data/lib/pry/helpers/table.rb +100 -0
- data/lib/pry/helpers/text.rb +4 -4
- data/lib/pry/history_array.rb +5 -0
- data/lib/pry/hooks.rb +1 -3
- data/lib/pry/indent.rb +104 -30
- data/lib/pry/method.rb +66 -22
- data/lib/pry/module_candidate.rb +26 -15
- data/lib/pry/pager.rb +70 -0
- data/lib/pry/plugins.rb +1 -2
- data/lib/pry/pry_class.rb +63 -22
- data/lib/pry/pry_instance.rb +58 -37
- data/lib/pry/rubygem.rb +74 -0
- data/lib/pry/terminal_info.rb +43 -0
- data/lib/pry/test/helper.rb +185 -0
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +58 -24
- data/pry.gemspec +21 -37
- data/{test/test_cli.rb → spec/cli_spec.rb} +0 -0
- data/spec/code_object_spec.rb +277 -0
- data/{test/test_code.rb → spec/code_spec.rb} +19 -1
- data/{test/test_command_helpers.rb → spec/command_helpers_spec.rb} +0 -0
- data/{test/test_command_integration.rb → spec/command_integration_spec.rb} +38 -46
- data/{test/test_command_set.rb → spec/command_set_spec.rb} +18 -1
- data/{test/test_command.rb → spec/command_spec.rb} +250 -149
- data/spec/commands/amend_line_spec.rb +247 -0
- data/spec/commands/bang_spec.rb +19 -0
- data/spec/commands/cat_spec.rb +164 -0
- data/spec/commands/cd_spec.rb +250 -0
- data/spec/commands/disable_pry_spec.rb +25 -0
- data/spec/commands/edit_spec.rb +727 -0
- data/spec/commands/exit_all_spec.rb +34 -0
- data/spec/commands/exit_program_spec.rb +19 -0
- data/spec/commands/exit_spec.rb +34 -0
- data/{test/test_default_commands/test_find_method.rb → spec/commands/find_method_spec.rb} +27 -7
- data/spec/commands/gem_list_spec.rb +26 -0
- data/spec/commands/gist_spec.rb +75 -0
- data/{test/test_default_commands/test_help.rb → spec/commands/help_spec.rb} +8 -9
- data/spec/commands/hist_spec.rb +181 -0
- data/spec/commands/jump_to_spec.rb +15 -0
- data/spec/commands/ls_spec.rb +177 -0
- data/spec/commands/play_spec.rb +140 -0
- data/spec/commands/raise_up_spec.rb +56 -0
- data/spec/commands/save_file_spec.rb +177 -0
- data/spec/commands/show_doc_spec.rb +378 -0
- data/spec/commands/show_input_spec.rb +17 -0
- data/spec/commands/show_source_spec.rb +597 -0
- data/spec/commands/whereami_spec.rb +154 -0
- data/spec/completion_spec.rb +233 -0
- data/spec/control_d_handler_spec.rb +58 -0
- data/spec/editor_spec.rb +79 -0
- data/{test/test_exception_whitelist.rb → spec/exception_whitelist_spec.rb} +0 -0
- data/{test → spec/fixtures}/candidate_helper1.rb +0 -0
- data/{test → spec/fixtures}/candidate_helper2.rb +0 -0
- data/{test/test_default_commands → spec/fixtures}/example.erb +0 -0
- data/spec/fixtures/example_nesting.rb +33 -0
- data/spec/fixtures/show_source_doc_examples.rb +15 -0
- data/{test → spec/fixtures}/testrc +0 -0
- data/{test → spec/fixtures}/testrcbad +0 -0
- data/spec/helper.rb +34 -0
- data/spec/helpers/bacon.rb +86 -0
- data/spec/helpers/mock_pry.rb +43 -0
- data/spec/helpers/table_spec.rb +83 -0
- data/{test/test_history_array.rb → spec/history_array_spec.rb} +21 -19
- data/{test/test_hooks.rb → spec/hooks_spec.rb} +0 -0
- data/{test/test_indent.rb → spec/indent_spec.rb} +24 -0
- data/{test/test_input_stack.rb → spec/input_stack_spec.rb} +4 -0
- data/{test/test_method.rb → spec/method_spec.rb} +65 -1
- data/{test/test_prompt.rb → spec/prompt_spec.rb} +0 -0
- data/{test/test_pry_defaults.rb → spec/pry_defaults_spec.rb} +14 -14
- data/{test/test_pry_history.rb → spec/pry_history_spec.rb} +15 -0
- data/spec/pry_output_spec.rb +95 -0
- data/{test/test_pry.rb → spec/pry_spec.rb} +74 -32
- data/{test/test_sticky_locals.rb → spec/sticky_locals_spec.rb} +27 -25
- data/{test/test_syntax_checking.rb → spec/syntax_checking_spec.rb} +17 -1
- data/{test/test_wrapped_module.rb → spec/wrapped_module_spec.rb} +92 -5
- metadata +239 -115
- data/examples/example_basic.rb +0 -15
- data/examples/example_command_override.rb +0 -32
- data/examples/example_commands.rb +0 -36
- data/examples/example_hooks.rb +0 -9
- data/examples/example_image_edit.rb +0 -67
- data/examples/example_input.rb +0 -7
- data/examples/example_input2.rb +0 -29
- data/examples/example_output.rb +0 -11
- data/examples/example_print.rb +0 -6
- data/examples/example_prompt.rb +0 -9
- data/examples/helper.rb +0 -6
- data/lib/pry/default_commands/cd.rb +0 -81
- data/lib/pry/default_commands/commands.rb +0 -62
- data/lib/pry/default_commands/context.rb +0 -98
- data/lib/pry/default_commands/easter_eggs.rb +0 -95
- data/lib/pry/default_commands/editing.rb +0 -420
- data/lib/pry/default_commands/find_method.rb +0 -169
- data/lib/pry/default_commands/gems.rb +0 -84
- data/lib/pry/default_commands/gist.rb +0 -187
- data/lib/pry/default_commands/help.rb +0 -127
- data/lib/pry/default_commands/hist.rb +0 -120
- data/lib/pry/default_commands/input_and_output.rb +0 -306
- data/lib/pry/default_commands/introspection.rb +0 -410
- data/lib/pry/default_commands/ls.rb +0 -272
- data/lib/pry/default_commands/misc.rb +0 -38
- data/lib/pry/default_commands/navigating_pry.rb +0 -110
- data/lib/pry/default_commands/whereami.rb +0 -92
- data/lib/pry/extended_commands/experimental.rb +0 -7
- data/test/helper.rb +0 -223
- data/test/test_completion.rb +0 -62
- data/test/test_control_d_handler.rb +0 -45
- data/test/test_default_commands/test_cd.rb +0 -321
- data/test/test_default_commands/test_context.rb +0 -288
- data/test/test_default_commands/test_documentation.rb +0 -315
- data/test/test_default_commands/test_gems.rb +0 -18
- data/test/test_default_commands/test_input.rb +0 -428
- data/test/test_default_commands/test_introspection.rb +0 -511
- data/test/test_default_commands/test_ls.rb +0 -151
- data/test/test_default_commands/test_shell.rb +0 -343
- data/test/test_default_commands/test_show_source.rb +0 -432
- data/test/test_pry_output.rb +0 -41
File without changes
|
@@ -0,0 +1,277 @@
|
|
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
|
@@ -7,7 +7,7 @@ describe Pry::Code do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
should 'read lines from Pry\'s line buffer' do
|
10
|
-
|
10
|
+
pry_eval ':hay_guys'
|
11
11
|
Pry::Code.from_file('(pry)').grep(/:hay_guys/).length.should == 1
|
12
12
|
end
|
13
13
|
|
@@ -23,11 +23,29 @@ describe Pry::Code do
|
|
23
23
|
end
|
24
24
|
end
|
25
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
|
+
|
26
32
|
should 'raise an error if the file doesn\'t exist' do
|
27
33
|
proc do
|
28
34
|
Pry::Code.from_file('/knalkjsdnalsd/alkjdlkq')
|
29
35
|
end.should.raise(MethodSource::SourceNotFoundError)
|
30
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
|
31
49
|
end
|
32
50
|
|
33
51
|
describe '.from_method' do
|
File without changes
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
+
|
3
4
|
describe "commands" do
|
4
5
|
before do
|
5
6
|
@str_output = StringIO.new
|
@@ -12,6 +13,16 @@ describe "commands" do
|
|
12
13
|
|
13
14
|
@self = "Pad.self = self"
|
14
15
|
|
16
|
+
@command_tester = Pry::CommandSet.new do
|
17
|
+
command "command1", "command 1 test" do
|
18
|
+
output.puts "command1"
|
19
|
+
end
|
20
|
+
|
21
|
+
command "command2", "command 2 test" do |arg|
|
22
|
+
output.puts arg
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
15
26
|
Pad.bong = "bong"
|
16
27
|
end
|
17
28
|
|
@@ -46,17 +57,10 @@ describe "commands" do
|
|
46
57
|
alias_command "test-alias", "test-command"
|
47
58
|
end
|
48
59
|
|
49
|
-
|
50
|
-
Pry.start self, :commands => set
|
51
|
-
end
|
52
|
-
|
53
|
-
out1.string.should =~ /hello baby duck/
|
54
|
-
|
55
|
-
redirect_pry_io(InputTester.new("test-alias hello baby duck"), out2 = StringIO.new) do
|
56
|
-
Pry.start self, :commands => set
|
57
|
-
end
|
60
|
+
t = pry_tester(:commands => set)
|
58
61
|
|
59
|
-
|
62
|
+
t.process_command "test-alias hello baby duck"
|
63
|
+
t.last_output.should =~ /testing hello baby duck/
|
60
64
|
end
|
61
65
|
|
62
66
|
it 'should pass option arguments to original' do
|
@@ -66,17 +70,10 @@ describe "commands" do
|
|
66
70
|
end
|
67
71
|
|
68
72
|
obj = Class.new { @x = 10 }
|
69
|
-
|
70
|
-
Pry.start obj, :commands => set
|
71
|
-
end
|
72
|
-
|
73
|
-
out1.string.should =~ /@x/
|
74
|
-
|
75
|
-
redirect_pry_io(InputTester.new("test-alias -i"), out2 = StringIO.new) do
|
76
|
-
Pry.start obj, :commands => set
|
77
|
-
end
|
73
|
+
t = pry_tester(obj, :commands => set)
|
78
74
|
|
79
|
-
|
75
|
+
t.process_command "test-alias -i"
|
76
|
+
t.last_output.should =~ /@x/
|
80
77
|
end
|
81
78
|
|
82
79
|
it 'should pass option arguments to original with additional parameters' do
|
@@ -86,17 +83,9 @@ describe "commands" do
|
|
86
83
|
end
|
87
84
|
|
88
85
|
obj = Class.new { @x = Class.new { define_method(:plymouth) {} } }
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
out1.string.should =~ /plymouth/
|
94
|
-
|
95
|
-
redirect_pry_io(InputTester.new("test-alias @x"), out2 = StringIO.new) do
|
96
|
-
Pry.start obj, :commands => set
|
97
|
-
end
|
98
|
-
|
99
|
-
out2.string.should == out1.string
|
86
|
+
t = pry_tester(obj, :commands => set)
|
87
|
+
t.process_command "test-alias @x"
|
88
|
+
t.last_output.should =~ /plymouth/
|
100
89
|
end
|
101
90
|
|
102
91
|
it 'should be able to alias a regex command' do
|
@@ -107,11 +96,9 @@ describe "commands" do
|
|
107
96
|
alias_command "test-alias", "duck"
|
108
97
|
end
|
109
98
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
out1.string.should =~ /ducky/
|
99
|
+
t = pry_tester(:commands => set)
|
100
|
+
t.process_command "test-alias"
|
101
|
+
t.last_output.should =~ /ducky/
|
115
102
|
end
|
116
103
|
|
117
104
|
it 'should be able to make the alias a regex' do
|
@@ -138,6 +125,7 @@ describe "commands" do
|
|
138
125
|
run "cd / "
|
139
126
|
end
|
140
127
|
end
|
128
|
+
|
141
129
|
redirect_pry_io(InputTester.new("cd 1/2/3/4/5/6", @bs1, "test-run",
|
142
130
|
@self, @bs2, "exit-all")) do
|
143
131
|
Pry.start(@o, :commands => set)
|
@@ -242,10 +230,10 @@ describe "commands" do
|
|
242
230
|
|
243
231
|
describe "Pry#run_command" do
|
244
232
|
it 'should run a command in a specified context' do
|
245
|
-
b = Pry.binding_for(
|
233
|
+
b = Pry.binding_for('seven')
|
246
234
|
p = Pry.new(:output => @str_output)
|
247
235
|
p.run_command("ls -m", "", b)
|
248
|
-
p.output.string.should =~ /
|
236
|
+
p.output.string.should =~ /downcase/
|
249
237
|
end
|
250
238
|
|
251
239
|
it 'should run a command that modifies the passed in eval_string' do
|
@@ -258,7 +246,10 @@ describe "commands" do
|
|
258
246
|
end
|
259
247
|
|
260
248
|
it 'should run a command in the context of a session' do
|
261
|
-
|
249
|
+
pry_tester.tap do |t|
|
250
|
+
t.eval "@session_ivar = 10", "_pry_.run_command('ls')"
|
251
|
+
t.last_output.should =~ /@session_ivar/
|
252
|
+
end
|
262
253
|
end
|
263
254
|
end
|
264
255
|
|
@@ -417,7 +408,7 @@ describe "commands" do
|
|
417
408
|
it 'should create a command in a nested context and that command should be accessible from the parent' do
|
418
409
|
x = "@x=nil\ncd 7\n_pry_.commands.instance_eval {\ncommand('bing') { |arg| run arg }\n}\ncd ..\nbing ls\nexit-all"
|
419
410
|
redirect_pry_io(StringIO.new("@x=nil\ncd 7\n_pry_.commands.instance_eval {\ncommand('bing') { |arg| run arg }\n}\ncd ..\nbing ls\nexit-all"), @str_output) do
|
420
|
-
Pry.new.repl(0)
|
411
|
+
Pry.new.repl('0')
|
421
412
|
end
|
422
413
|
|
423
414
|
@str_output.string.should =~ /@x/
|
@@ -482,7 +473,6 @@ describe "commands" do
|
|
482
473
|
@str_output.string.should =~ /6/
|
483
474
|
end
|
484
475
|
|
485
|
-
|
486
476
|
it 'a command (with :keep_retval => true) that replaces eval_string with a valid expression should overwrite the eval_string with the return value' do
|
487
477
|
klass = Pry::CommandSet.new do
|
488
478
|
command "hello", "", :keep_retval => true do
|
@@ -546,7 +536,9 @@ describe "commands" do
|
|
546
536
|
end
|
547
537
|
|
548
538
|
it 'should change description of a command using desc' do
|
549
|
-
klass = Pry::CommandSet.new do
|
539
|
+
klass = Pry::CommandSet.new do
|
540
|
+
import Pry::Commands
|
541
|
+
end
|
550
542
|
orig = klass.commands["help"].description
|
551
543
|
klass.instance_eval do
|
552
544
|
desc "help", "blah"
|
@@ -626,9 +618,9 @@ describe "commands" do
|
|
626
618
|
|
627
619
|
it 'should run a command with no parameter' do
|
628
620
|
pry_tester = Pry.new
|
629
|
-
pry_tester.commands =
|
621
|
+
pry_tester.commands = @command_tester
|
630
622
|
pry_tester.input = InputTester.new("command1", "exit-all")
|
631
|
-
pry_tester.commands =
|
623
|
+
pry_tester.commands = @command_tester
|
632
624
|
|
633
625
|
pry_tester.output = @str_output
|
634
626
|
|
@@ -639,9 +631,9 @@ describe "commands" do
|
|
639
631
|
|
640
632
|
it 'should run a command with one parameter' do
|
641
633
|
pry_tester = Pry.new
|
642
|
-
pry_tester.commands =
|
634
|
+
pry_tester.commands = @command_tester
|
643
635
|
pry_tester.input = InputTester.new("command2 horsey", "exit-all")
|
644
|
-
pry_tester.commands =
|
636
|
+
pry_tester.commands = @command_tester
|
645
637
|
|
646
638
|
pry_tester.output = @str_output
|
647
639
|
|