sprinkle 0.7.4 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/CHANGELOG.md +18 -14
  2. data/Gemfile.lock +11 -11
  3. data/lib/sprinkle.rb +19 -9
  4. data/lib/sprinkle/actors/capistrano.rb +2 -1
  5. data/lib/sprinkle/actors/dummy.rb +3 -3
  6. data/lib/sprinkle/actors/local.rb +7 -9
  7. data/lib/sprinkle/actors/ssh.rb +5 -5
  8. data/lib/sprinkle/deployment.rb +2 -1
  9. data/lib/sprinkle/extensions/sudo.rb +8 -4
  10. data/lib/sprinkle/installers/installer.rb +48 -37
  11. data/lib/sprinkle/installers/npm.rb +31 -30
  12. data/lib/sprinkle/installers/source.rb +6 -6
  13. data/lib/sprinkle/installers/user.rb +7 -6
  14. data/lib/sprinkle/package.rb +55 -51
  15. data/lib/sprinkle/package/chooser.rb +5 -4
  16. data/lib/sprinkle/package/rendering.rb +2 -2
  17. data/lib/sprinkle/policy.rb +13 -13
  18. data/lib/sprinkle/script.rb +5 -1
  19. data/lib/sprinkle/verify.rb +1 -0
  20. data/lib/sprinkle/version.rb +1 -1
  21. data/spec/spec_helper.rb +13 -7
  22. data/spec/sprinkle/actors/capistrano_spec.rb +18 -18
  23. data/spec/sprinkle/actors/local_spec.rb +3 -3
  24. data/spec/sprinkle/deployment_spec.rb +3 -3
  25. data/spec/sprinkle/installers/apt_spec.rb +1 -1
  26. data/spec/sprinkle/installers/binary_spec.rb +1 -1
  27. data/spec/sprinkle/installers/brew_spec.rb +1 -1
  28. data/spec/sprinkle/installers/bsd_port_spec.rb +1 -1
  29. data/spec/sprinkle/installers/file_spec.rb +9 -9
  30. data/spec/sprinkle/installers/freebsd_pkg_spec.rb +1 -1
  31. data/spec/sprinkle/installers/freebsd_portinstall_spec.rb +1 -1
  32. data/spec/sprinkle/installers/gem_spec.rb +1 -1
  33. data/spec/sprinkle/installers/installer_spec.rb +62 -25
  34. data/spec/sprinkle/installers/mac_port_spec.rb +1 -1
  35. data/spec/sprinkle/installers/npm_spec.rb +1 -1
  36. data/spec/sprinkle/installers/openbsd_pkg_spec.rb +1 -1
  37. data/spec/sprinkle/installers/opensolaris_pkg_spec.rb +1 -1
  38. data/spec/sprinkle/installers/pear_spec.rb +1 -1
  39. data/spec/sprinkle/installers/push_text_spec.rb +12 -12
  40. data/spec/sprinkle/installers/rake_spec.rb +1 -1
  41. data/spec/sprinkle/installers/replace_text_spec.rb +10 -10
  42. data/spec/sprinkle/installers/rpm_spec.rb +1 -1
  43. data/spec/sprinkle/installers/runner_spec.rb +9 -9
  44. data/spec/sprinkle/installers/smart_spec.rb +1 -1
  45. data/spec/sprinkle/installers/source_spec.rb +22 -27
  46. data/spec/sprinkle/installers/thor_spec.rb +1 -1
  47. data/spec/sprinkle/installers/transfer_spec.rb +35 -35
  48. data/spec/sprinkle/installers/user_spec.rb +13 -7
  49. data/spec/sprinkle/installers/yum_spec.rb +1 -1
  50. data/spec/sprinkle/installers/zypper_spec.rb +1 -1
  51. data/spec/sprinkle/package/package_repository_spec.rb +7 -7
  52. data/spec/sprinkle/package_spec.rb +58 -58
  53. data/spec/sprinkle/policy_spec.rb +20 -20
  54. data/spec/sprinkle/script_spec.rb +1 -1
  55. data/spec/sprinkle/verify_spec.rb +2 -2
  56. metadata +2 -2
@@ -3,7 +3,7 @@ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
3
3
  describe Sprinkle::Installers::Thor do
4
4
 
5
5
  before do
6
- @package = mock(Sprinkle::Package, :name => 'spec')
6
+ @package = double(Sprinkle::Package, :name => 'spec')
7
7
  end
8
8
 
9
9
  def create_thor(names, options = {}, &block)
@@ -5,11 +5,11 @@ describe Sprinkle::Installers::Transfer do
5
5
  include Sprinkle::Deployment
6
6
 
7
7
  before do
8
- @package = mock(Sprinkle::Package, :name => 'package', :sudo? => false)
8
+ @package = double(Sprinkle::Package, :name => 'package', :sudo? => false)
9
9
  @empty = Proc.new { }
10
- @delivery = mock(Sprinkle::Deployment, :install => true)
11
- @source = 'source'
12
- @destination = 'destination'
10
+ @delivery = double(Sprinkle::Deployment, :install => true)
11
+ @source = 'source'
12
+ @destination = 'destination'
13
13
  @installer = create_transfer(@source, @destination)
14
14
  @roles = []
15
15
  @deployment = deployment do
@@ -21,13 +21,13 @@ describe Sprinkle::Installers::Transfer do
21
21
  def create_transfer(source, dest, options={}, &block)
22
22
  i = Sprinkle::Installers::Transfer.new(@package, source, dest, options, &block)
23
23
  i.delivery = @delivery
24
- i
24
+ i
25
25
  end
26
26
 
27
27
  describe 'when created' do
28
28
  it 'should accept a source and destination to install' do
29
- @installer.source.should == @source
30
- @installer.destination.should == @destination
29
+ @installer.source.should eq @source
30
+ @installer.destination.should eq @destination
31
31
  end
32
32
  end
33
33
 
@@ -63,7 +63,7 @@ describe Sprinkle::Installers::Transfer do
63
63
  end
64
64
 
65
65
  it "should call the pre and post install commands around the file transfer" do
66
- @installer_commands.should == ["op1",:TRANSFER, "op2"]
66
+ @installer_commands.should eq ["op1",:TRANSFER, "op2"]
67
67
  end
68
68
 
69
69
  # it "should call transfer with recursive defaulted to nil" do
@@ -85,7 +85,7 @@ describe Sprinkle::Installers::Transfer do
85
85
  end
86
86
 
87
87
  it "should call the pre and post install commands around the file transfer" do
88
- @installer_commands.should == ["op1",:TRANSFER,
88
+ @installer_commands.should eq ["op1",:TRANSFER,
89
89
  "sudo mv /tmp/sprinkle_destination destination", "op2"]
90
90
  end
91
91
  end
@@ -101,52 +101,52 @@ describe Sprinkle::Installers::Transfer do
101
101
  end
102
102
 
103
103
  it "should call the pre and post install commands around the file transfer" do
104
- @installer_commands.should == ["op1","op1-1",:TRANSFER, "op2","op2-1"]
104
+ @installer_commands.should eq ["op1","op1-1",:TRANSFER, "op2","op2-1"]
105
105
  end
106
106
 
107
107
  end
108
108
 
109
- after do
109
+ after do
110
110
  @installer.process @roles
111
111
  end
112
112
  end
113
113
 
114
- describe "if the :render flag is true" do
115
- before do
114
+ describe "if the :render flag is true" do
115
+ before do
116
+ allow(::ActiveSupport::Deprecation).to receive(:warn)
116
117
  @installer = create_transfer @source, @destination, :render => true
117
- @delivery = @installer.delivery
118
- @delivery.stub!(:render_template_file)
118
+ @delivery = @installer.delivery
119
+ @delivery.stub(:render_template_file)
120
+ @tempfile = Tempfile.new("foo")
119
121
  end
120
122
 
121
- it "should render the source file as a template to a tempfile" do
122
- @tempfile = Tempfile.new("foo")
123
- @installer.should_receive(:render_template_file).with(@source, anything, @package.name).and_return(@tempfile)
124
- @delivery.stub!(:transfer)
125
- end
123
+ it "should render the source file as a template to a tempfile" do
124
+ @installer.should_receive(:render_template_file).with(@source, anything, @package.name).and_return(@tempfile)
125
+ @delivery.stub(:transfer)
126
+ end
126
127
 
127
- it "should call transfer with recursive set to false" do
128
- @tempfile = Tempfile.new("foo")
129
- @installer.should_receive(:render_template_file).with(@source, anything, @package.name).and_return(@tempfile)
130
- @installer.options[:recursive].should == false
131
- end
128
+ it "should call transfer with recursive set to false" do
129
+ @installer.should_receive(:render_template_file).with(@source, anything, @package.name).and_return(@tempfile)
130
+ @installer.options[:recursive].should eq false
131
+ end
132
132
 
133
- after do
133
+ after do
134
134
  @installer.process @roles
135
135
  end
136
- end
136
+ end
137
137
 
138
- describe "if the :recursive flag is explicitly set to false" do
139
- before do
138
+ describe "if the :recursive flag is explicitly set to false" do
139
+ before do
140
140
  @installer = create_transfer @source, @destination, :recursive => false
141
141
  end
142
142
 
143
- it "should call transfer with recursive set to false" do
144
- delivery = @installer.delivery
145
- @installer.options[:recursive].should == false
146
- end
143
+ it "should call transfer with recursive set to false" do
144
+ @installer.delivery
145
+ @installer.options[:recursive].should eq false
146
+ end
147
147
 
148
- after do
148
+ after do
149
149
  @installer.process @roles
150
150
  end
151
- end
151
+ end
152
152
  end
@@ -3,34 +3,40 @@ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
3
3
  describe Sprinkle::Installers::User do
4
4
 
5
5
  before do
6
- @package = mock(Sprinkle::Package, :name => 'spec')
6
+ @package = double(Sprinkle::Package, :name => 'spec', :sudo? => false)
7
7
  @user = "bob"
8
8
  end
9
9
 
10
10
  def create_user(name, options = {}, &block)
11
- Sprinkle::Installers::User.new "spec", name, options, &block
11
+ Sprinkle::Installers::User.new @package, name, options, &block
12
12
  end
13
13
 
14
14
  describe 'during installation' do
15
-
15
+
16
16
  it "should invoke add user" do
17
17
  @installer = create_user 'bob'
18
18
  @install_commands = @installer.send :install_commands
19
- @install_commands.should == "adduser --gecos ,,, bob"
19
+ @install_commands.should == "adduser --gecos ,,, bob"
20
20
  end
21
-
21
+
22
22
  it "should merge flags" do
23
23
  @installer = create_user 'bob', :flags => "-x"
24
24
  @install_commands = @installer.send :install_commands
25
25
  @install_commands.should == "adduser -x --gecos ,,, bob"
26
26
  end
27
-
27
+
28
28
  it "should use actual gecos options if passed" do
29
29
  @installer = create_user 'bob', :flags => "--gecos bob,,,"
30
30
  @install_commands = @installer.send :install_commands
31
31
  @install_commands.should == "adduser --gecos bob,,, bob"
32
32
  end
33
33
 
34
+ it "should use sudo if sudo specified" do
35
+ @installer = create_user 'bob', :sudo => true
36
+ @install_commands = @installer.send :install_commands
37
+ @install_commands.should == "sudo adduser --gecos ,,, bob"
38
+ end
39
+
34
40
  end
35
41
 
36
- end
42
+ end
@@ -3,7 +3,7 @@ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
3
3
  describe Sprinkle::Installers::Yum do
4
4
 
5
5
  before do
6
- @package = mock(Sprinkle::Package, :name => 'package')
6
+ @package = double(Sprinkle::Package, :name => 'package')
7
7
  end
8
8
 
9
9
  def create_rpm(rpms, &block)
@@ -3,7 +3,7 @@ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
3
3
  describe Sprinkle::Installers::Zypper do
4
4
 
5
5
  before do
6
- @package = mock(Sprinkle::Package, :name => 'package')
6
+ @package = double(Sprinkle::Package, :name => 'package')
7
7
  end
8
8
 
9
9
  def create_zypper(*packages, &block)
@@ -14,33 +14,33 @@ describe Sprinkle::Package::PackageRepository do
14
14
 
15
15
  it 'should allow adding a package' do
16
16
  @repository.add @test_package
17
- @repository.count.should == 1
17
+ @repository.count.should eq 1
18
18
  end
19
19
 
20
20
  it 'should allow clearing' do
21
21
  @repository.add @test_package
22
22
  @repository.clear
23
- @repository.count.should == 0
23
+ @repository.count.should eq 0
24
24
  end
25
25
 
26
26
  it "should find by provides" do
27
27
  @repository.add @mysql_package
28
- @repository.find_all("db").should == [ @mysql_package ]
28
+ @repository.find_all("db").should eq [ @mysql_package ]
29
29
  end
30
30
 
31
31
  it "should find by name" do
32
32
  @repository.add @test_package
33
- @repository.find_all("test").should == [ @test_package ]
33
+ @repository.find_all("test").should eq [ @test_package ]
34
34
  end
35
35
 
36
36
  it "should filter by version" do
37
37
  @repository.add @test_package
38
38
  @repository.add @test_v2_package
39
- @repository.find_all("test").size.should == 2
40
- @repository.first("test", :version => "2").should == @test_v2_package
39
+ @repository.find_all("test").size.should eq 2
40
+ @repository.first("test", :version => "2").should eq @test_v2_package
41
41
  end
42
42
 
43
43
  after do
44
44
  end
45
45
 
46
- end
46
+ end
@@ -8,7 +8,7 @@ describe Sprinkle::Package do
8
8
  @empty = Proc.new { }
9
9
  @opts = { }
10
10
  end
11
-
11
+
12
12
  after do
13
13
  Sprinkle::Package::PACKAGES.clear
14
14
  end
@@ -56,14 +56,14 @@ CODE
56
56
  pkg = package @name do
57
57
  description 'my package description'
58
58
  end
59
- pkg.description.should == 'my package description'
59
+ pkg.description.should eq 'my package description'
60
60
  end
61
61
 
62
62
  it 'should optionally accept a version' do
63
63
  pkg = package @name do
64
64
  version '2.0.2'
65
65
  end
66
- pkg.version.should == '2.0.2'
66
+ pkg.version.should eq '2.0.2'
67
67
  end
68
68
 
69
69
  it 'should optionally accept configuration defaults' do
@@ -87,14 +87,14 @@ CODE
87
87
  defaults :username => 'deploy'
88
88
  add_user opts[:username]
89
89
  end
90
- pkg.installers.first.class.should == Sprinkle::Installers::User
90
+ pkg.installers.first.class.should eq Sprinkle::Installers::User
91
91
  install_commands = pkg.installers.first.send :install_commands
92
- install_commands.should == 'adduser --gecos ,,, deploy'
92
+ install_commands.should == 'adduser --gecos ,,, deploy'
93
93
 
94
94
  instance = pkg.instance :username => 'deployer'
95
95
 
96
96
  install_commands = instance.installers.first.send :install_commands
97
- install_commands.should == 'adduser --gecos ,,, deployer'
97
+ install_commands.should == 'adduser --gecos ,,, deployer'
98
98
  end
99
99
 
100
100
  it 'should optionally accept an installer' do
@@ -108,31 +108,31 @@ CODE
108
108
  pkg = package @name do
109
109
  requires :webserver, :database
110
110
  end
111
- pkg.dependencies.should == [:webserver, :database]
111
+ pkg.dependencies.should eq [:webserver, :database]
112
112
  end
113
113
 
114
114
  it 'should optionally accept recommended dependencies' do
115
115
  pkg = package @name do
116
116
  recommends :webserver, :database
117
117
  end
118
- pkg.recommends.should == [:webserver, :database]
118
+ pkg.recommends.should eq [:webserver, :database]
119
119
  end
120
120
 
121
121
  it 'should optionally accept optional dependencies' do
122
122
  pkg = package @name do
123
123
  optional :webserver_configuration, :database_configuration
124
124
  end
125
- pkg.optional.should == [:webserver_configuration, :database_configuration]
125
+ pkg.optional.should eq [:webserver_configuration, :database_configuration]
126
126
  end
127
127
 
128
128
  it 'should optionally define a virtual package implementation' do
129
129
  pkg = package @name, :provides => :database do; end
130
- pkg.provides.should == :database
130
+ pkg.provides.should eq :database
131
131
  end
132
132
 
133
133
  it 'should be able to represent itself as a string' do
134
134
  pkg = package @name do; end
135
- pkg.to_s.should == @name.to_s
135
+ pkg.to_s.should eq @name.to_s
136
136
  end
137
137
 
138
138
  end
@@ -140,8 +140,8 @@ CODE
140
140
  describe 'helper method' do
141
141
 
142
142
  it 'should add new packages to the global package repository' do
143
- pkg = package @name do; end
144
- Sprinkle::Package::PACKAGES.count.should == 1
143
+ package @name do; end
144
+ Sprinkle::Package::PACKAGES.count.should eq 1
145
145
  end
146
146
 
147
147
  end
@@ -153,7 +153,7 @@ CODE
153
153
  apt %w( deb1 deb2 )
154
154
  end
155
155
  pkg.should respond_to(:apt)
156
- pkg.installers.first.class.should == Sprinkle::Installers::Apt
156
+ pkg.installers.first.class.should eq Sprinkle::Installers::Apt
157
157
  end
158
158
 
159
159
  it 'should optionally accept an rpm installer' do
@@ -161,7 +161,7 @@ CODE
161
161
  rpm %w( rpm1 rpm2 )
162
162
  end
163
163
  pkg.should respond_to(:rpm)
164
- pkg.installers.first.class.should == Sprinkle::Installers::Rpm
164
+ pkg.installers.first.class.should eq Sprinkle::Installers::Rpm
165
165
  end
166
166
 
167
167
  it 'should optionally accept a gem installer' do
@@ -169,7 +169,7 @@ CODE
169
169
  gem 'gem'
170
170
  end
171
171
  pkg.should respond_to(:gem)
172
- pkg.installers.first.class.should == Sprinkle::Installers::Gem
172
+ pkg.installers.first.class.should eq Sprinkle::Installers::Gem
173
173
  end
174
174
 
175
175
  it 'should optionally accept a noop installer' do
@@ -178,10 +178,10 @@ CODE
178
178
  end
179
179
  end
180
180
  pkg.should respond_to(:noop)
181
- pkg.installers.first.class.should == Sprinkle::Installers::Runner
181
+ pkg.installers.first.class.should eq Sprinkle::Installers::Runner
182
182
  @installer = pkg.installers.first
183
183
  @install_commands = @installer.send :install_commands
184
- @install_commands.should == ['echo noop']
184
+ @install_commands.should eq ['echo noop']
185
185
  end
186
186
 
187
187
  it 'should optionally accept an group installer' do
@@ -189,7 +189,7 @@ CODE
189
189
  add_group 'bob'
190
190
  end
191
191
  pkg.should respond_to(:add_group)
192
- pkg.installers.first.class.should == Sprinkle::Installers::Group
192
+ pkg.installers.first.class.should eq Sprinkle::Installers::Group
193
193
  end
194
194
 
195
195
  it 'should optionally accept a source installer' do
@@ -197,7 +197,7 @@ CODE
197
197
  source 'archive'
198
198
  end
199
199
  pkg.should respond_to(:source)
200
- pkg.installers.first.class.should == Sprinkle::Installers::Source
200
+ pkg.installers.first.class.should eq Sprinkle::Installers::Source
201
201
  end
202
202
 
203
203
  it 'should optionally accept an user installer' do
@@ -205,7 +205,7 @@ CODE
205
205
  add_user 'bob'
206
206
  end
207
207
  pkg.should respond_to(:add_user)
208
- pkg.installers.first.class.should == Sprinkle::Installers::User
208
+ pkg.installers.first.class.should eq Sprinkle::Installers::User
209
209
  end
210
210
 
211
211
  it 'should allow multiple installer steps to be defined and respect order' do
@@ -214,9 +214,9 @@ CODE
214
214
  gem 'momoney'
215
215
  end
216
216
 
217
- pkg.installers.length.should == 2
218
- pkg.installers[0].class.should == Sprinkle::Installers::Source
219
- pkg.installers[1].class.should == Sprinkle::Installers::Gem
217
+ pkg.installers.length.should eq 2
218
+ pkg.installers[0].class.should eq Sprinkle::Installers::Source
219
+ pkg.installers[1].class.should eq Sprinkle::Installers::Gem
220
220
  end
221
221
 
222
222
  it 'should optionally accept a runner installer' do
@@ -224,7 +224,7 @@ CODE
224
224
  runner 'obscure_installer_by_custom_cmd'
225
225
  end
226
226
  pkg.should respond_to(:runner)
227
- pkg.installers.first.class.should == Sprinkle::Installers::Runner
227
+ pkg.installers.first.class.should eq Sprinkle::Installers::Runner
228
228
  end
229
229
  end
230
230
 
@@ -235,7 +235,7 @@ CODE
235
235
  source 'archive' do; end
236
236
  end
237
237
  pkg.should respond_to(:source)
238
- pkg.installers.first.class.should == Sprinkle::Installers::Source
238
+ pkg.installers.first.class.should eq Sprinkle::Installers::Source
239
239
  end
240
240
 
241
241
  it 'should forward block to installer superclass' do
@@ -281,16 +281,16 @@ CODE
281
281
  describe 'when processing' do
282
282
 
283
283
  before do
284
- @deployment = mock(Sprinkle::Deployment)
284
+ @deployment = double(Sprinkle::Deployment)
285
285
  @roles = [ :app, :db ]
286
- @installer = mock(Sprinkle::Installers::Installer, :defaults => true, :process => true)
286
+ @installer = double(Sprinkle::Installers::Installer, :defaults => true, :process => true)
287
287
  @package = package @name do; end
288
288
  end
289
289
 
290
290
  describe 'with an installer' do
291
291
 
292
292
  before do
293
- @package.installers = [ @installer ]
293
+ @package.installers << @installer
294
294
  end
295
295
 
296
296
  it 'should configure itself against the deployment context' do
@@ -318,9 +318,9 @@ CODE
318
318
  describe 'with verifications' do
319
319
  before do
320
320
  @pkg = create_package_with_blank_verify(3)
321
- @pkg.installers = [ @installer ]
322
- @installer.stub!(:defaults)
323
- @installer.stub!(:process)
321
+ @pkg.installers.replace [ @installer ]
322
+ @installer.stub(:defaults)
323
+ @installer.stub(:process)
324
324
  end
325
325
 
326
326
  describe 'with forcing' do
@@ -366,7 +366,8 @@ CODE
366
366
  after do
367
367
  begin
368
368
  @pkg.process(@deployment, @roles)
369
- rescue Sprinkle::VerificationFailed => e; end
369
+ rescue Sprinkle::VerificationFailed
370
+ end
370
371
  end
371
372
  end
372
373
  end
@@ -375,35 +376,35 @@ CODE
375
376
 
376
377
  describe 'when processing verifications' do
377
378
  before do
378
- @deployment = mock(Sprinkle::Deployment)
379
+ @deployment = double(Sprinkle::Deployment)
379
380
  @roles = [ :app, :db ]
380
- @installer = mock(Sprinkle::Installers::Installer, :defaults => true, :process => true)
381
+ @installer = double(Sprinkle::Installers::Installer, :defaults => true, :process => true)
381
382
  @pkg = create_package_with_blank_verify(3)
382
- @pkg.installers = [ @installer ]
383
- @installer.stub!(:defaults)
384
- @installer.stub!(:process)
385
- @logger = mock(:debug => true, :debug? => true)
386
- @logger.stub!(:info)
383
+ @pkg.installers.replace [ @installer ]
384
+ @installer.stub(:defaults)
385
+ @installer.stub(:process)
386
+ @logger = double(:debug => true, :debug? => true)
387
+ @logger.stub(:info)
387
388
  end
388
389
 
389
390
  it 'should request _each_ verification to configure itself against the deployment context' do
390
391
  @pkg.verifications.each do |v|
391
392
  v.should_receive(:defaults).with(@deployment).once
392
- v.stub!(:process)
393
+ v.stub(:process)
393
394
  end
394
395
  end
395
396
 
396
397
  it 'should request _each_ verification to process' do
397
398
  @pkg.verifications.each do |v|
398
- v.stub!(:defaults)
399
+ v.stub(:defaults)
399
400
  v.should_receive(:process).with(@roles).once
400
401
  end
401
402
  end
402
403
 
403
404
  it 'should enter a log info event to notify user whats happening' do
404
405
  @pkg.verifications.each do |v|
405
- v.stub!(:defaults)
406
- v.stub!(:process)
406
+ v.stub(:defaults)
407
+ v.stub(:process)
407
408
  end
408
409
 
409
410
  @pkg.should_receive(:logger).once.and_return(@logger)
@@ -426,16 +427,15 @@ CODE
426
427
 
427
428
  it 'should be able to return a dependency hierarchy tree' do
428
429
  @ai, @bi, @ci, @di, @ei = @a, @b, @c, @d, @e
429
- @b.should_receive(:instance).any_number_of_times.and_return(@bi)
430
- @c.should_receive(:instance).any_number_of_times.and_return(@ci)
431
- @d.should_receive(:instance).any_number_of_times.and_return(@di)
432
- @e.should_receive(:instance).any_number_of_times.and_return(@ei)
433
-
434
- @a.tree.flatten.should == [ @d, @c, @b, @a ]
435
- @b.tree.flatten.should == [ @d, @c, @b ]
436
- @c.tree.flatten.should == [ @d, @c ]
437
- @d.tree.flatten.should == [ @d ]
438
- @e.tree.flatten.should == [ @e, @d ]
430
+ @b.should_receive(:instance).at_least(:once).and_return(@bi)
431
+ @c.should_receive(:instance).at_least(:once).and_return(@ci)
432
+ @d.should_receive(:instance).at_least(:once).and_return(@di)
433
+
434
+ @a.tree.flatten.should eq [ @d, @c, @b, @a ]
435
+ @b.tree.flatten.should eq [ @d, @c, @b ]
436
+ @c.tree.flatten.should eq [ @d, @c ]
437
+ @d.tree.flatten.should eq [ @d ]
438
+ @e.tree.flatten.should eq [ @e, @d ]
439
439
  end
440
440
 
441
441
  describe 'with missing recommendations' do
@@ -445,7 +445,7 @@ CODE
445
445
  end
446
446
 
447
447
  it 'should ignore missing recommendations' do
448
- @d.tree.flatten.should == [ @d ]
448
+ @d.tree.flatten.should eq [ @d ]
449
449
  end
450
450
 
451
451
  end
@@ -457,7 +457,7 @@ CODE
457
457
  end
458
458
 
459
459
  it 'should ignore missing recommendations' do
460
- @d.tree.flatten.should == [ @d ]
460
+ @d.tree.flatten.should eq [ @d ]
461
461
  end
462
462
 
463
463
  end
@@ -467,11 +467,11 @@ CODE
467
467
  @a.tree do
468
468
  @count += 1
469
469
  end
470
- @count.should == 3
470
+ @count.should eq 3
471
471
  end
472
472
 
473
473
  it 'should maintain a depth count of how deep the hierarchy is' do
474
- instance=mock
474
+ instance=double
475
475
  @b.should_receive(:instance).and_return(instance)
476
476
  instance.should_receive(:tree).with(2).and_return([@b])
477
477
  @a.tree do; end