diff options
author | danielsdeleo <dan@getchef.com> | 2015-02-06 09:43:09 -0800 |
---|---|---|
committer | danielsdeleo <dan@getchef.com> | 2015-02-11 10:52:49 -0800 |
commit | 6c9f246b04c23906dd5297d178a423c96bc7b369 (patch) | |
tree | b12595c7931c0c9a8d9962ec9e6469f7483998aa | |
parent | 677ca0d7e3366ea9b3b6a912c8c6c28d543e2046 (diff) | |
download | chef-6c9f246b04c23906dd5297d178a423c96bc7b369.tar.gz |
Temporarily implement deprecation warnings as errors
This is an intermediate step where we're cleaning up all internal code
to convert cookbook version objects to JSON in the new way.
-rw-r--r-- | lib/chef/chef_fs/chef_fs_data_store.rb | 2 | ||||
-rw-r--r-- | lib/chef/cookbook_uploader.rb | 7 | ||||
-rw-r--r-- | lib/chef/cookbook_version.rb | 28 | ||||
-rw-r--r-- | spec/unit/cookbook_loader_spec.rb | 14 | ||||
-rw-r--r-- | spec/unit/cookbook_uploader_spec.rb | 6 | ||||
-rw-r--r-- | spec/unit/cookbook_version_spec.rb | 8 |
6 files changed, 53 insertions, 12 deletions
diff --git a/lib/chef/chef_fs/chef_fs_data_store.rb b/lib/chef/chef_fs/chef_fs_data_store.rb index 9b4f7320b8..5f147720eb 100644 --- a/lib/chef/chef_fs/chef_fs_data_store.rb +++ b/lib/chef/chef_fs/chef_fs_data_store.rb @@ -147,7 +147,7 @@ class Chef # get /cookbooks/NAME/version result = nil begin - result = entry.chef_object.to_hash + result = Chef::CookbookManifest.new(entry.chef_object).to_hash rescue Chef::ChefFS::FileSystem::NotFoundError => e raise ChefZero::DataStore::DataNotFoundError.new(to_zero_path(e.entry), e) end diff --git a/lib/chef/cookbook_uploader.rb b/lib/chef/cookbook_uploader.rb index 2d8bf5bc7e..826b362a3d 100644 --- a/lib/chef/cookbook_uploader.rb +++ b/lib/chef/cookbook_uploader.rb @@ -92,9 +92,12 @@ class Chef # files are uploaded, so save the manifest cookbooks.each do |cb| - save_url = opts[:force] ? cb.force_save_url : cb.save_url + + manifest = Chef::CookbookManifest.new(cb) + + save_url = opts[:force] ? manifest.force_save_url : manifest.save_url begin - rest.put(save_url, cb) + rest.put(save_url, manifest) rescue Net::HTTPServerException => e case e.response.code when "409" diff --git a/lib/chef/cookbook_version.rb b/lib/chef/cookbook_version.rb index c26ab46565..4e3e8069a6 100644 --- a/lib/chef/cookbook_version.rb +++ b/lib/chef/cookbook_version.rb @@ -64,18 +64,46 @@ class Chef end def save_url + # TODO: double check this code suggestion + msg = <<-WARNING +Cookbooks now have multiple save URLs based on the capabilities of the Chef Server. +To get the default save URL, use code like `Chef::CookbookManifest.new(cookbook_version).save_url` +WARNING + raise msg + # TODO: change to warning cookbook_manifest.save_url end def force_save_url + # TODO: double check this code suggestion + msg = <<-WARNING +Cookbooks now have multiple save URLs based on the capabilities of the Chef Server. +To get the default save URL, use code like `Chef::CookbookManifest.new(cookbook_version).force_save_url` +WARNING + raise msg + # TODO: change to warning cookbook_manifest.force_save_url end def to_hash + # TODO: double check this code suggestion + msg = <<-WARNING +Cookbooks now have multiple JSON representations based on the capabilities of the Chef Server. +To get the Hash representation, use code like `Chef::CookbookManifest.new(cookbook_version).to_hash` +WARNING + raise msg + # TODO: change to warning cookbook_manifest.to_hash end def to_json(*a) + # TODO: double check this code suggestion + msg = <<-WARNING +Cookbooks now have multiple JSON representations based on the capabilities of the Chef Server. +To get the JSON representation, use code like `Chef::CookbookManifest.new(cookbook_version).to_json` +WARNING + raise msg + # TODO: change to warning cookbook_manifest.to_json end diff --git a/spec/unit/cookbook_loader_spec.rb b/spec/unit/cookbook_loader_spec.rb index 51532778e4..45a985bafd 100644 --- a/spec/unit/cookbook_loader_spec.rb +++ b/spec/unit/cookbook_loader_spec.rb @@ -190,6 +190,11 @@ describe Chef::CookbookLoader do end describe "loading only one cookbook" do + + let(:openldap_cookbook) { cookbook_loader["openldap"] } + + let(:cookbook_as_hash) { Chef::CookbookManifest.new(openldap_cookbook).to_hash } + before(:each) do cookbook_loader.load_cookbook("openldap") end @@ -205,12 +210,11 @@ describe Chef::CookbookLoader do it "should not duplicate keys when serialized to JSON" do # Chef JSON serialization will generate duplicate keys if given # a Hash containing matching string and symbol keys. See CHEF-4571. - aa = cookbook_loader["openldap"] - expect(aa.to_hash["metadata"].recipes.keys).not_to include(:openldap) - expect(aa.to_hash["metadata"].recipes.keys).to include("openldap") + expect(cookbook_as_hash["metadata"].recipes.keys).not_to include(:openldap) + expect(cookbook_as_hash["metadata"].recipes.keys).to include("openldap") expected_desc = "Main Open LDAP configuration" - expect(aa.to_hash["metadata"].recipes["openldap"]).to eq(expected_desc) - raw = Chef::JSONCompat.to_json(aa.to_hash["metadata"].recipes) + expect(cookbook_as_hash["metadata"].recipes["openldap"]).to eq(expected_desc) + raw = Chef::JSONCompat.to_json(cookbook_as_hash["metadata"].recipes) search_str = "\"openldap\":\"" key_idx = raw.index(search_str) expect(key_idx).to be > 0 diff --git a/spec/unit/cookbook_uploader_spec.rb b/spec/unit/cookbook_uploader_spec.rb index dc9ca5f1a6..deb0536487 100644 --- a/spec/unit/cookbook_uploader_spec.rb +++ b/spec/unit/cookbook_uploader_spec.rb @@ -94,6 +94,10 @@ describe Chef::CookbookUploader do end end + def expected_save_url(cookbook) + "cookbooks/#{cookbook.name}/#{cookbook.version}" + end + def expect_sandbox_commit expect(http_client).to receive(:put).with(sandbox_commit_uri, {:is_completed => true}) end @@ -102,7 +106,7 @@ describe Chef::CookbookUploader do cookbooks_to_upload.each do |cookbook| expect(http_client).to receive(:put). - with(cookbook.save_url, cookbook) + with(expected_save_url(cookbook), cookbook) end end diff --git a/spec/unit/cookbook_version_spec.rb b/spec/unit/cookbook_version_spec.rb index 6dd3429ffc..95f0d68efc 100644 --- a/spec/unit/cookbook_version_spec.rb +++ b/spec/unit/cookbook_version_spec.rb @@ -498,9 +498,11 @@ describe Chef::CookbookVersion do end end + pending "These should work when deprecation errors are changed back to warning" do - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do - let(:jsonable) { Chef::CookbookVersion.new("tatft", '/tmp/blah') } - end + include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + let(:jsonable) { Chef::CookbookVersion.new("tatft", '/tmp/blah') } + end + end end |