pry 0.9.0pre3-i386-mingw32 → 0.9.1-i386-mingw32
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 +25 -6
- data/README.markdown +10 -3
- data/Rakefile +6 -17
- data/bin/pry +11 -0
- data/lib/pry.rb +3 -7
- data/lib/pry/command_processor.rb +19 -7
- data/lib/pry/commands.rb +0 -3
- data/lib/pry/config.rb +7 -3
- data/lib/pry/default_commands/context.rb +1 -0
- data/lib/pry/default_commands/documentation.rb +32 -14
- data/lib/pry/default_commands/input.rb +186 -54
- data/lib/pry/default_commands/introspection.rb +59 -13
- data/lib/pry/default_commands/ls.rb +21 -7
- data/lib/pry/extended_commands/experimental.rb +0 -31
- data/lib/pry/extended_commands/user_command_api.rb +1 -1
- data/lib/pry/helpers/base_helpers.rb +9 -1
- data/lib/pry/plugins.rb +4 -4
- data/lib/pry/pry_class.rb +4 -3
- data/lib/pry/pry_instance.rb +11 -4
- data/lib/pry/version.rb +1 -1
- data/pry.gemspec +45 -0
- data/test/helper.rb +2 -2
- data/test/test_command_processor.rb +73 -1
- data/test/test_default_commands/test_input.rb +172 -2
- data/test/test_default_commands/test_introspection.rb +9 -0
- data/test/test_pry.rb +34 -6
- metadata +8 -7
@@ -13,11 +13,118 @@ describe "Pry::DefaultCommands::Input" do
|
|
13
13
|
|
14
14
|
it 'should correctly amend the specified line of input when line number given ' do
|
15
15
|
str_output = StringIO.new
|
16
|
-
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line
|
16
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 1 def goodbye", "show-input", "exit-all"), str_output) do
|
17
17
|
pry
|
18
18
|
end
|
19
19
|
str_output.string.should =~ /\A\d+: def goodbye\n\d+: puts :bing\n\d+: puts :bang/
|
20
20
|
end
|
21
|
+
|
22
|
+
it 'should correctly amend the specified line of input when line number given, 0 should behave as 1 ' do
|
23
|
+
str_output = StringIO.new
|
24
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 0 def goodbye", "show-input", "exit-all"), str_output) do
|
25
|
+
pry
|
26
|
+
end
|
27
|
+
str_output.string.should =~ /\A\d+: def goodbye\n\d+: puts :bing\n\d+: puts :bang/
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should correctly amend the specified line of input when line number given (negative number)' do
|
31
|
+
str_output = StringIO.new
|
32
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line -1 puts :bink", "show-input", "exit-all"), str_output) do
|
33
|
+
pry
|
34
|
+
end
|
35
|
+
str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bing\n\d+: puts :bink/
|
36
|
+
|
37
|
+
str_output = StringIO.new
|
38
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line -2 puts :bink", "show-input", "exit-all"), str_output) do
|
39
|
+
pry
|
40
|
+
end
|
41
|
+
str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bink\n\d+: puts :bang/
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should correctly amend the specified range of lines of input when range of negative numbers given (negative number)' do
|
45
|
+
str_output = StringIO.new
|
46
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boat", "amend-line -3..-2 puts :bink", "show-input", "exit-all"), str_output) do
|
47
|
+
pry
|
48
|
+
end
|
49
|
+
str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bink\n\d+: puts :boat/
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'should correctly amend the specified line with string interpolated text' do
|
53
|
+
str_output = StringIO.new
|
54
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", 'amend-line puts "#{goodbye}"', "show-input", "exit-all"), str_output) do
|
55
|
+
pry
|
56
|
+
end
|
57
|
+
|
58
|
+
str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bing\n\d+: puts \"\#{goodbye}\"/
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should display error if nothing to amend' do
|
62
|
+
str_output = StringIO.new
|
63
|
+
redirect_pry_io(InputTester.new("amend-line", "exit-all"), str_output) do
|
64
|
+
pry
|
65
|
+
end
|
66
|
+
str_output.string.should =~ /No input to amend/
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
it 'should correctly amend the specified range of lines' do
|
71
|
+
str_output = StringIO.new
|
72
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :heart", "amend-line 2..3 puts :bong", "show-input", "exit-all"), str_output) do
|
73
|
+
pry
|
74
|
+
end
|
75
|
+
str_output.string.should =~ /\A\d+: def hello\n\d+: puts :bong\n\d+: puts :heart/
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should correctly delete a specific line using the ! for content' do
|
79
|
+
str_output = StringIO.new
|
80
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line 3 !", "show-input", "exit-all"), str_output) do
|
81
|
+
pry
|
82
|
+
end
|
83
|
+
|
84
|
+
str_output.string.should =~ /\d+: def hello\n\d+: puts :bing\n\d+: puts :boast\n\d+: puts :heart/
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'should correctly delete a range of lines using the ! for content' do
|
88
|
+
str_output = StringIO.new
|
89
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line 2..4 !", "show-input", "exit-all"), str_output) do
|
90
|
+
pry
|
91
|
+
end
|
92
|
+
|
93
|
+
str_output.string.should =~ /\d+: def hello\n\d+: puts :heart\n\Z/
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'should correctly delete the previous line using the ! for content' do
|
97
|
+
str_output = StringIO.new
|
98
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line !", "show-input", "exit-all"), str_output) do
|
99
|
+
pry
|
100
|
+
end
|
101
|
+
|
102
|
+
str_output.string.should =~ /\d+: def hello\n\d+: puts :bing\n\d+: puts :bang\n\d+: puts :boast\n\Z/
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'should correctly amend the specified range of lines, using negative numbers in range' do
|
106
|
+
str_output = StringIO.new
|
107
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "puts :boast", "puts :heart", "amend-line-2..-2 puts :bong", "show-input", "exit-all"), str_output) do
|
108
|
+
pry
|
109
|
+
end
|
110
|
+
str_output.string.should =~ /\d+: def hello\n\d+: puts :bong\n\d+: puts :heart/
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should correctly insert a new line of input before a specified line using the > syntax' do
|
114
|
+
str_output = StringIO.new
|
115
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 2 >puts :inserted", "show-input", "exit-all"), str_output) do
|
116
|
+
pry
|
117
|
+
end
|
118
|
+
str_output.string.should =~ /\d+: def hello\n\d+: puts :inserted\n\d+: puts :bing\n\d+: puts :bang/
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'should correctly insert a new line of input before a specified line using the > syntax (should ignore second value of range)' do
|
122
|
+
str_output = StringIO.new
|
123
|
+
redirect_pry_io(InputTester.new("def hello", "puts :bing", "puts :bang", "amend-line 2..21 >puts :inserted", "show-input", "exit-all"), str_output) do
|
124
|
+
pry
|
125
|
+
end
|
126
|
+
str_output.string.should =~ /\d+: def hello\n\d+: puts :inserted\n\d+: puts :bing\n\d+: puts :bang/
|
127
|
+
end
|
21
128
|
end
|
22
129
|
|
23
130
|
describe "show-input" do
|
@@ -42,6 +149,53 @@ describe "Pry::DefaultCommands::Input" do
|
|
42
149
|
end
|
43
150
|
end
|
44
151
|
|
152
|
+
describe "play" do
|
153
|
+
it 'should play a string of code (with no args)' do
|
154
|
+
redirect_pry_io(InputTester.new("play :test_string", "exit-all"), str_output = StringIO.new) do
|
155
|
+
pry
|
156
|
+
end
|
157
|
+
str_output.string.should =~ /:test_string/
|
158
|
+
end
|
159
|
+
|
160
|
+
it 'should play an interpolated string of code (with no args)' do
|
161
|
+
$obj = ":test_string_interpolated"
|
162
|
+
redirect_pry_io(InputTester.new('play #{$obj}', "exit-all"), str_output = StringIO.new) do
|
163
|
+
pry
|
164
|
+
end
|
165
|
+
str_output.string.should =~ /:test_string_interpolated/
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'should play a method with the -m switch (a single line)' do
|
169
|
+
$o = Object.new
|
170
|
+
def $o.test_method
|
171
|
+
:test_method_content
|
172
|
+
end
|
173
|
+
|
174
|
+
redirect_pry_io(InputTester.new('play -m $o.test_method --lines 2', "exit-all"), str_output = StringIO.new) do
|
175
|
+
pry
|
176
|
+
end
|
177
|
+
|
178
|
+
str_output.string.should =~ /:test_method_content/
|
179
|
+
$o = nil
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'should play a method with the -m switch (multiple line)' do
|
183
|
+
$o = Object.new
|
184
|
+
def $o.test_method
|
185
|
+
1 + 102
|
186
|
+
5 * 6
|
187
|
+
end
|
188
|
+
|
189
|
+
redirect_pry_io(InputTester.new('play -m $o.test_method --lines 2..3', "exit-all"), str_output = StringIO.new) do
|
190
|
+
pry
|
191
|
+
end
|
192
|
+
|
193
|
+
str_output.string.should =~ /103\n.*30/
|
194
|
+
$o = nil
|
195
|
+
end
|
196
|
+
|
197
|
+
end
|
198
|
+
|
45
199
|
describe "hist" do
|
46
200
|
push_first_hist_line = lambda do |hist, line|
|
47
201
|
hist.push line
|
@@ -94,13 +248,29 @@ describe "Pry::DefaultCommands::Input" do
|
|
94
248
|
@hist.push "pepper"
|
95
249
|
@hist.push "orange"
|
96
250
|
@hist.push "grape"
|
251
|
+
@hist.push "def blah 1"
|
252
|
+
@hist.push "def boink 2"
|
253
|
+
@hist.push "place holder"
|
97
254
|
|
98
255
|
str_output = StringIO.new
|
99
256
|
redirect_pry_io(InputTester.new("hist --grep o", "exit-all"), str_output) do
|
100
257
|
pry
|
101
258
|
end
|
102
|
-
|
103
259
|
str_output.string.should =~ /\d:.*?box\n\d:.*?button\n\d:.*?orange/
|
260
|
+
|
261
|
+
# test more than one word in a regex match (def blah)
|
262
|
+
str_output = StringIO.new
|
263
|
+
redirect_pry_io(InputTester.new("hist --grep def blah", "exit-all"), str_output) do
|
264
|
+
pry
|
265
|
+
end
|
266
|
+
str_output.string.should =~ /def blah 1/
|
267
|
+
|
268
|
+
# test more than one word with leading white space in a regex match (def boink)
|
269
|
+
str_output = StringIO.new
|
270
|
+
redirect_pry_io(InputTester.new("hist --grep def boink", "exit-all"), str_output) do
|
271
|
+
pry
|
272
|
+
end
|
273
|
+
str_output.string.should =~ /def boink 2/
|
104
274
|
end
|
105
275
|
|
106
276
|
it 'should return last N lines in history with --tail switch' do
|
@@ -20,6 +20,15 @@ describe "Pry::DefaultCommands::Introspection" do
|
|
20
20
|
str_output.string.should =~ /\d+: def sample/
|
21
21
|
end
|
22
22
|
|
23
|
+
it 'should output a method\'s source with line numbers starting at 1' do
|
24
|
+
str_output = StringIO.new
|
25
|
+
redirect_pry_io(InputTester.new("show-method -b sample_method", "exit-all"), str_output) do
|
26
|
+
pry
|
27
|
+
end
|
28
|
+
|
29
|
+
str_output.string.should =~ /1: def sample/
|
30
|
+
end
|
31
|
+
|
23
32
|
it 'should output a method\'s source if inside method without needing to use method name' do
|
24
33
|
$str_output = StringIO.new
|
25
34
|
|
data/test/test_pry.rb
CHANGED
@@ -7,10 +7,12 @@ puts "--"
|
|
7
7
|
|
8
8
|
describe Pry do
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
if RUBY_PLATFORM !~ /mingw/ && RUBY_PLATFORM !~ /mswin/
|
11
|
+
describe 'warning emissions' do
|
12
|
+
it 'should emit no warnings' do
|
13
|
+
Open4.popen4 'ruby -I lib -rubygems -r"pry" -W -e "exit"' do |pid, stdin, stdout, stderr|
|
14
|
+
stderr.read.empty?.should == true
|
15
|
+
end
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -40,6 +42,17 @@ describe Pry do
|
|
40
42
|
@excep.is_a?(NameError).should == true
|
41
43
|
end
|
42
44
|
|
45
|
+
if defined?(BasicObject)
|
46
|
+
it 'should be able to operate inside the BasicObject class' do
|
47
|
+
$obj = nil
|
48
|
+
redirect_pry_io(InputTester.new(":foo", "$obj = _", "exit-all"), StringIO.new) do
|
49
|
+
BasicObject.pry
|
50
|
+
end
|
51
|
+
$obj.should == :foo
|
52
|
+
$obj = nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
43
56
|
it 'should set an ivar on an object' do
|
44
57
|
input_string = "@x = 10"
|
45
58
|
input = InputTester.new(input_string)
|
@@ -51,12 +64,12 @@ describe Pry do
|
|
51
64
|
end
|
52
65
|
|
53
66
|
it 'should make self evaluate to the receiver of the rep session' do
|
54
|
-
o =
|
67
|
+
o = :john
|
55
68
|
str_output = StringIO.new
|
56
69
|
|
57
70
|
pry_tester = Pry.new(:input => InputTester.new("self"), :output => str_output)
|
58
71
|
pry_tester.rep(o)
|
59
|
-
str_output.string.should =~
|
72
|
+
str_output.string.should =~ /:john/
|
60
73
|
end
|
61
74
|
|
62
75
|
it 'should work with multi-line input' do
|
@@ -488,6 +501,21 @@ describe Pry do
|
|
488
501
|
$test_interpolation = nil
|
489
502
|
end
|
490
503
|
|
504
|
+
it 'should NOT try to interpolate pure ruby code (no commands) ' do
|
505
|
+
str_output = StringIO.new
|
506
|
+
Pry.new(:input => StringIO.new('puts \'#{aggy}\''), :output => str_output).rep
|
507
|
+
str_output.string.should.not =~ /NameError/
|
508
|
+
|
509
|
+
Pry.new(:input => StringIO.new('puts #{aggy}'), :output => str_output).rep
|
510
|
+
str_output.string.should.not =~ /NameError/
|
511
|
+
|
512
|
+
$test_interpolation = "blah"
|
513
|
+
Pry.new(:input => StringIO.new('puts \'#{$test_interpolation}\''), :output => str_output).rep
|
514
|
+
|
515
|
+
str_output.string.should.not =~ /blah/
|
516
|
+
$test_interpolation = nil
|
517
|
+
end
|
518
|
+
|
491
519
|
it 'should create a command with a space in its name' do
|
492
520
|
set = Pry::CommandSet.new do
|
493
521
|
command "hello baby", "" do
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 0.9.
|
4
|
+
prerelease:
|
5
|
+
version: 0.9.1
|
6
6
|
platform: i386-mingw32
|
7
7
|
authors:
|
8
8
|
- John Mair (banisterfiend)
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-06-
|
13
|
+
date: 2011-06-17 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: ruby_parser
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.
|
45
|
+
version: 1.9.0
|
46
46
|
type: :runtime
|
47
47
|
version_requirements: *id003
|
48
48
|
- !ruby/object:Gem::Dependency
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
requirements:
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.
|
56
|
+
version: 0.6.0
|
57
57
|
type: :runtime
|
58
58
|
version_requirements: *id004
|
59
59
|
- !ruby/object:Gem::Dependency
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- lib/pry/pry_class.rb
|
149
149
|
- lib/pry/pry_instance.rb
|
150
150
|
- lib/pry/version.rb
|
151
|
+
- pry.gemspec
|
151
152
|
- test/helper.rb
|
152
153
|
- test/test_command_helpers.rb
|
153
154
|
- test/test_command_processor.rb
|
@@ -180,9 +181,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
182
|
none: false
|
182
183
|
requirements:
|
183
|
-
- - "
|
184
|
+
- - ">="
|
184
185
|
- !ruby/object:Gem::Version
|
185
|
-
version:
|
186
|
+
version: "0"
|
186
187
|
requirements: []
|
187
188
|
|
188
189
|
rubyforge_project:
|