pry 0.9.9.6pre2-java → 0.9.10-java
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/CHANGELOG +41 -0
- data/CONTRIBUTORS +27 -26
- data/README.markdown +4 -4
- data/Rakefile +2 -2
- data/lib/pry.rb +25 -19
- data/lib/pry/cli.rb +31 -10
- data/lib/pry/code.rb +41 -83
- data/lib/pry/command.rb +87 -76
- data/lib/pry/command_set.rb +13 -20
- data/lib/pry/completion.rb +139 -121
- data/lib/pry/config.rb +4 -0
- data/lib/pry/core_extensions.rb +88 -31
- data/lib/pry/default_commands/cd.rb +31 -8
- data/lib/pry/default_commands/context.rb +4 -58
- data/lib/pry/default_commands/easter_eggs.rb +1 -1
- data/lib/pry/default_commands/editing.rb +21 -14
- data/lib/pry/default_commands/find_method.rb +5 -7
- data/lib/pry/default_commands/gist.rb +187 -0
- data/lib/pry/default_commands/hist.rb +6 -6
- data/lib/pry/default_commands/input_and_output.rb +73 -129
- data/lib/pry/default_commands/introspection.rb +107 -52
- data/lib/pry/default_commands/ls.rb +1 -1
- data/lib/pry/default_commands/misc.rb +0 -5
- data/lib/pry/default_commands/whereami.rb +92 -0
- data/lib/pry/helpers/base_helpers.rb +6 -1
- data/lib/pry/helpers/command_helpers.rb +30 -9
- data/lib/pry/helpers/documentation_helpers.rb +7 -7
- data/lib/pry/helpers/options_helpers.rb +1 -1
- data/lib/pry/helpers/text.rb +7 -9
- data/lib/pry/history.rb +15 -2
- data/lib/pry/hooks.rb +1 -1
- data/lib/pry/indent.rb +17 -10
- data/lib/pry/method.rb +35 -19
- data/lib/pry/module_candidate.rb +130 -0
- data/lib/pry/pry_class.rb +54 -22
- data/lib/pry/pry_instance.rb +71 -14
- data/lib/pry/repl_file_loader.rb +80 -0
- data/lib/pry/version.rb +1 -1
- data/lib/pry/wrapped_module.rb +121 -142
- data/pry.gemspec +13 -13
- data/test/candidate_helper1.rb +11 -0
- data/test/candidate_helper2.rb +8 -0
- data/test/helper.rb +16 -0
- data/test/test_code.rb +1 -1
- data/test/test_command.rb +364 -270
- data/test/test_command_integration.rb +235 -267
- data/test/test_completion.rb +36 -0
- data/test/test_control_d_handler.rb +45 -0
- data/test/test_default_commands/example.erb +5 -0
- data/test/test_default_commands/test_cd.rb +316 -11
- data/test/test_default_commands/test_context.rb +143 -192
- data/test/test_default_commands/test_documentation.rb +81 -14
- data/test/test_default_commands/test_find_method.rb +10 -2
- data/test/test_default_commands/test_input.rb +102 -111
- data/test/test_default_commands/test_introspection.rb +17 -12
- data/test/test_default_commands/test_ls.rb +8 -6
- data/test/test_default_commands/test_shell.rb +18 -15
- data/test/test_default_commands/test_show_source.rb +170 -44
- data/test/test_exception_whitelist.rb +6 -2
- data/test/test_hooks.rb +32 -0
- data/test/test_input_stack.rb +19 -16
- data/test/test_method.rb +0 -4
- data/test/test_prompt.rb +60 -0
- data/test/test_pry.rb +23 -31
- data/test/test_pry_defaults.rb +75 -57
- data/test/test_syntax_checking.rb +12 -11
- data/test/test_wrapped_module.rb +103 -0
- metadata +72 -26
@@ -1,5 +1,23 @@
|
|
1
1
|
require 'helper'
|
2
|
+
|
2
3
|
describe "commands" do
|
4
|
+
before do
|
5
|
+
@str_output = StringIO.new
|
6
|
+
@o = Object.new
|
7
|
+
|
8
|
+
# Shortcuts. They save a lot of typing.
|
9
|
+
@bs1 = "Pad.bs1 = _pry_.binding_stack.dup"
|
10
|
+
@bs2 = "Pad.bs2 = _pry_.binding_stack.dup"
|
11
|
+
@bs3 = "Pad.bs3 = _pry_.binding_stack.dup"
|
12
|
+
|
13
|
+
@self = "Pad.self = self"
|
14
|
+
|
15
|
+
Pad.bong = "bong"
|
16
|
+
end
|
17
|
+
|
18
|
+
after do
|
19
|
+
Pad.clear
|
20
|
+
end
|
3
21
|
|
4
22
|
describe "alias_command" do
|
5
23
|
it 'should make an aliasd command behave like its original' do
|
@@ -112,56 +130,186 @@ describe "commands" do
|
|
112
130
|
end
|
113
131
|
end
|
114
132
|
|
133
|
+
describe "Pry::Command#run" do
|
134
|
+
it 'should allow running of commands with following whitespace' do
|
135
|
+
set = Pry::CommandSet.new do
|
136
|
+
import Pry::Commands
|
137
|
+
command "test-run" do
|
138
|
+
run "cd / "
|
139
|
+
end
|
140
|
+
end
|
141
|
+
redirect_pry_io(InputTester.new("cd 1/2/3/4/5/6", @bs1, "test-run",
|
142
|
+
@self, @bs2, "exit-all")) do
|
143
|
+
Pry.start(@o, :commands => set)
|
144
|
+
end
|
145
|
+
|
146
|
+
Pad.bs1.size.should == 7
|
147
|
+
Pad.self.should == @o
|
148
|
+
Pad.bs2.size.should == 1
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'should allow running of cd command when contained in a single string' do
|
152
|
+
set = Pry::CommandSet.new do
|
153
|
+
import Pry::Commands
|
154
|
+
command "test-run" do
|
155
|
+
run "cd /"
|
156
|
+
end
|
157
|
+
end
|
158
|
+
redirect_pry_io(InputTester.new("cd 1/2/3/4/5/6", @bs1, "test-run",
|
159
|
+
@self, @bs2, "exit-all")) do
|
160
|
+
Pry.start(@o, :commands => set)
|
161
|
+
end
|
162
|
+
|
163
|
+
Pad.bs1.size.should == 7
|
164
|
+
Pad.self.should == @o
|
165
|
+
Pad.bs2.size.should == 1
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'should allow running of cd command when split into array' do
|
169
|
+
set = Pry::CommandSet.new do
|
170
|
+
import Pry::Commands
|
171
|
+
command "test-run" do
|
172
|
+
run "cd", "/"
|
173
|
+
end
|
174
|
+
end
|
175
|
+
redirect_pry_io(InputTester.new("cd 1/2/3/4/5/6", @bs1, "test-run",
|
176
|
+
@self, @bs2, "exit-all")) do
|
177
|
+
Pry.start(@o, :commands => set)
|
178
|
+
end
|
179
|
+
|
180
|
+
Pad.bs1.size.should == 7
|
181
|
+
Pad.self.should == @o
|
182
|
+
Pad.bs2.size.should == 1
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'should run a command from within a command' do
|
186
|
+
klass = Pry::CommandSet.new do
|
187
|
+
command "v" do
|
188
|
+
output.puts "v command"
|
189
|
+
end
|
190
|
+
|
191
|
+
command "run_v" do
|
192
|
+
run "v"
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
Pry.new(:input => InputTester.new("run_v"), :output => @str_output, :commands => klass).rep
|
197
|
+
|
198
|
+
@str_output.string.should =~ /v command/
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'should run a regex command from within a command' do
|
202
|
+
klass = Pry::CommandSet.new do
|
203
|
+
command /v(.*)?/ do |arg|
|
204
|
+
output.puts "v #{arg}"
|
205
|
+
end
|
206
|
+
|
207
|
+
command "run_v" do
|
208
|
+
run "vbaby"
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
redirect_pry_io(InputTester.new("run_v"), @str_output) do
|
213
|
+
Pry.new(:commands => klass).rep
|
214
|
+
end
|
215
|
+
|
216
|
+
@str_output.string.should =~ /v baby/
|
217
|
+
end
|
218
|
+
|
219
|
+
it 'should run a command from within a command with arguments' do
|
220
|
+
klass = Pry::CommandSet.new do
|
221
|
+
command /v(\w+)/ do |arg1, arg2|
|
222
|
+
output.puts "v #{arg1} #{arg2}"
|
223
|
+
end
|
224
|
+
|
225
|
+
command "run_v_explicit_parameter" do
|
226
|
+
run "vbaby", "param"
|
227
|
+
end
|
228
|
+
|
229
|
+
command "run_v_embedded_parameter" do
|
230
|
+
run "vbaby param"
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
["run_v_explicit_parameter", "run_v_embedded_parameter"].each do |cmd|
|
235
|
+
redirect_pry_io(InputTester.new(cmd), @str_output) do
|
236
|
+
Pry.new(:commands => klass).rep
|
237
|
+
end
|
238
|
+
@str_output.string.should =~ /v baby param/
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
describe "Pry#run_command" do
|
244
|
+
it 'should run a command in a specified context' do
|
245
|
+
b = Pry.binding_for(7)
|
246
|
+
p = Pry.new(:output => @str_output)
|
247
|
+
p.run_command("ls -m", "", b)
|
248
|
+
p.output.string.should =~ /divmod/
|
249
|
+
end
|
250
|
+
|
251
|
+
it 'should run a command that modifies the passed in eval_string' do
|
252
|
+
b = Pry.binding_for(7)
|
253
|
+
p = Pry.new(:output => @str_output)
|
254
|
+
eval_string = "def hello\npeter pan\n"
|
255
|
+
p.run_command("amend-line !", eval_string, b)
|
256
|
+
eval_string.should =~ /def hello/
|
257
|
+
eval_string.should.not =~ /peter pan/
|
258
|
+
end
|
259
|
+
|
260
|
+
it 'should run a command in the context of a session' do
|
261
|
+
mock_pry("@session_ivar = 10", "_pry_.run_command('ls')").should =~ /@session_ivar/
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
115
265
|
it 'should interpolate ruby code into commands' do
|
116
|
-
|
266
|
+
set = Pry::CommandSet.new do
|
117
267
|
command "hello", "", :keep_retval => true do |arg|
|
118
268
|
arg
|
119
269
|
end
|
120
270
|
end
|
121
271
|
|
122
|
-
|
123
|
-
str_output
|
124
|
-
|
125
|
-
str_output.string.should =~ /
|
126
|
-
$test_interpolation = nil
|
272
|
+
str_input = StringIO.new('hello #{Pad.bong}')
|
273
|
+
Pry.new(:input => str_input, :output => @str_output, :commands => set).rep
|
274
|
+
|
275
|
+
@str_output.string.should =~ /bong/
|
127
276
|
end
|
128
277
|
|
129
278
|
# bug fix for https://github.com/pry/pry/issues/170
|
130
279
|
it 'should not choke on complex string interpolation when checking if ruby code is a command' do
|
131
|
-
redirect_pry_io(InputTester.new('/#{Regexp.escape(File.expand_path("."))}/'), str_output
|
280
|
+
redirect_pry_io(InputTester.new('/#{Regexp.escape(File.expand_path("."))}/'), @str_output) do
|
132
281
|
pry
|
133
282
|
end
|
134
283
|
|
135
|
-
str_output.string.should.not =~ /SyntaxError/
|
284
|
+
@str_output.string.should.not =~ /SyntaxError/
|
136
285
|
end
|
137
286
|
|
138
287
|
it 'should NOT interpolate ruby code into commands if :interpolate => false' do
|
139
|
-
|
288
|
+
set = Pry::CommandSet.new do
|
140
289
|
command "hello", "", :keep_retval => true, :interpolate => false do |arg|
|
141
290
|
arg
|
142
291
|
end
|
143
292
|
end
|
144
293
|
|
145
|
-
|
146
|
-
str_output
|
147
|
-
|
148
|
-
str_output.string.should =~ /
|
149
|
-
$test_interpolation = nil
|
294
|
+
str_input = StringIO.new('hello #{Pad.bong}')
|
295
|
+
Pry.new(:input => str_input, :output => @str_output, :commands => set).rep
|
296
|
+
|
297
|
+
@str_output.string.should =~ /Pad\.bong/
|
150
298
|
end
|
151
299
|
|
152
300
|
it 'should NOT try to interpolate pure ruby code (no commands) ' do
|
153
|
-
|
154
|
-
|
155
|
-
str_output.string.should.not =~ /NameError/
|
301
|
+
Pry.new(:input => StringIO.new('format \'#{aggy}\''), :output => @str_output).rep
|
302
|
+
@str_output.string.should.not =~ /NameError/
|
156
303
|
|
157
|
-
|
158
|
-
|
304
|
+
@str_output = StringIO.new
|
305
|
+
Pry.new(:input => StringIO.new('format #{aggy}'), :output => @str_output).rep
|
306
|
+
@str_output.string.should.not =~ /NameError/
|
159
307
|
|
160
|
-
|
161
|
-
|
308
|
+
@str_output = StringIO.new
|
309
|
+
Pad.interp = "bong"
|
310
|
+
Pry.new(:input => StringIO.new('format \'#{Pad.interp}\''), :output => @str_output).rep
|
162
311
|
|
163
|
-
str_output.string.should.not =~ /
|
164
|
-
$test_interpolation = nil
|
312
|
+
@str_output.string.should.not =~ /bong/
|
165
313
|
end
|
166
314
|
|
167
315
|
it 'should create a command with a space in its name' do
|
@@ -171,12 +319,11 @@ describe "commands" do
|
|
171
319
|
end
|
172
320
|
end
|
173
321
|
|
174
|
-
str_output
|
175
|
-
redirect_pry_io(InputTester.new("hello baby", "exit-all"), str_output) do
|
322
|
+
redirect_pry_io(InputTester.new("hello baby", "exit-all"), @str_output) do
|
176
323
|
Pry.new(:commands => set).rep
|
177
324
|
end
|
178
325
|
|
179
|
-
str_output.string.should =~ /hello baby command/
|
326
|
+
@str_output.string.should =~ /hello baby command/
|
180
327
|
end
|
181
328
|
|
182
329
|
it 'should create a command with a space in its name and pass an argument' do
|
@@ -186,12 +333,11 @@ describe "commands" do
|
|
186
333
|
end
|
187
334
|
end
|
188
335
|
|
189
|
-
str_output
|
190
|
-
redirect_pry_io(InputTester.new("hello baby john"), str_output) do
|
336
|
+
redirect_pry_io(InputTester.new("hello baby john"), @str_output) do
|
191
337
|
Pry.new(:commands => set).rep
|
192
338
|
end
|
193
339
|
|
194
|
-
str_output.string.should =~ /hello baby command john/
|
340
|
+
@str_output.string.should =~ /hello baby command john/
|
195
341
|
end
|
196
342
|
|
197
343
|
it 'should create a regex command and be able to invoke it' do
|
@@ -202,12 +348,11 @@ describe "commands" do
|
|
202
348
|
end
|
203
349
|
end
|
204
350
|
|
205
|
-
str_output
|
206
|
-
redirect_pry_io(InputTester.new("hello1"), str_output) do
|
351
|
+
redirect_pry_io(InputTester.new("hello1"), @str_output) do
|
207
352
|
Pry.new(:commands => set).rep
|
208
353
|
end
|
209
354
|
|
210
|
-
str_output.string.should =~ /hello1/
|
355
|
+
@str_output.string.should =~ /hello1/
|
211
356
|
end
|
212
357
|
|
213
358
|
it 'should create a regex command and pass captures into the args list before regular arguments' do
|
@@ -217,12 +362,11 @@ describe "commands" do
|
|
217
362
|
end
|
218
363
|
end
|
219
364
|
|
220
|
-
str_output
|
221
|
-
redirect_pry_io(InputTester.new("hello1 baby"), str_output) do
|
365
|
+
redirect_pry_io(InputTester.new("hello1 baby"), @str_output) do
|
222
366
|
Pry.new(:commands => set).rep
|
223
367
|
end
|
224
368
|
|
225
|
-
str_output.string.should =~ /hello 1 baby/
|
369
|
+
@str_output.string.should =~ /hello 1 baby/
|
226
370
|
end
|
227
371
|
|
228
372
|
it 'should create a regex command and interpolate the captures' do
|
@@ -232,14 +376,11 @@ describe "commands" do
|
|
232
376
|
end
|
233
377
|
end
|
234
378
|
|
235
|
-
str_output
|
236
|
-
$obj = "bing"
|
237
|
-
redirect_pry_io(InputTester.new('hello #{$obj}'), str_output) do
|
379
|
+
redirect_pry_io(InputTester.new('hello #{Pad.bong}'), @str_output) do
|
238
380
|
Pry.new(:commands => set).rep
|
239
381
|
end
|
240
382
|
|
241
|
-
str_output.string.should =~ /hello
|
242
|
-
$obj = nil
|
383
|
+
@str_output.string.should =~ /hello bong/
|
243
384
|
end
|
244
385
|
|
245
386
|
it 'should create a regex command and arg_string should be interpolated' do
|
@@ -249,22 +390,16 @@ describe "commands" do
|
|
249
390
|
end
|
250
391
|
end
|
251
392
|
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
redirect_pry_io(InputTester.new('hellojohn #{$a1} #{$a2} #{$a3}'), str_output) do
|
393
|
+
Pad.bing = "bing"
|
394
|
+
Pad.bang = "bang"
|
395
|
+
redirect_pry_io(InputTester.new('hellojohn #{Pad.bing} #{Pad.bong} #{Pad.bang}'),
|
396
|
+
@str_output) do
|
257
397
|
Pry.new(:commands => set).rep
|
258
398
|
end
|
259
399
|
|
260
|
-
str_output.string.should =~ /hello john bing bong bang/
|
261
|
-
|
262
|
-
$a1 = nil
|
263
|
-
$a2 = nil
|
264
|
-
$a3 = nil
|
400
|
+
@str_output.string.should =~ /hello john bing bong bang/
|
265
401
|
end
|
266
402
|
|
267
|
-
|
268
403
|
it 'if a regex capture is missing it should be nil' do
|
269
404
|
set = Pry::CommandSet.new do
|
270
405
|
command /hello(.)?/, "" do |c1, a1|
|
@@ -272,22 +407,20 @@ describe "commands" do
|
|
272
407
|
end
|
273
408
|
end
|
274
409
|
|
275
|
-
str_output
|
276
|
-
redirect_pry_io(InputTester.new("hello baby"), str_output) do
|
410
|
+
redirect_pry_io(InputTester.new("hello baby"), @str_output) do
|
277
411
|
Pry.new(:commands => set).rep
|
278
412
|
end
|
279
413
|
|
280
|
-
str_output.string.should =~ /hello nil baby/
|
414
|
+
@str_output.string.should =~ /hello nil baby/
|
281
415
|
end
|
282
416
|
|
283
|
-
it 'should create a command in
|
284
|
-
str_output = StringIO.new
|
417
|
+
it 'should create a command in a nested context and that command should be accessible from the parent' do
|
285
418
|
x = "@x=nil\ncd 7\n_pry_.commands.instance_eval {\ncommand('bing') { |arg| run arg }\n}\ncd ..\nbing ls\nexit-all"
|
286
|
-
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
|
419
|
+
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
|
287
420
|
Pry.new.repl(0)
|
288
421
|
end
|
289
422
|
|
290
|
-
str_output.string.should =~ /@x/
|
423
|
+
@str_output.string.should =~ /@x/
|
291
424
|
end
|
292
425
|
|
293
426
|
it 'should define a command that keeps its return value' do
|
@@ -296,10 +429,10 @@ describe "commands" do
|
|
296
429
|
:kept_hello
|
297
430
|
end
|
298
431
|
end
|
299
|
-
|
300
|
-
Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => klass).rep
|
301
|
-
str_output.string.should =~ /:kept_hello/
|
302
|
-
str_output.string.should =~ /=>/
|
432
|
+
|
433
|
+
Pry.new(:input => StringIO.new("hello\n"), :output => @str_output, :commands => klass).rep
|
434
|
+
@str_output.string.should =~ /:kept_hello/
|
435
|
+
@str_output.string.should =~ /=>/
|
303
436
|
end
|
304
437
|
|
305
438
|
it 'should define a command that does NOT keep its return value' do
|
@@ -308,10 +441,10 @@ describe "commands" do
|
|
308
441
|
:kept_hello
|
309
442
|
end
|
310
443
|
end
|
311
|
-
|
312
|
-
Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => klass).rep
|
313
|
-
(str_output.string =~ /:kept_hello/).should == nil
|
314
|
-
str_output.string !~ /=>/
|
444
|
+
|
445
|
+
Pry.new(:input => StringIO.new("hello\n"), :output => @str_output, :commands => klass).rep
|
446
|
+
(@str_output.string =~ /:kept_hello/).should == nil
|
447
|
+
@str_output.string !~ /=>/
|
315
448
|
end
|
316
449
|
|
317
450
|
it 'should define a command that keeps its return value even when nil' do
|
@@ -320,10 +453,11 @@ str_output.string !~ /=>/
|
|
320
453
|
nil
|
321
454
|
end
|
322
455
|
end
|
323
|
-
|
324
|
-
Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => klass).rep
|
325
|
-
|
326
|
-
|
456
|
+
|
457
|
+
Pry.new(:input => StringIO.new("hello\n"), :output => @str_output, :commands => klass).rep
|
458
|
+
|
459
|
+
@str_output.string.should =~ /nil/
|
460
|
+
@str_output.string.should =~ /=>/
|
327
461
|
end
|
328
462
|
|
329
463
|
it 'should define a command that keeps its return value but does not return when value is void' do
|
@@ -332,9 +466,9 @@ str_output.string !~ /=>/
|
|
332
466
|
void
|
333
467
|
end
|
334
468
|
end
|
335
|
-
|
336
|
-
Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => klass).rep
|
337
|
-
str_output.string.empty?.should == true
|
469
|
+
|
470
|
+
Pry.new(:input => StringIO.new("hello\n"), :output => @str_output, :commands => klass).rep
|
471
|
+
@str_output.string.empty?.should == true
|
338
472
|
end
|
339
473
|
|
340
474
|
it 'a command (with :keep_retval => false) that replaces eval_string with a valid expression should not have the expression value suppressed' do
|
@@ -343,9 +477,9 @@ str_output.string !~ /=>/
|
|
343
477
|
eval_string.replace("6")
|
344
478
|
end
|
345
479
|
end
|
346
|
-
|
347
|
-
Pry.new(:input => StringIO.new("def yo\nhello\n"), :output => str_output, :commands => klass).rep
|
348
|
-
str_output.string.should =~ /6/
|
480
|
+
|
481
|
+
Pry.new(:input => StringIO.new("def yo\nhello\n"), :output => @str_output, :commands => klass).rep
|
482
|
+
@str_output.string.should =~ /6/
|
349
483
|
end
|
350
484
|
|
351
485
|
|
@@ -356,10 +490,11 @@ str_output.string !~ /=>/
|
|
356
490
|
7
|
357
491
|
end
|
358
492
|
end
|
359
|
-
|
360
|
-
Pry.new(:input => StringIO.new("def yo\nhello\n"), :output => str_output, :commands => klass).rep
|
361
|
-
|
362
|
-
str_output.string.should
|
493
|
+
|
494
|
+
Pry.new(:input => StringIO.new("def yo\nhello\n"), :output => @str_output, :commands => klass).rep
|
495
|
+
|
496
|
+
@str_output.string.should =~ /7/
|
497
|
+
@str_output.string.should.not =~ /6/
|
363
498
|
end
|
364
499
|
|
365
500
|
it 'a command that return a value in a multi-line expression should clear the expression and return the value' do
|
@@ -368,11 +503,11 @@ str_output.string !~ /=>/
|
|
368
503
|
5
|
369
504
|
end
|
370
505
|
end
|
371
|
-
str_output = StringIO.new
|
372
|
-
Pry.new(:input => StringIO.new("def yo\nhello\n"), :output => str_output, :commands => klass).rep
|
373
|
-
str_output.string.should =~ /5/
|
374
|
-
end
|
375
506
|
|
507
|
+
Pry.new(:input => StringIO.new("def yo\nhello\n"), :output => @str_output, :commands => klass).rep
|
508
|
+
|
509
|
+
@str_output.string.should =~ /5/
|
510
|
+
end
|
376
511
|
|
377
512
|
it 'should set the commands default, and the default should be overridable' do
|
378
513
|
klass = Pry::CommandSet.new do
|
@@ -383,9 +518,8 @@ str_output.string !~ /=>/
|
|
383
518
|
|
384
519
|
Pry.commands = klass
|
385
520
|
|
386
|
-
|
387
|
-
|
388
|
-
str_output.string.should =~ /hello world/
|
521
|
+
Pry.new(:input => InputTester.new("hello"), :output => @str_output).rep
|
522
|
+
@str_output.string.should =~ /hello world/
|
389
523
|
|
390
524
|
other_klass = Pry::CommandSet.new do
|
391
525
|
command "goodbye", "" do
|
@@ -393,10 +527,10 @@ str_output.string !~ /=>/
|
|
393
527
|
end
|
394
528
|
end
|
395
529
|
|
396
|
-
str_output = StringIO.new
|
530
|
+
@str_output = StringIO.new
|
397
531
|
|
398
|
-
Pry.new(:input => InputTester.new("goodbye"), :output => str_output, :commands => other_klass).rep
|
399
|
-
str_output.string.should =~ /goodbye world/
|
532
|
+
Pry.new(:input => InputTester.new("goodbye"), :output => @str_output, :commands => other_klass).rep
|
533
|
+
@str_output.string.should =~ /goodbye world/
|
400
534
|
end
|
401
535
|
|
402
536
|
it 'should inherit commands from Pry::Commands' do
|
@@ -421,144 +555,6 @@ str_output.string !~ /=>/
|
|
421
555
|
klass.commands["help"].description.should == "blah"
|
422
556
|
end
|
423
557
|
|
424
|
-
|
425
|
-
describe "Pry::Command#run" do
|
426
|
-
it 'should allow running of commands with following whitespace' do
|
427
|
-
$_scratch = Object.new
|
428
|
-
o = Object.new
|
429
|
-
|
430
|
-
set = Pry::CommandSet.new do
|
431
|
-
import Pry::Commands
|
432
|
-
command "test-run" do
|
433
|
-
run "cd / "
|
434
|
-
end
|
435
|
-
end
|
436
|
-
redirect_pry_io(InputTester.new("cd 1/2/3/4/5/6/$_scratch",
|
437
|
-
"@nesting1 = _pry_.binding_stack.size",
|
438
|
-
"test-run",
|
439
|
-
"@obj = self",
|
440
|
-
"@nesting2 = _pry_.binding_stack.size",
|
441
|
-
"exit-all")) do
|
442
|
-
Pry.start(o, :commands => set)
|
443
|
-
end
|
444
|
-
|
445
|
-
$_scratch.instance_variable_get(:@nesting1).should == 8
|
446
|
-
o.instance_variable_get(:@obj).should == o
|
447
|
-
o.instance_variable_get(:@nesting2).should == 1
|
448
|
-
$_scratch = nil
|
449
|
-
end
|
450
|
-
|
451
|
-
it 'should allow running of cd command when contained in a single string' do
|
452
|
-
$_scratch = Object.new
|
453
|
-
o = Object.new
|
454
|
-
|
455
|
-
set = Pry::CommandSet.new do
|
456
|
-
import Pry::Commands
|
457
|
-
command "test-run" do
|
458
|
-
run "cd /"
|
459
|
-
end
|
460
|
-
end
|
461
|
-
redirect_pry_io(InputTester.new("cd 1/2/3/4/5/6/$_scratch",
|
462
|
-
"@nesting1 = _pry_.binding_stack.size",
|
463
|
-
"test-run",
|
464
|
-
"@obj = self",
|
465
|
-
"@nesting2 = _pry_.binding_stack.size",
|
466
|
-
"exit-all")) do
|
467
|
-
Pry.start(o, :commands => set)
|
468
|
-
end
|
469
|
-
|
470
|
-
$_scratch.instance_variable_get(:@nesting1).should == 8
|
471
|
-
o.instance_variable_get(:@obj).should == o
|
472
|
-
o.instance_variable_get(:@nesting2).should == 1
|
473
|
-
$_scratch = nil
|
474
|
-
end
|
475
|
-
|
476
|
-
it 'should allow running of cd command when split into array' do
|
477
|
-
$_scratch = Object.new
|
478
|
-
o = Object.new
|
479
|
-
|
480
|
-
set = Pry::CommandSet.new do
|
481
|
-
import Pry::Commands
|
482
|
-
command "test-run" do
|
483
|
-
run "cd", "/"
|
484
|
-
end
|
485
|
-
end
|
486
|
-
redirect_pry_io(InputTester.new("cd 1/2/3/4/5/6/$_scratch",
|
487
|
-
"@nesting1 = _pry_.binding_stack.size",
|
488
|
-
"test-run",
|
489
|
-
"@obj = self",
|
490
|
-
"@nesting2 = _pry_.binding_stack.size",
|
491
|
-
"exit-all")) do
|
492
|
-
Pry.start(o, :commands => set)
|
493
|
-
end
|
494
|
-
|
495
|
-
$_scratch.instance_variable_get(:@nesting1).should == 8
|
496
|
-
o.instance_variable_get(:@obj).should == o
|
497
|
-
o.instance_variable_get(:@nesting2).should == 1
|
498
|
-
$_scratch = nil
|
499
|
-
end
|
500
|
-
|
501
|
-
it 'should run a command from within a command' do
|
502
|
-
klass = Pry::CommandSet.new do
|
503
|
-
command "v" do
|
504
|
-
output.puts "v command"
|
505
|
-
end
|
506
|
-
|
507
|
-
command "run_v" do
|
508
|
-
run "v"
|
509
|
-
end
|
510
|
-
end
|
511
|
-
|
512
|
-
str_output = StringIO.new
|
513
|
-
Pry.new(:input => InputTester.new("run_v"), :output => str_output, :commands => klass).rep
|
514
|
-
str_output.string.should =~ /v command/
|
515
|
-
end
|
516
|
-
|
517
|
-
it 'should run a regex command from within a command' do
|
518
|
-
klass = Pry::CommandSet.new do
|
519
|
-
command /v(.*)?/ do |arg|
|
520
|
-
output.puts "v #{arg}"
|
521
|
-
end
|
522
|
-
|
523
|
-
command "run_v" do
|
524
|
-
run "vbaby"
|
525
|
-
end
|
526
|
-
end
|
527
|
-
|
528
|
-
str_output = StringIO.new
|
529
|
-
redirect_pry_io(InputTester.new("run_v"), str_output) do
|
530
|
-
Pry.new(:commands => klass).rep
|
531
|
-
end
|
532
|
-
|
533
|
-
str_output.string.should =~ /v baby/
|
534
|
-
end
|
535
|
-
|
536
|
-
it 'should run a command from within a command with arguments' do
|
537
|
-
klass = Pry::CommandSet.new do
|
538
|
-
command /v(\w+)/ do |arg1, arg2|
|
539
|
-
output.puts "v #{arg1} #{arg2}"
|
540
|
-
end
|
541
|
-
|
542
|
-
command "run_v_explicit_parameter" do
|
543
|
-
run "vbaby", "param"
|
544
|
-
end
|
545
|
-
|
546
|
-
command "run_v_embedded_parameter" do
|
547
|
-
run "vbaby param"
|
548
|
-
end
|
549
|
-
end
|
550
|
-
|
551
|
-
["run_v_explicit_parameter", "run_v_embedded_parameter"].each do |cmd|
|
552
|
-
str_output = StringIO.new
|
553
|
-
redirect_pry_io(InputTester.new(cmd), str_output) do
|
554
|
-
Pry.new(:commands => klass).rep
|
555
|
-
end
|
556
|
-
str_output.string.should =~ /v baby param/
|
557
|
-
end
|
558
|
-
end
|
559
|
-
|
560
|
-
end
|
561
|
-
|
562
558
|
it 'should enable an inherited method to access opts and output and target, due to instance_exec' do
|
563
559
|
klass = Pry::CommandSet.new do
|
564
560
|
command "v" do
|
@@ -569,11 +565,10 @@ end
|
|
569
565
|
child_klass = Pry::CommandSet.new klass do
|
570
566
|
end
|
571
567
|
|
572
|
-
str_output = StringIO.new
|
573
568
|
Pry.new(:print => proc {}, :input => InputTester.new("v"),
|
574
|
-
:output => str_output, :commands => child_klass).rep("john")
|
569
|
+
:output => @str_output, :commands => child_klass).rep("john")
|
575
570
|
|
576
|
-
str_output.string.rstrip.should == "john"
|
571
|
+
@str_output.string.rstrip.should == "john"
|
577
572
|
end
|
578
573
|
|
579
574
|
it 'should import commands from another command object' do
|
@@ -617,13 +612,12 @@ end
|
|
617
612
|
# suppress evaluation output
|
618
613
|
Pry.print = proc {}
|
619
614
|
|
620
|
-
str_output
|
621
|
-
|
622
|
-
str_output.string.rstrip.should == "jump-to the music"
|
615
|
+
Pry.new(:input => InputTester.new("jump-to"), :output => @str_output, :commands => klass).rep
|
616
|
+
@str_output.string.rstrip.should == "jump-to the music"
|
623
617
|
|
624
|
-
str_output = StringIO.new
|
625
|
-
Pry.new(:input => InputTester.new("help"), :output => str_output, :commands => klass).rep
|
626
|
-
str_output.string.should == "help to the music\n"
|
618
|
+
@str_output = StringIO.new
|
619
|
+
Pry.new(:input => InputTester.new("help"), :output => @str_output, :commands => klass).rep
|
620
|
+
@str_output.string.should == "help to the music\n"
|
627
621
|
|
628
622
|
|
629
623
|
Pry.reset_defaults
|
@@ -636,12 +630,11 @@ end
|
|
636
630
|
pry_tester.input = InputTester.new("command1", "exit-all")
|
637
631
|
pry_tester.commands = CommandTester
|
638
632
|
|
639
|
-
|
640
|
-
pry_tester.output = str_output
|
633
|
+
pry_tester.output = @str_output
|
641
634
|
|
642
635
|
pry_tester.rep
|
643
636
|
|
644
|
-
str_output.string.should =~ /command1/
|
637
|
+
@str_output.string.should =~ /command1/
|
645
638
|
end
|
646
639
|
|
647
640
|
it 'should run a command with one parameter' do
|
@@ -650,35 +643,10 @@ end
|
|
650
643
|
pry_tester.input = InputTester.new("command2 horsey", "exit-all")
|
651
644
|
pry_tester.commands = CommandTester
|
652
645
|
|
653
|
-
|
654
|
-
pry_tester.output = str_output
|
646
|
+
pry_tester.output = @str_output
|
655
647
|
|
656
648
|
pry_tester.rep
|
657
649
|
|
658
|
-
str_output.string.should =~ /horsey/
|
650
|
+
@str_output.string.should =~ /horsey/
|
659
651
|
end
|
660
652
|
end
|
661
|
-
|
662
|
-
describe "Pry#run_command" do
|
663
|
-
it 'should run a command in a specified context' do
|
664
|
-
b = Pry.binding_for(7)
|
665
|
-
p = Pry.new(:output => StringIO.new)
|
666
|
-
p.run_command("ls -m", "", b)
|
667
|
-
p.output.string.should =~ /divmod/
|
668
|
-
end
|
669
|
-
|
670
|
-
it 'should run a command that modifies the passed in eval_string' do
|
671
|
-
b = Pry.binding_for(7)
|
672
|
-
p = Pry.new(:output => StringIO.new)
|
673
|
-
eval_string = "def hello\npeter pan\n"
|
674
|
-
p.run_command("amend-line !", eval_string, b)
|
675
|
-
eval_string.should =~ /def hello/
|
676
|
-
eval_string.should.not =~ /peter pan/
|
677
|
-
end
|
678
|
-
|
679
|
-
it 'should run a command in the context of a session' do
|
680
|
-
mock_pry("@session_ivar = 10", "_pry_.run_command('ls')").should =~ /@session_ivar/
|
681
|
-
end
|
682
|
-
end
|
683
|
-
|
684
|
-
|