pry 0.8.3-i386-mswin32 → 0.8.4pre1-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/.document +2 -0
- data/.gitignore +8 -0
- data/.yardopts +1 -0
- data/README.markdown +10 -6
- data/Rakefile +15 -23
- data/TODO +62 -0
- data/bin/pry +3 -1
- data/lib/pry.rb +6 -7
- data/lib/pry/command_context.rb +29 -0
- data/lib/pry/command_processor.rb +15 -28
- data/lib/pry/command_set.rb +234 -0
- data/lib/pry/commands.rb +15 -861
- data/lib/pry/core_extensions.rb +40 -48
- data/lib/pry/default_commands/context.rb +127 -0
- data/lib/pry/default_commands/documentation.rb +145 -0
- data/lib/pry/default_commands/easter_eggs.rb +71 -0
- data/lib/pry/default_commands/gems.rb +59 -0
- data/lib/pry/default_commands/input.rb +38 -0
- data/lib/pry/default_commands/introspection.rb +190 -0
- data/lib/pry/default_commands/ls.rb +199 -0
- data/lib/pry/default_commands/shell.rb +90 -0
- data/lib/pry/helpers.rb +2 -0
- data/lib/pry/{command_base_helpers.rb → helpers/base_helpers.rb} +46 -21
- data/lib/pry/{command_helpers.rb → helpers/command_helpers.rb} +34 -36
- data/lib/pry/pry_class.rb +17 -11
- data/lib/pry/pry_instance.rb +59 -2
- data/lib/pry/version.rb +1 -1
- data/test/{test_helper.rb → helper.rb} +8 -2
- data/test/test_command_helpers.rb +77 -0
- data/test/test_commandset.rb +184 -0
- data/test/{test.rb → test_pry.rb} +164 -132
- data/wiki/Customizing-pry.md +397 -0
- data/wiki/Home.md +4 -0
- metadata +61 -41
- data/lib/pry/command_base.rb +0 -202
@@ -0,0 +1,184 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Pry::CommandSet do
|
4
|
+
before do
|
5
|
+
@set = Pry::CommandSet.new(:some_name)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'should use the name specified at creation' do
|
9
|
+
@set.name.should == :some_name
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should call the block used for the command when it is called' do
|
13
|
+
run = false
|
14
|
+
@set.command 'foo' do
|
15
|
+
run = true
|
16
|
+
end
|
17
|
+
|
18
|
+
@set.run_command nil, 'foo'
|
19
|
+
run.should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should pass arguments of the command to the block' do
|
23
|
+
@set.command 'foo' do |*args|
|
24
|
+
args.should == [1, 2, 3]
|
25
|
+
end
|
26
|
+
|
27
|
+
@set.run_command nil, 'foo', 1, 2, 3
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should use the first argument as self' do
|
31
|
+
@set.command 'foo' do
|
32
|
+
self.should == true
|
33
|
+
end
|
34
|
+
|
35
|
+
@set.run_command true, 'foo'
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should raise an error when calling an undefined comand' do
|
39
|
+
@set.command('foo') {}
|
40
|
+
lambda {
|
41
|
+
@set.run_command nil, 'bar'
|
42
|
+
}.should.raise(Pry::NoCommandError)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should be able to remove its own commands' do
|
46
|
+
@set.command('foo') {}
|
47
|
+
@set.delete 'foo'
|
48
|
+
|
49
|
+
lambda {
|
50
|
+
@set.run_command nil, 'foo'
|
51
|
+
}.should.raise(Pry::NoCommandError)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should be able to import some commands from other sets' do
|
55
|
+
run = false
|
56
|
+
|
57
|
+
other_set = Pry::CommandSet.new :foo do
|
58
|
+
command('foo') { run = true }
|
59
|
+
command('bar') {}
|
60
|
+
end
|
61
|
+
|
62
|
+
@set.import_from(other_set, 'foo')
|
63
|
+
|
64
|
+
@set.run_command nil, 'foo'
|
65
|
+
run.should == true
|
66
|
+
|
67
|
+
lambda {
|
68
|
+
@set.run_command nil, 'bar'
|
69
|
+
}.should.raise(Pry::NoCommandError)
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should be able to import a whole set' do
|
73
|
+
run = []
|
74
|
+
|
75
|
+
other_set = Pry::CommandSet.new :foo do
|
76
|
+
command('foo') { run << true }
|
77
|
+
command('bar') { run << true }
|
78
|
+
end
|
79
|
+
|
80
|
+
@set.import other_set
|
81
|
+
|
82
|
+
@set.run_command nil, 'foo'
|
83
|
+
@set.run_command nil, 'bar'
|
84
|
+
run.should == [true, true]
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'should be able to import sets at creation' do
|
88
|
+
run = false
|
89
|
+
@set.command('foo') { run = true }
|
90
|
+
|
91
|
+
Pry::CommandSet.new(:other, @set).run_command nil, 'foo'
|
92
|
+
run.should == true
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should set the descriptions of commands' do
|
96
|
+
@set.command('foo', 'some stuff') {}
|
97
|
+
@set.commands['foo'].description.should == 'some stuff'
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should be able to alias method' do
|
101
|
+
run = false
|
102
|
+
@set.command('foo', 'stuff') { run = true }
|
103
|
+
|
104
|
+
@set.alias_command 'bar', 'foo'
|
105
|
+
@set.commands['bar'].name.should == 'bar'
|
106
|
+
@set.commands['bar'].description.should == 'stuff'
|
107
|
+
|
108
|
+
@set.run_command nil, 'bar'
|
109
|
+
run.should == true
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'should be able to change the descritpions of methods' do
|
113
|
+
@set.command('foo', 'bar') {}
|
114
|
+
@set.desc 'foo', 'baz'
|
115
|
+
|
116
|
+
@set.commands['foo'].description.should == 'baz'
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'should return nil for commands by default' do
|
120
|
+
@set.command('foo') { 3 }
|
121
|
+
@set.run_command(nil, 'foo').should == nil
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'should be able to keep return values' do
|
125
|
+
@set.command('foo', '', :keep_retval => true) { 3 }
|
126
|
+
@set.run_command(nil, 'foo').should == 3
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'should be able to have its own helpers' do
|
130
|
+
@set.command('foo') do
|
131
|
+
should.respond_to :my_helper
|
132
|
+
end
|
133
|
+
|
134
|
+
@set.helpers do
|
135
|
+
def my_helper; end
|
136
|
+
end
|
137
|
+
|
138
|
+
@set.run_command(Pry::CommandContext.new, 'foo')
|
139
|
+
Pry::CommandContext.new.should.not.respond_to :my_helper
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'should not recreate a new heler module when helpers is called' do
|
143
|
+
@set.command('foo') do
|
144
|
+
should.respond_to :my_helper
|
145
|
+
should.respond_to :my_other_helper
|
146
|
+
end
|
147
|
+
|
148
|
+
@set.helpers do
|
149
|
+
def my_helper; end
|
150
|
+
end
|
151
|
+
|
152
|
+
@set.helpers do
|
153
|
+
def my_other_helper; end
|
154
|
+
end
|
155
|
+
|
156
|
+
@set.run_command(Pry::CommandContext.new, 'foo')
|
157
|
+
end
|
158
|
+
|
159
|
+
it 'should import helpers from imported sets' do
|
160
|
+
imported_set = Pry::CommandSet.new :test do
|
161
|
+
helpers do
|
162
|
+
def imported_helper_method; end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
@set.import imported_set
|
167
|
+
@set.command('foo') { should.respond_to :imported_helper_method }
|
168
|
+
@set.run_command(Pry::CommandContext.new, 'foo')
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'should import helpers even if only some commands are imported' do
|
172
|
+
imported_set = Pry::CommandSet.new :test do
|
173
|
+
helpers do
|
174
|
+
def imported_helper_method; end
|
175
|
+
end
|
176
|
+
|
177
|
+
command('bar') {}
|
178
|
+
end
|
179
|
+
|
180
|
+
@set.import_from imported_set, 'bar'
|
181
|
+
@set.command('foo') { should.respond_to :imported_helper_method }
|
182
|
+
@set.run_command(Pry::CommandContext.new, 'foo')
|
183
|
+
end
|
184
|
+
end
|
@@ -1,11 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift "#{direc}/../lib"
|
4
|
-
|
5
|
-
require 'rubygems'
|
6
|
-
require 'bacon'
|
7
|
-
require "pry"
|
8
|
-
require "#{direc}/test_helper"
|
1
|
+
require 'helper'
|
9
2
|
|
10
3
|
puts "Ruby Version #{RUBY_VERSION}"
|
11
4
|
puts "Testing Pry #{Pry::VERSION}"
|
@@ -24,6 +17,20 @@ describe Pry do
|
|
24
17
|
Object.send(:remove_const, :Hello)
|
25
18
|
end
|
26
19
|
|
20
|
+
# bug fix for https://github.com/banister/pry/issues/93
|
21
|
+
it 'should not leak pry constants into Object namespace' do
|
22
|
+
input_string = "CommandContext"
|
23
|
+
str_output = StringIO.new
|
24
|
+
o = Object.new
|
25
|
+
pry_tester = Pry.new(:input => StringIO.new(input_string),
|
26
|
+
:output => str_output,
|
27
|
+
:exception_handler => proc { |_, exception| @excep = exception },
|
28
|
+
:print => proc {}
|
29
|
+
).rep(o)
|
30
|
+
|
31
|
+
@excep.is_a?(NameError).should == true
|
32
|
+
end
|
33
|
+
|
27
34
|
it 'should set an ivar on an object' do
|
28
35
|
input_string = "@x = 10"
|
29
36
|
input = InputTester.new(input_string)
|
@@ -135,7 +142,7 @@ describe Pry do
|
|
135
142
|
|
136
143
|
it "should run the rc file only once" do
|
137
144
|
Pry.should_load_rc = true
|
138
|
-
Pry::RC_FILES << "
|
145
|
+
Pry::RC_FILES << File.expand_path("../testrc", __FILE__)
|
139
146
|
|
140
147
|
Pry.start(self, :input => StringIO.new("exit\n"), :output => Pry::NullOutput)
|
141
148
|
TEST_RC.should == [0]
|
@@ -379,56 +386,56 @@ describe Pry do
|
|
379
386
|
str_output2.string.should =~ /7/
|
380
387
|
end
|
381
388
|
|
382
|
-
describe "Pry.run_command" do
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
end
|
389
|
+
# describe "Pry.run_command" do
|
390
|
+
# before do
|
391
|
+
# class RCTest
|
392
|
+
# def a() end
|
393
|
+
# B = 20
|
394
|
+
# @x = 10
|
395
|
+
# end
|
396
|
+
# end
|
397
|
+
|
398
|
+
# after do
|
399
|
+
# Object.remove_const(:RCTest)
|
400
|
+
# end
|
401
|
+
|
402
|
+
# it "should execute command in the appropriate object context" do
|
403
|
+
# result = Pry.run_command "ls", :context => RCTest
|
404
|
+
# result.map(&:to_sym).should == [:@x]
|
405
|
+
# end
|
406
|
+
|
407
|
+
# it "should execute command with parameters in the appropriate object context" do
|
408
|
+
# result = Pry.run_command "ls -M", :context => RCTest
|
409
|
+
# result.map(&:to_sym).should == [:a]
|
410
|
+
# end
|
411
|
+
|
412
|
+
# it "should execute command and show output with :show_output => true flag" do
|
413
|
+
# str = StringIO.new
|
414
|
+
# Pry.output = str
|
415
|
+
# result = Pry.run_command "ls -afv", :context => RCTest, :show_output => true
|
416
|
+
# str.string.should =~ /global variables/
|
417
|
+
# Pry.output = $stdout
|
418
|
+
# end
|
419
|
+
|
420
|
+
# it "should execute command with multiple parameters" do
|
421
|
+
# result = Pry.run_command "ls -c -M RCTest"
|
422
|
+
# result.map(&:to_sym).should == [:a, :B]
|
423
|
+
# end
|
424
|
+
# end
|
418
425
|
|
419
426
|
describe "commands" do
|
420
427
|
it 'should interpolate ruby code into commands' do
|
421
|
-
klass =
|
428
|
+
klass = Pry::CommandSet.new :test do
|
422
429
|
command "hello", "", :keep_retval => true do |arg|
|
423
430
|
arg
|
424
431
|
end
|
425
432
|
end
|
426
433
|
|
427
|
-
|
434
|
+
@test_interpolation = "bing"
|
428
435
|
str_output = StringIO.new
|
429
|
-
Pry.new(:input => StringIO.new("hello #{
|
436
|
+
Pry.new(:input => StringIO.new("hello #{@test_interpolation}"), :output => str_output, :commands => klass).rep
|
430
437
|
str_output.string.should =~ /bing/
|
431
|
-
|
438
|
+
@test_interpolation = nil
|
432
439
|
end
|
433
440
|
|
434
441
|
it 'should create a comand in a nested context and that command should be accessible from the parent' do
|
@@ -442,47 +449,43 @@ describe Pry do
|
|
442
449
|
end
|
443
450
|
|
444
451
|
it 'should define a command that keeps its return value' do
|
445
|
-
|
452
|
+
klass = Pry::CommandSet.new :test do
|
446
453
|
command "hello", "", :keep_retval => true do
|
447
454
|
:kept_hello
|
448
455
|
end
|
449
456
|
end
|
450
457
|
str_output = StringIO.new
|
451
|
-
Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands =>
|
458
|
+
Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => klass).rep
|
452
459
|
str_output.string.should =~ /:kept_hello/
|
453
460
|
str_output.string.should =~ /=>/
|
454
|
-
|
455
|
-
Object.remove_const(:Command68)
|
456
461
|
end
|
457
462
|
|
458
463
|
it 'should define a command that does NOT keep its return value' do
|
459
|
-
|
464
|
+
klass = Pry::CommandSet.new :test do
|
460
465
|
command "hello", "", :keep_retval => false do
|
461
466
|
:kept_hello
|
462
467
|
end
|
463
468
|
end
|
464
469
|
str_output = StringIO.new
|
465
|
-
Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands =>
|
470
|
+
Pry.new(:input => StringIO.new("hello\n"), :output => str_output, :commands => klass).rep
|
466
471
|
(str_output.string =~ /:kept_hello/).should == nil
|
467
472
|
str_output.string !~ /=>/
|
468
|
-
|
469
|
-
Object.remove_const(:Command68)
|
470
473
|
end
|
471
474
|
|
472
475
|
it 'should set the commands default, and the default should be overridable' do
|
473
|
-
|
476
|
+
klass = Pry::CommandSet.new :test do
|
474
477
|
command "hello" do
|
475
478
|
output.puts "hello world"
|
476
479
|
end
|
477
480
|
end
|
478
481
|
|
479
|
-
Pry.commands =
|
482
|
+
Pry.commands = klass
|
480
483
|
|
481
484
|
str_output = StringIO.new
|
482
485
|
Pry.new(:input => InputTester.new("hello"), :output => str_output).rep
|
483
486
|
str_output.string.should =~ /hello world/
|
484
487
|
|
485
|
-
|
488
|
+
other_klass = Pry::CommandSet.new :test2 do
|
486
489
|
command "goodbye", "" do
|
487
490
|
output.puts "goodbye world"
|
488
491
|
end
|
@@ -490,73 +493,55 @@ describe Pry do
|
|
490
493
|
|
491
494
|
str_output = StringIO.new
|
492
495
|
|
493
|
-
Pry.new(:input => InputTester.new("goodbye"), :output => str_output, :commands =>
|
496
|
+
Pry.new(:input => InputTester.new("goodbye"), :output => str_output, :commands => other_klass).rep
|
494
497
|
str_output.string.should =~ /goodbye world/
|
495
|
-
|
496
|
-
Object.remove_const(:Command0)
|
497
|
-
Object.remove_const(:Command1)
|
498
498
|
end
|
499
499
|
|
500
500
|
it 'should inherit "help" command from Pry::CommandBase' do
|
501
|
-
|
501
|
+
klass = Pry::CommandSet.new :test do
|
502
502
|
command "h", "h command" do
|
503
503
|
end
|
504
504
|
end
|
505
505
|
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
Object.remove_const(:Command2)
|
506
|
+
klass.commands.keys.size.should == 3
|
507
|
+
klass.commands.keys.include?("help").should == true
|
508
|
+
klass.commands.keys.include?("install").should == true
|
509
|
+
klass.commands.keys.include?("h").should == true
|
512
510
|
end
|
513
511
|
|
514
512
|
it 'should inherit commands from Pry::Commands' do
|
515
|
-
|
513
|
+
klass = Pry::CommandSet.new :test, Pry::Commands do
|
516
514
|
command "v" do
|
517
515
|
end
|
518
516
|
end
|
519
517
|
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
Object.remove_const(:Command3)
|
518
|
+
klass.commands.include?("nesting").should == true
|
519
|
+
klass.commands.include?("jump-to").should == true
|
520
|
+
klass.commands.include?("cd").should == true
|
521
|
+
klass.commands.include?("v").should == true
|
526
522
|
end
|
527
523
|
|
528
524
|
it 'should alias a command with another command' do
|
529
|
-
|
525
|
+
klass = Pry::CommandSet.new :test do
|
530
526
|
alias_command "help2", "help"
|
531
527
|
end
|
532
528
|
|
533
|
-
Command6.commands["help2"].should == Command6.commands["help"]
|
534
|
-
# str_output = StringIO.new
|
535
|
-
# Pry.new(:input => InputTester.new("run_v"), :output => str_output, :commands => Command3).rep
|
536
|
-
# str_output.string.should =~ /v command/
|
537
529
|
|
538
|
-
|
530
|
+
klass.commands["help2"].block.should == klass.commands["help"].block
|
539
531
|
end
|
540
532
|
|
541
533
|
it 'should change description of a command using desc' do
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
orig = Command7.commands["help"][:description]
|
547
|
-
|
548
|
-
class Command7
|
534
|
+
klass = Pry::CommandSet.new :test do; end
|
535
|
+
orig = klass.commands["help"].description
|
536
|
+
klass.instance_eval do
|
549
537
|
desc "help", "blah"
|
550
538
|
end
|
551
|
-
|
552
|
-
|
553
|
-
Command7.commands["help"][:description].should == "blah"
|
554
|
-
|
555
|
-
Object.remove_const(:Command7)
|
539
|
+
klass.commands["help"].description.should.not == orig
|
540
|
+
klass.commands["help"].description.should == "blah"
|
556
541
|
end
|
557
542
|
|
558
543
|
it 'should run a command from within a command' do
|
559
|
-
|
544
|
+
klass = Pry::CommandSet.new :test do
|
560
545
|
command "v" do
|
561
546
|
output.puts "v command"
|
562
547
|
end
|
@@ -567,69 +552,56 @@ describe Pry do
|
|
567
552
|
end
|
568
553
|
|
569
554
|
str_output = StringIO.new
|
570
|
-
Pry.new(:input => InputTester.new("run_v"), :output => str_output, :commands =>
|
555
|
+
Pry.new(:input => InputTester.new("run_v"), :output => str_output, :commands => klass).rep
|
571
556
|
str_output.string.should =~ /v command/
|
572
|
-
|
573
|
-
Object.remove_const(:Command01)
|
574
557
|
end
|
575
558
|
|
576
559
|
it 'should enable an inherited method to access opts and output and target, due to instance_exec' do
|
577
|
-
|
560
|
+
klass = Pry::CommandSet.new :test do
|
578
561
|
command "v" do
|
579
562
|
output.puts "#{target.eval('self')}"
|
580
563
|
end
|
581
564
|
end
|
582
565
|
|
583
|
-
|
566
|
+
child_klass = Pry::CommandSet.new :test2, klass do
|
584
567
|
end
|
585
568
|
|
586
569
|
str_output = StringIO.new
|
587
570
|
Pry.new(:print => proc {}, :input => InputTester.new("v"),
|
588
|
-
:output => str_output, :commands =>
|
571
|
+
:output => str_output, :commands => child_klass).rep("john")
|
589
572
|
|
590
573
|
str_output.string.rstrip.should == "john"
|
591
|
-
|
592
|
-
Object.remove_const(:Command3)
|
593
|
-
Object.remove_const(:Command4)
|
594
574
|
end
|
595
575
|
|
596
576
|
it 'should import commands from another command object' do
|
597
|
-
|
598
|
-
|
599
|
-
class Command77 < Pry::CommandBase
|
600
|
-
import_from Pry::Commands, "status", "jump-to"
|
577
|
+
klass = Pry::CommandSet.new :test do
|
578
|
+
import_from Pry::Commands, "ls", "jump-to"
|
601
579
|
end
|
602
580
|
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
str_output.string.should =~ /Status:/
|
607
|
-
|
608
|
-
Object.remove_const(:Command77)
|
609
|
-
end
|
581
|
+
klass.commands.include?("ls").should == true
|
582
|
+
klass.commands.include?("jump-to").should == true
|
583
|
+
end
|
610
584
|
|
611
585
|
it 'should delete some inherited commands when using delete method' do
|
612
|
-
|
586
|
+
klass = Pry::CommandSet.new :test, Pry::Commands do
|
613
587
|
command "v" do
|
614
588
|
end
|
615
589
|
|
616
|
-
delete "
|
590
|
+
delete "show-doc", "show-method"
|
617
591
|
delete "ls"
|
618
592
|
end
|
619
593
|
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
Object.remove_const(:Command3)
|
594
|
+
klass.commands.include?("nesting").should == true
|
595
|
+
klass.commands.include?("jump-to").should == true
|
596
|
+
klass.commands.include?("cd").should == true
|
597
|
+
klass.commands.include?("v").should == true
|
598
|
+
klass.commands.include?("show-doc").should == false
|
599
|
+
klass.commands.include?("show-method").should == false
|
600
|
+
klass.commands.include?("ls").should == false
|
629
601
|
end
|
630
602
|
|
631
603
|
it 'should override some inherited commands' do
|
632
|
-
|
604
|
+
klass = Pry::CommandSet.new :test, Pry::Commands do
|
633
605
|
command "jump-to" do
|
634
606
|
output.puts "jump-to the music"
|
635
607
|
end
|
@@ -643,14 +615,13 @@ describe Pry do
|
|
643
615
|
Pry.print = proc {}
|
644
616
|
|
645
617
|
str_output = StringIO.new
|
646
|
-
Pry.new(:input => InputTester.new("jump-to"), :output => str_output, :commands =>
|
618
|
+
Pry.new(:input => InputTester.new("jump-to"), :output => str_output, :commands => klass).rep
|
647
619
|
str_output.string.rstrip.should == "jump-to the music"
|
648
620
|
|
649
621
|
str_output = StringIO.new
|
650
|
-
Pry.new(:input => InputTester.new("help"), :output => str_output, :commands =>
|
622
|
+
Pry.new(:input => InputTester.new("help"), :output => str_output, :commands => klass).rep
|
651
623
|
str_output.string.rstrip.should == "help to the music"
|
652
624
|
|
653
|
-
Object.remove_const(:Command3)
|
654
625
|
|
655
626
|
Pry.reset_defaults
|
656
627
|
Pry.color = false
|
@@ -737,6 +708,67 @@ describe Pry do
|
|
737
708
|
Pry.new.select_prompt(true, 0).should == "test prompt> "
|
738
709
|
Pry.new.select_prompt(false, 0).should == "test prompt* "
|
739
710
|
end
|
711
|
+
|
712
|
+
describe 'storing and restoring the prompt' do
|
713
|
+
before do
|
714
|
+
make = lambda do |name,i|
|
715
|
+
prompt = [ proc { "#{i}>" } , proc { "#{i+1}>" } ]
|
716
|
+
(class << prompt; self; end).send(:define_method, :inspect) { "<Prompt-#{name}>" }
|
717
|
+
prompt
|
718
|
+
end
|
719
|
+
@a , @b , @c = make[:a,0] , make[:b,1] , make[:c,2]
|
720
|
+
@pry = Pry.new :prompt => @a
|
721
|
+
end
|
722
|
+
it 'should have a prompt stack' do
|
723
|
+
@pry.push_prompt @b
|
724
|
+
@pry.push_prompt @c
|
725
|
+
@pry.prompt.should == @c
|
726
|
+
@pry.pop_prompt
|
727
|
+
@pry.prompt.should == @b
|
728
|
+
@pry.pop_prompt
|
729
|
+
@pry.prompt.should == @a
|
730
|
+
end
|
731
|
+
|
732
|
+
it 'should restore overridden prompts when returning from file-mode' do
|
733
|
+
pry = Pry.new :input => InputTester.new('shell-mode', 'shell-mode'),
|
734
|
+
:prompt => [ proc { 'P>' } ] * 2
|
735
|
+
pry.select_prompt(true, 0).should == "P>"
|
736
|
+
pry.re
|
737
|
+
pry.select_prompt(true, 0).should =~ /\Apry .* \$ \z/
|
738
|
+
pry.re
|
739
|
+
pry.select_prompt(true, 0).should == "P>"
|
740
|
+
end
|
741
|
+
|
742
|
+
it '#pop_prompt should return the popped prompt' do
|
743
|
+
@pry.push_prompt @b
|
744
|
+
@pry.push_prompt @c
|
745
|
+
@pry.pop_prompt.should == @c
|
746
|
+
@pry.pop_prompt.should == @b
|
747
|
+
end
|
748
|
+
|
749
|
+
it 'should not pop the last prompt' do
|
750
|
+
@pry.push_prompt @b
|
751
|
+
@pry.pop_prompt.should == @b
|
752
|
+
@pry.pop_prompt.should == @a
|
753
|
+
@pry.pop_prompt.should == @a
|
754
|
+
@pry.prompt.should == @a
|
755
|
+
end
|
756
|
+
|
757
|
+
describe '#prompt= should replace the current prompt with the new prompt' do
|
758
|
+
it 'when only one prompt on the stack' do
|
759
|
+
@pry.prompt = @b
|
760
|
+
@pry.prompt.should == @b
|
761
|
+
@pry.pop_prompt.should == @b
|
762
|
+
@pry.pop_prompt.should == @b
|
763
|
+
end
|
764
|
+
it 'when several prompts on the stack' do
|
765
|
+
@pry.push_prompt @b
|
766
|
+
@pry.prompt = @c
|
767
|
+
@pry.pop_prompt.should == @c
|
768
|
+
@pry.pop_prompt.should == @a
|
769
|
+
end
|
770
|
+
end
|
771
|
+
end
|
740
772
|
end
|
741
773
|
|
742
774
|
it 'should set the hooks default, and the default should be overridable' do
|