pry 0.9.8pre7-i386-mingw32 → 0.9.8pre8-i386-mingw32

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: i386-mingw32
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: &70177450933900 !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: *70177450933900
25
- - !ruby/object:Gem::Dependency
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
26
27
  name: slop
27
- requirement: &70177450933280 !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: *70177450933280
39
- - !ruby/object:Gem::Dependency
39
+ version_requirements: *id002
40
+ - !ruby/object:Gem::Dependency
40
41
  name: method_source
41
- requirement: &70177450932340 !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: *70177450932340
50
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id003
51
+ - !ruby/object:Gem::Dependency
51
52
  name: bacon
52
- requirement: &70177450931740 !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: *70177450931740
61
- - !ruby/object:Gem::Dependency
61
+ version_requirements: *id004
62
+ - !ruby/object:Gem::Dependency
62
63
  name: open4
63
- requirement: &70177450931160 !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: *70177450931160
72
- - !ruby/object:Gem::Dependency
72
+ version_requirements: *id005
73
+ - !ruby/object:Gem::Dependency
73
74
  name: rake
74
- requirement: &70177450930580 !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: *70177450930580
83
- - !ruby/object:Gem::Dependency
83
+ version_requirements: *id006
84
+ - !ruby/object:Gem::Dependency
84
85
  name: win32console
85
- requirement: &70177450930000 !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: '1.3'
91
+ - !ruby/object:Gem::Version
92
+ version: "1.3"
91
93
  type: :runtime
92
- prerelease: false
93
- version_requirements: *70177450930000
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