summaryrefslogtreecommitdiff
path: root/spec/unit/knife/cookbook_upload_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/knife/cookbook_upload_spec.rb')
-rw-r--r--spec/unit/knife/cookbook_upload_spec.rb77
1 files changed, 45 insertions, 32 deletions
diff --git a/spec/unit/knife/cookbook_upload_spec.rb b/spec/unit/knife/cookbook_upload_spec.rb
index 5c7a4c1125..4e5c5bb4f1 100644
--- a/spec/unit/knife/cookbook_upload_spec.rb
+++ b/spec/unit/knife/cookbook_upload_spec.rb
@@ -190,49 +190,62 @@ E
end
end
- describe 'when specifying a cookbook name with missing dependencies' do
+ describe 'config[:depends] is true' do
let(:cookbook_dependency) { Chef::CookbookVersion.new('dependency') }
before(:each) do
+ knife.config[:depends] = true
cookbook.metadata.depends("dependency")
- cookbook_loader.stub(:[]) do |ckbk|
- { "test_cookbook" => cookbook,
- "dependency" => cookbook_dependency}[ckbk]
- end
- knife.stub(:cookbook_names).and_return(["cookbook_dependency", "test_cookbook"])
- @stdout, @stderr, @stdin = StringIO.new, StringIO.new, StringIO.new
- knife.ui = Chef::Knife::UI.new(@stdout, @stderr, @stdin, {})
- end
-
- it 'should exit and not upload the cookbook' do
- cookbook_loader.should_receive(:[]).once.with('test_cookbook')
- cookbook_loader.should_not_receive(:load_cookbooks)
- cookbook_uploader.should_not_receive(:upload_cookbooks)
- expect {knife.run}.to raise_error(SystemExit)
+ # These are the cookbooks we are asking knife to upload now
+ # This stub returns a CookbookVersion object by name, e.g. cookbook_loader['test_cookbook']
+ cookbook_loader.stub(:[]) do |ckbk|
+ { "test_cookbook" => cookbook}[ckbk]
+ end
end
- it 'should output a message for a single missing dependency' do
- expect {knife.run}.to raise_error(SystemExit)
- @stderr.string.should include('Cookbook test_cookbook depends on cookbooks which are not currently')
- @stderr.string.should include('being uploaded and cannot be found on the server.')
- @stderr.string.should include("The missing cookbook(s) are: 'dependency' version '>= 0.0.0'")
+ it "does not add a cookbook to the upload_set if it is not in the repository" do
+ expect(knife.cookbooks_to_upload).not_to include("dependency")
end
- it 'should output a message for a multiple missing dependencies which are concatenated' do
- cookbook_dependency2 = Chef::CookbookVersion.new('dependency2')
- cookbook.metadata.depends("dependency2")
+ it "adds a cookbook to the upload_set if it is in the cookbook repository" do
cookbook_loader.stub(:[]) do |ckbk|
{ "test_cookbook" => cookbook,
- "dependency" => cookbook_dependency,
- "dependency2" => cookbook_dependency2}[ckbk]
+ "dependency" => cookbook_dependency }[ckbk]
+ end
+ expect(knife.cookbooks_to_upload).to include("dependency")
+ end
+
+ describe 'specifying a cookbook name with missing dependencies' do
+
+ before(:each) do
+ @stdout, @stderr, @stdin = StringIO.new, StringIO.new, StringIO.new
+ knife.ui = Chef::Knife::UI.new(@stdout, @stderr, @stdin, {})
+ end
+
+ it 'should exit and not upload the cookbook' do
+ cookbook_loader.should_receive(:[]).once.with('test_cookbook')
+ cookbook_loader.should_not_receive(:load_cookbooks)
+ cookbook_uploader.should_not_receive(:upload_cookbooks)
+ expect {knife.run}.to raise_error(SystemExit)
+ end
+
+ it 'should output a message for a single missing dependency' do
+ expect {knife.run}.to raise_error(SystemExit)
+ @stderr.string.should include('Cookbook test_cookbook depends on cookbooks which are not currently')
+ @stderr.string.should include('being uploaded and cannot be found on the server.')
+ @stderr.string.should include("The missing cookbook(s) are: 'dependency' version '>= 0.0.0'")
+ end
+
+ it 'should output a message for a multiple missing dependencies which are concatenated' do
+ cookbook_dependency2 = Chef::CookbookVersion.new('dependency2')
+ cookbook.metadata.depends("dependency2")
+ expect {knife.run}.to raise_error(SystemExit)
+ @stderr.string.should include('Cookbook test_cookbook depends on cookbooks which are not currently')
+ @stderr.string.should include('being uploaded and cannot be found on the server.')
+ @stderr.string.should include("The missing cookbook(s) are:")
+ @stderr.string.should include("'dependency' version '>= 0.0.0'")
+ @stderr.string.should include("'dependency2' version '>= 0.0.0'")
end
- knife.stub(:cookbook_names).and_return(["dependency", "dependency2", "test_cookbook"])
- expect {knife.run}.to raise_error(SystemExit)
- @stderr.string.should include('Cookbook test_cookbook depends on cookbooks which are not currently')
- @stderr.string.should include('being uploaded and cannot be found on the server.')
- @stderr.string.should include("The missing cookbook(s) are:")
- @stderr.string.should include("'dependency' version '>= 0.0.0'")
- @stderr.string.should include("'dependency2' version '>= 0.0.0'")
end
end