pry 0.9.8pre7-java → 0.9.8pre8-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.
@@ -1,6 +1,196 @@
1
1
  require 'helper'
2
2
 
3
3
  describe "Pry::DefaultCommands::Shell" do
4
+ describe "save-file" do
5
+ before do
6
+ @tf = Tempfile.new(["pry", ".py"])
7
+ @path = @tf.path
8
+ end
9
+
10
+ after do
11
+ @tf.close(true)
12
+ end
13
+
14
+ describe "-f" do
15
+ it 'should save a file to a file' do
16
+ f = Tempfile.new(["pry", ".py"])
17
+ path = f.path
18
+ f.write ":cute_horse"
19
+
20
+ redirect_pry_io(InputTester.new("save-file -f #{path} #{@path}",
21
+ "exit-all")) do
22
+ Pry.start(@o)
23
+ end
24
+ File.read(@path).should == File.read(path)
25
+
26
+ f.close(true)
27
+ end
28
+ end
29
+
30
+ describe "-i" do
31
+ it 'should save input expressions to a file (single expression)' do
32
+ redirect_pry_io(InputTester.new(":horse_nostrils",
33
+ "save-file -i 1 #{@path}",
34
+ "exit-all")) do
35
+ Pry.start(@o)
36
+ end
37
+ File.read(@path).should == ":horse_nostrils\n"
38
+ end
39
+
40
+ it 'should save input expressions to a file (range)' do
41
+ redirect_pry_io(InputTester.new(":horse_nostrils",
42
+ ":sucking_up_all_the_oxygen",
43
+ "save-file -i 1..2 #{@path}",
44
+ "exit-all")) do
45
+ Pry.start(@o)
46
+ end
47
+ File.read(@path).should == ":horse_nostrils\n:sucking_up_all_the_oxygen\n"
48
+ end
49
+ end
50
+
51
+ describe "-m" do
52
+ before do
53
+ @o = Object.new
54
+ def @o.baby
55
+ :baby
56
+ end
57
+ def @o.bang
58
+ :bang
59
+ end
60
+ end
61
+
62
+ describe "single method" do
63
+ it 'should save a method to a file' do
64
+ redirect_pry_io(InputTester.new("save-file #{@path} -m baby",
65
+ "exit-all")) do
66
+ Pry.start(@o)
67
+ end
68
+ File.read(@path).should == Pry::Method.from_obj(@o, :baby).source
69
+ end
70
+
71
+ it 'should save a method to a file truncated by --lines' do
72
+ redirect_pry_io(InputTester.new("save-file #{@path} -m baby --lines 2..4",
73
+ "exit-all")) do
74
+ Pry.start(@o)
75
+ end
76
+
77
+ # must add 1 as first line of method is 1
78
+ File.read(@path).should == Pry::Method.from_obj(@o, :baby).source.lines.to_a[1..5].join
79
+ end
80
+ end
81
+
82
+ describe "multiple method" do
83
+ it 'should save multiple methods to a file' do
84
+ redirect_pry_io(InputTester.new("save-file #{@path} -m baby -m bang",
85
+ "exit-all")) do
86
+ Pry.start(@o)
87
+ end
88
+ File.read(@path).should == Pry::Method.from_obj(@o, :baby).source +
89
+ Pry::Method.from_obj(@o, :bang).source
90
+ end
91
+
92
+ it 'should save multiple methods to a file trucated by --lines' do
93
+ redirect_pry_io(InputTester.new("save-file #{@path} -m baby -m bang --lines 2..-2",
94
+ "exit-all")) do
95
+ Pry.start(@o)
96
+ end
97
+
98
+ # must add 1 as first line of method is 1
99
+ File.read(@path).should == (Pry::Method.from_obj(@o, :baby).source +
100
+ Pry::Method.from_obj(@o, :bang).source).lines.to_a[1..-2].join
101
+ end
102
+
103
+ it 'should save multiple methods to a file trucated by --lines 1 (single parameter, not range)' do
104
+ redirect_pry_io(InputTester.new("save-file #{@path} -m baby -m bang --lines 1",
105
+ "exit-all")) do
106
+ Pry.start(@o)
107
+ end
108
+
109
+ # must add 1 as first line of method is 1
110
+ File.read(@path).should == (Pry::Method.from_obj(@o, :baby).source +
111
+ Pry::Method.from_obj(@o, :bang).source).lines.to_a[0]
112
+ end
113
+
114
+ end
115
+
116
+ end
117
+
118
+ describe "overwrite by default (no --append)" do
119
+ it 'should overwrite specified file with new input' do
120
+ redirect_pry_io(InputTester.new(":horse_nostrils",
121
+ "save-file -i 1 #{@path}",
122
+ "exit-all")) do
123
+ Pry.start(@o)
124
+ end
125
+
126
+ redirect_pry_io(InputTester.new(":sucking_up_all_the_oxygen",
127
+ "save-file -i 1 #{@path}",
128
+ "exit-all")) do
129
+ Pry.start(@o)
130
+ end
131
+
132
+ File.read(@path).should == ":sucking_up_all_the_oxygen\n"
133
+ end
134
+
135
+ end
136
+
137
+ describe "--append" do
138
+ it 'should append to end of specified file' do
139
+ redirect_pry_io(InputTester.new(":horse_nostrils",
140
+ "save-file -i 1 #{@path}",
141
+ "exit-all")) do
142
+ Pry.start(@o)
143
+ end
144
+
145
+ redirect_pry_io(InputTester.new(":sucking_up_all_the_oxygen",
146
+ "save-file -i 1 #{@path} -a",
147
+ "exit-all")) do
148
+ Pry.start(@o)
149
+ end
150
+
151
+ File.read(@path).should == ":horse_nostrils\n:sucking_up_all_the_oxygen\n"
152
+ end
153
+ end
154
+
155
+ describe "-c" do
156
+ it 'should save a command to a file' do
157
+ redirect_pry_io(InputTester.new("save-file #{@path} -c show-method",
158
+ "exit-all")) do
159
+ Pry.start(@o)
160
+ end
161
+ cmd = Pry::Method.new(Pry.commands.find_command("show-method").block)
162
+ File.read(@path).should == Pry::Code.from_method(cmd).to_s
163
+ end
164
+ end
165
+
166
+ describe "combined options" do
167
+ before do
168
+ @o = Object.new
169
+ def @o.baby
170
+ :baby
171
+ end
172
+ end
173
+
174
+ it 'should save input cache and a method to a file (in that order)' do
175
+ redirect_pry_io(InputTester.new(":horse_nostrils",
176
+ "save-file -i 1 -m baby #{@path}",
177
+ "exit-all")) do
178
+ Pry.start(@o)
179
+ end
180
+ File.read(@path).should == ":horse_nostrils\n" + Pry::Method.from_obj(@o, :baby).source
181
+ end
182
+
183
+ it 'should select a portion to save using --lines' do
184
+ redirect_pry_io(InputTester.new(":horse_nostrils",
185
+ "save-file -i 1 -m baby #{@path} --lines 2..-2",
186
+ "exit-all")) do
187
+ Pry.start(@o)
188
+ end
189
+ File.read(@path).should == (":horse_nostrils\n" + Pry::Method.from_obj(@o, :baby).source).lines.to_a[1..-2].join
190
+ end
191
+ end
192
+ end
193
+
4
194
  describe "cat" do
5
195
 
6
196
  describe "on receiving a file that does not exist" do
data/test/test_hooks.rb CHANGED
@@ -152,7 +152,7 @@ describe Pry::Hooks do
152
152
  hooks_dup.get_hook(:test_hook, :testing).should == @hooks.get_hook(:test_hook, :testing)
153
153
  end
154
154
 
155
- it 'adding a new event to dupped instance should not affect original' do
155
+ it 'adding a new event to dupped instance should not affect original' do
156
156
  @hooks.add_hook(:test_hook, :testing) { :none_such }
157
157
  hooks_dup = @hooks.dup
158
158
 
@@ -161,7 +161,7 @@ describe Pry::Hooks do
161
161
  hooks_dup.get_hook(:other_test_hook, :testing).should.not == @hooks.get_hook(:other_test_hook, :testing)
162
162
  end
163
163
 
164
- it 'adding a new hook to dupped instance should not affect original' do
164
+ it 'adding a new hook to dupped instance should not affect original' do
165
165
  @hooks.add_hook(:test_hook, :testing) { :none_such }
166
166
  hooks_dup = @hooks.dup
167
167
 
@@ -415,6 +415,76 @@ describe Pry::Hooks do
415
415
  end
416
416
  end
417
417
  end
418
+ end
418
419
 
420
+ describe "anonymous hooks" do
421
+ it 'should allow adding of hook without a name' do
422
+ @hooks.add_hook(:test_hook, nil) {}
423
+ @hooks.hook_count(:test_hook).should == 1
424
+ end
425
+
426
+ it 'should only allow one anonymous hook to exist' do
427
+ @hooks.add_hook(:test_hook, nil) { }
428
+ @hooks.add_hook(:test_hook, nil) { }
429
+ @hooks.hook_count(:test_hook).should == 1
430
+ end
431
+
432
+ it 'should execute most recently added anonymous hook' do
433
+ x = nil
434
+ y = nil
435
+ @hooks.add_hook(:test_hook, nil) { y = 1 }
436
+ @hooks.add_hook(:test_hook, nil) { x = 2 }
437
+ @hooks.exec_hook(:test_hook)
438
+ y.should == nil
439
+ x.should == 2
440
+ end
419
441
  end
442
+
443
+ describe "deprecated hash-based API" do
444
+ after do
445
+ Pry.config.hooks.clear_all if Pry.config.hooks
446
+ end
447
+
448
+ describe "Pry.config.hooks" do
449
+ it 'should allow a hash-assignment' do
450
+ Pry.config.hooks = { :before_session => proc { :hello } }
451
+ Pry.config.hooks.get_hook(:before_session, nil).call.should == :hello
452
+ end
453
+
454
+ describe "Pry.config.hooks[]" do
455
+ it 'should return the only anonymous hook' do
456
+ Pry.config.hooks = { :before_session => proc { :hello } }
457
+ Pry.config.hooks[:before_session].call.should == :hello
458
+ end
459
+
460
+ it 'should add an anonymous hook when using Pry.config.hooks[]=' do
461
+ Pry.config.hooks[:before_session] = proc { :bing }
462
+ Pry.config.hooks.hook_count(:before_session).should == 1
463
+ end
464
+
465
+ it 'should add overwrite previous anonymous hooks with new one when calling Pry.config.hooks[]= multiple times' do
466
+ x = nil
467
+ Pry.config.hooks[:before_session] = proc { x = 1 }
468
+ Pry.config.hooks[:before_session] = proc { x = 2 }
469
+
470
+ Pry.config.hooks.exec_hook(:before_session)
471
+ Pry.config.hooks.hook_count(:before_session).should == 1
472
+ x.should == 2
473
+ end
474
+ end
475
+ end
476
+
477
+ describe "Pry.start" do
478
+ it 'should accept a hash for :hooks parameter' do
479
+
480
+ redirect_pry_io(InputTester.new("exit-all"), out=StringIO.new) do
481
+ Pry.start binding, :hooks => { :before_session => proc { |output, _, _| output.puts 'hello friend' } }
482
+ end
483
+
484
+ out.string.should =~ /hello friend/
485
+ end
486
+
487
+ end
488
+ end
489
+
420
490
  end
metadata CHANGED
@@ -1,103 +1,106 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pry
3
- version: !ruby/object:Gem::Version
4
- version: 0.9.8pre7
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease: 5
5
+ version: 0.9.8pre8
6
6
  platform: java
7
- authors:
7
+ authors:
8
8
  - John Mair (banisterfiend)
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-20 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
12
+
13
+ date: 2012-01-25 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
15
16
  name: coderay
16
- requirement: &70177450985940 !ruby/object:Gem::Requirement
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
17
19
  none: false
18
- requirements:
20
+ requirements:
19
21
  - - ~>
20
- - !ruby/object:Gem::Version
22
+ - !ruby/object:Gem::Version
21
23
  version: 1.0.5
22
24
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70177450985940
25
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
26
27
  name: slop
27
- requirement: &70177450985320 !ruby/object:Gem::Requirement
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
28
30
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
32
34
  version: 2.4.3
33
35
  - - <
34
- - !ruby/object:Gem::Version
35
- version: '3'
36
+ - !ruby/object:Gem::Version
37
+ version: "3"
36
38
  type: :runtime
37
- prerelease: false
38
- version_requirements: *70177450985320
39
- - !ruby/object:Gem::Dependency
39
+ version_requirements: *id002
40
+ - !ruby/object:Gem::Dependency
40
41
  name: method_source
41
- requirement: &70177450984360 !ruby/object:Gem::Requirement
42
+ prerelease: false
43
+ requirement: &id003 !ruby/object:Gem::Requirement
42
44
  none: false
43
- requirements:
45
+ requirements:
44
46
  - - ~>
45
- - !ruby/object:Gem::Version
46
- version: '0.7'
47
+ - !ruby/object:Gem::Version
48
+ version: "0.7"
47
49
  type: :runtime
48
- prerelease: false
49
- version_requirements: *70177450984360
50
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id003
51
+ - !ruby/object:Gem::Dependency
51
52
  name: bacon
52
- requirement: &70177450983780 !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id004 !ruby/object:Gem::Requirement
53
55
  none: false
54
- requirements:
56
+ requirements:
55
57
  - - ~>
56
- - !ruby/object:Gem::Version
57
- version: '1.1'
58
+ - !ruby/object:Gem::Version
59
+ version: "1.1"
58
60
  type: :development
59
- prerelease: false
60
- version_requirements: *70177450983780
61
- - !ruby/object:Gem::Dependency
61
+ version_requirements: *id004
62
+ - !ruby/object:Gem::Dependency
62
63
  name: open4
63
- requirement: &70177450983200 !ruby/object:Gem::Requirement
64
+ prerelease: false
65
+ requirement: &id005 !ruby/object:Gem::Requirement
64
66
  none: false
65
- requirements:
67
+ requirements:
66
68
  - - ~>
67
- - !ruby/object:Gem::Version
68
- version: '1.3'
69
+ - !ruby/object:Gem::Version
70
+ version: "1.3"
69
71
  type: :development
70
- prerelease: false
71
- version_requirements: *70177450983200
72
- - !ruby/object:Gem::Dependency
72
+ version_requirements: *id005
73
+ - !ruby/object:Gem::Dependency
73
74
  name: rake
74
- requirement: &70177450982620 !ruby/object:Gem::Requirement
75
+ prerelease: false
76
+ requirement: &id006 !ruby/object:Gem::Requirement
75
77
  none: false
76
- requirements:
78
+ requirements:
77
79
  - - ~>
78
- - !ruby/object:Gem::Version
79
- version: '0.9'
80
+ - !ruby/object:Gem::Version
81
+ version: "0.9"
80
82
  type: :development
81
- prerelease: false
82
- version_requirements: *70177450982620
83
- - !ruby/object:Gem::Dependency
83
+ version_requirements: *id006
84
+ - !ruby/object:Gem::Dependency
84
85
  name: spoon
85
- requirement: &70177450982060 !ruby/object:Gem::Requirement
86
+ prerelease: false
87
+ requirement: &id007 !ruby/object:Gem::Requirement
86
88
  none: false
87
- requirements:
89
+ requirements:
88
90
  - - ~>
89
- - !ruby/object:Gem::Version
90
- version: '0.0'
91
+ - !ruby/object:Gem::Version
92
+ version: "0.0"
91
93
  type: :runtime
92
- prerelease: false
93
- version_requirements: *70177450982060
94
+ version_requirements: *id007
94
95
  description: An IRB alternative and runtime developer console
95
96
  email: jrmair@gmail.com
96
- executables:
97
+ executables:
97
98
  - pry
98
99
  extensions: []
100
+
99
101
  extra_rdoc_files: []
100
- files:
102
+
103
+ files:
101
104
  - .document
102
105
  - .gemtest
103
106
  - .gitignore
@@ -198,29 +201,32 @@ files:
198
201
  - wiki/Home.md
199
202
  homepage: http://pry.github.com
200
203
  licenses: []
204
+
201
205
  post_install_message:
202
206
  rdoc_options: []
203
- require_paths:
207
+
208
+ require_paths:
204
209
  - lib
205
- required_ruby_version: !ruby/object:Gem::Requirement
210
+ required_ruby_version: !ruby/object:Gem::Requirement
206
211
  none: false
207
- requirements:
208
- - - ! '>='
209
- - !ruby/object:Gem::Version
210
- version: '0'
211
- required_rubygems_version: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: "0"
216
+ required_rubygems_version: !ruby/object:Gem::Requirement
212
217
  none: false
213
- requirements:
214
- - - ! '>'
215
- - !ruby/object:Gem::Version
218
+ requirements:
219
+ - - ">"
220
+ - !ruby/object:Gem::Version
216
221
  version: 1.3.1
217
222
  requirements: []
223
+
218
224
  rubyforge_project:
219
- rubygems_version: 1.8.6
225
+ rubygems_version: 1.8.11
220
226
  signing_key:
221
227
  specification_version: 3
222
228
  summary: An IRB alternative and runtime developer console
223
- test_files:
229
+ test_files:
224
230
  - test/helper.rb
225
231
  - test/test_cli.rb
226
232
  - test/test_code.rb