summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md7
-rw-r--r--Gemfile.lock22
-rw-r--r--VERSION2
-rw-r--r--chef-bin/lib/chef-bin/version.rb2
-rw-r--r--chef-config/lib/chef-config/version.rb2
-rw-r--r--chef-utils/lib/chef-utils/version.rb2
-rw-r--r--lib/chef/cookbook/cookbook_version_loader.rb18
-rw-r--r--lib/chef/cookbook_loader.rb4
-rw-r--r--lib/chef/cookbook_uploader.rb2
-rw-r--r--lib/chef/knife/cookbook_upload.rb4
-rw-r--r--lib/chef/version.rb2
-rw-r--r--spec/integration/knife/chef_fs_data_store_spec.rb5
-rw-r--r--spec/integration/knife/deps_spec.rb11
-rw-r--r--spec/integration/knife/upload_spec.rb27
-rw-r--r--spec/unit/cookbook/cookbook_version_loader_spec.rb11
15 files changed, 87 insertions, 34 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5b4815484e..a1ce83fea9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,15 +1,16 @@
<!-- usage documentation: http://expeditor-docs.es.chef.io/configuration/changelog/ -->
-<!-- latest_release 16.0.5 -->
-## [v16.0.5](https://github.com/chef/chef/tree/v16.0.5) (2020-01-22)
+<!-- latest_release 16.0.6 -->
+## [v16.0.6](https://github.com/chef/chef/tree/v16.0.6) (2020-01-22)
#### Merged Pull Requests
-- move Chef::VersionString to Chef::Utils [#9234](https://github.com/chef/chef/pull/9234) ([lamont-granquist](https://github.com/lamont-granquist))
+- Raises error if there is empty cookbook directory at the time o… [#9011](https://github.com/chef/chef/pull/9011) ([Vasu1105](https://github.com/Vasu1105))
<!-- latest_release -->
<!-- release_rollup since=15.6.10 -->
### Changes not yet released to stable
#### Merged Pull Requests
+- Raises error if there is empty cookbook directory at the time o… [#9011](https://github.com/chef/chef/pull/9011) ([Vasu1105](https://github.com/Vasu1105)) <!-- 16.0.6 -->
- move Chef::VersionString to Chef::Utils [#9234](https://github.com/chef/chef/pull/9234) ([lamont-granquist](https://github.com/lamont-granquist)) <!-- 16.0.5 -->
- Add windows helpers for install type [#9235](https://github.com/chef/chef/pull/9235) ([tas50](https://github.com/tas50)) <!-- 16.0.4 -->
- WIP: Chef-16 resource cleanup + unified_mode [#9174](https://github.com/chef/chef/pull/9174) ([lamont-granquist](https://github.com/lamont-granquist)) <!-- 16.0.3 -->
diff --git a/Gemfile.lock b/Gemfile.lock
index 97ac6bee27..d334b0bfa7 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -27,12 +27,12 @@ GIT
PATH
remote: .
specs:
- chef (16.0.5)
+ chef (16.0.6)
addressable
bcrypt_pbkdf (~> 1.0)
bundler (>= 1.10)
- chef-config (= 16.0.5)
- chef-utils (= 16.0.5)
+ chef-config (= 16.0.6)
+ chef-utils (= 16.0.6)
chef-zero (>= 14.0.11)
diff-lcs (~> 1.2, >= 1.2.4)
ed25519 (~> 1.2)
@@ -59,12 +59,12 @@ PATH
train-winrm (>= 0.2.5)
tty-screen (~> 0.6)
uuidtools (~> 2.1.5)
- chef (16.0.5-universal-mingw32)
+ chef (16.0.6-universal-mingw32)
addressable
bcrypt_pbkdf (~> 1.0)
bundler (>= 1.10)
- chef-config (= 16.0.5)
- chef-utils (= 16.0.5)
+ chef-config (= 16.0.6)
+ chef-utils (= 16.0.6)
chef-zero (>= 14.0.11)
diff-lcs (~> 1.2, >= 1.2.4)
ed25519 (~> 1.2)
@@ -107,15 +107,15 @@ PATH
PATH
remote: chef-bin
specs:
- chef-bin (16.0.5)
- chef (= 16.0.5)
+ chef-bin (16.0.6)
+ chef (= 16.0.6)
PATH
remote: chef-config
specs:
- chef-config (16.0.5)
+ chef-config (16.0.6)
addressable
- chef-utils (= 16.0.5)
+ chef-utils (= 16.0.6)
fuzzyurl
mixlib-config (>= 2.2.12, < 4.0)
mixlib-shellout (>= 2.0, < 4.0)
@@ -124,7 +124,7 @@ PATH
PATH
remote: chef-utils
specs:
- chef-utils (16.0.5)
+ chef-utils (16.0.6)
GEM
remote: https://rubygems.org/
diff --git a/VERSION b/VERSION
index 89cf45573e..c299cb4a62 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-16.0.5 \ No newline at end of file
+16.0.6 \ No newline at end of file
diff --git a/chef-bin/lib/chef-bin/version.rb b/chef-bin/lib/chef-bin/version.rb
index cbedf08d23..5df8e84c31 100644
--- a/chef-bin/lib/chef-bin/version.rb
+++ b/chef-bin/lib/chef-bin/version.rb
@@ -21,7 +21,7 @@
module ChefBin
CHEFBIN_ROOT = File.expand_path("../..", __FILE__)
- VERSION = "16.0.5".freeze
+ VERSION = "16.0.6".freeze
end
#
diff --git a/chef-config/lib/chef-config/version.rb b/chef-config/lib/chef-config/version.rb
index 04d36ae8ec..1790b0f2b7 100644
--- a/chef-config/lib/chef-config/version.rb
+++ b/chef-config/lib/chef-config/version.rb
@@ -15,5 +15,5 @@
module ChefConfig
CHEFCONFIG_ROOT = File.expand_path("../..", __FILE__)
- VERSION = "16.0.5".freeze
+ VERSION = "16.0.6".freeze
end
diff --git a/chef-utils/lib/chef-utils/version.rb b/chef-utils/lib/chef-utils/version.rb
index fef178272c..433045b8c6 100644
--- a/chef-utils/lib/chef-utils/version.rb
+++ b/chef-utils/lib/chef-utils/version.rb
@@ -15,5 +15,5 @@
module ChefUtils
CHEFUTILS_ROOT = File.expand_path("../..", __FILE__)
- VERSION = "16.0.5".freeze
+ VERSION = "16.0.6".freeze
end
diff --git a/lib/chef/cookbook/cookbook_version_loader.rb b/lib/chef/cookbook/cookbook_version_loader.rb
index f9ec765e47..7e09fae60c 100644
--- a/lib/chef/cookbook/cookbook_version_loader.rb
+++ b/lib/chef/cookbook/cookbook_version_loader.rb
@@ -65,19 +65,24 @@ class Chef
# Load the cookbook. Raises an error if the cookbook_path given to the
# constructor doesn't point to a valid cookbook.
def load!
- file_paths_map = load
+ metadata # force lazy evaluation to occur
+
+ # re-raise any exception that occurred when reading the metadata
+ raise_metadata_error!
+
+ load_all_files
+
+ remove_ignored_files
if empty?
raise Exceptions::CookbookNotFoundInRepo, "The directory #{cookbook_path} does not contain a cookbook"
end
- file_paths_map
+ cookbook_settings
end
- # Load the cookbook. Does not raise an error if given a non-cookbook
- # directory as the cookbook_path. This behavior is provided for
- # compatibility, it is recommended to use #load! instead.
def load
+ Chef::Log.warn "load method is deprecated. Use load! instead"
metadata # force lazy evaluation to occur
# re-raise any exception that occurred when reading the metadata
@@ -88,8 +93,9 @@ class Chef
remove_ignored_files
if empty?
- Chef::Log.warn "Found a directory #{cookbook_name} in the cookbook path, but it contains no cookbook files. skipping."
+ raise Exceptions::CookbookNotFoundInRepo, "The directory #{cookbook_path} does not contain a cookbook"
end
+
cookbook_settings
end
diff --git a/lib/chef/cookbook_loader.rb b/lib/chef/cookbook_loader.rb
index bdb436e899..f02b07eaaf 100644
--- a/lib/chef/cookbook_loader.rb
+++ b/lib/chef/cookbook_loader.rb
@@ -95,11 +95,11 @@ class Chef
loader = cookbook_version_loaders[cookbook_name]
- loader.load
+ loader.load!
cookbook_version = loader.cookbook_version
cookbooks_by_name[cookbook_name] = cookbook_version
- metadata[cookbook_name] = cookbook_version.metadata
+ metadata[cookbook_name] = cookbook_version.metadata unless cookbook_version.nil?
cookbook_version
end
diff --git a/lib/chef/cookbook_uploader.rb b/lib/chef/cookbook_uploader.rb
index ffc4040194..b9d4bfe5d1 100644
--- a/lib/chef/cookbook_uploader.rb
+++ b/lib/chef/cookbook_uploader.rb
@@ -139,6 +139,8 @@ class Chef
def validate_cookbooks
cookbooks.each do |cb|
+ next if cb.nil?
+
syntax_checker = Chef::Cookbook::SyntaxCheck.new(cb.root_dir)
Chef::Log.info("Validating ruby files")
exit(1) unless syntax_checker.validate_ruby_files
diff --git a/lib/chef/knife/cookbook_upload.rb b/lib/chef/knife/cookbook_upload.rb
index c8c9067800..7bda2815e7 100644
--- a/lib/chef/knife/cookbook_upload.rb
+++ b/lib/chef/knife/cookbook_upload.rb
@@ -124,7 +124,6 @@ class Chef
cookbooks_for_upload << cookbook
version_constraints_to_update[cookbook_name] = cookbook.version
end
-
if config[:all]
if cookbooks_for_upload.any?
begin
@@ -168,7 +167,6 @@ class Chef
exit 1
end
end
-
unless version_constraints_to_update.empty?
update_version_constraints(version_constraints_to_update) if config[:environment]
end
@@ -193,7 +191,7 @@ class Chef
end
end
rescue Exceptions::CookbookNotFoundInRepo => e
- ui.error("Could not find cookbook #{cookbook_name} in your cookbook path, skipping it")
+ ui.error(e.message)
Log.debug(e)
end
end
diff --git a/lib/chef/version.rb b/lib/chef/version.rb
index 1ceeca4e2d..ac8332fd9d 100644
--- a/lib/chef/version.rb
+++ b/lib/chef/version.rb
@@ -23,7 +23,7 @@ require_relative "version_string"
class Chef
CHEF_ROOT = File.expand_path("../..", __FILE__)
- VERSION = Chef::VersionString.new("16.0.5")
+ VERSION = Chef::VersionString.new("16.0.6")
end
#
diff --git a/spec/integration/knife/chef_fs_data_store_spec.rb b/spec/integration/knife/chef_fs_data_store_spec.rb
index 95fee18257..a2d1a7ecec 100644
--- a/spec/integration/knife/chef_fs_data_store_spec.rb
+++ b/spec/integration/knife/chef_fs_data_store_spec.rb
@@ -54,6 +54,7 @@ describe "ChefFSDataStore tests", :workstation do
context "GET /TYPE" do
it "knife list -z -R returns everything" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("list -z -Rfp /").should_succeed <<~EOM
/acls/
/acls/clients/
@@ -118,6 +119,7 @@ describe "ChefFSDataStore tests", :workstation do
end
it "knife delete -z -r /cookbooks/x works" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(3).times
knife("delete -z -r /cookbooks/x").should_succeed "Deleted /cookbooks/x\n"
knife("list -z -Rfp /cookbooks").should_succeed ""
end
@@ -155,6 +157,7 @@ describe "ChefFSDataStore tests", :workstation do
end
it "knife show -z /cookbooks/x/metadata.rb works" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("show -z /cookbooks/x/metadata.rb").should_succeed "/cookbooks/x/metadata.rb:\n#{cookbook_x_100_metadata_rb}\n"
end
@@ -190,6 +193,7 @@ describe "ChefFSDataStore tests", :workstation do
end
it "knife cookbook upload works" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("cookbook upload -z --cookbook-path #{path_to("cookbooks_to_upload")} x").should_succeed stderr: <<~EOM
Uploading x [1.0.0]
Uploaded 1 cookbook.
@@ -442,6 +446,7 @@ describe "ChefFSDataStore tests", :workstation do
context "GET /TYPE" do
it "knife list -z -R returns everything" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("list -z -Rfp /").should_succeed <<~EOM
/clients/
/clients/x.json
diff --git a/spec/integration/knife/deps_spec.rb b/spec/integration/knife/deps_spec.rb
index 4dfccf38de..a6946790c7 100644
--- a/spec/integration/knife/deps_spec.rb
+++ b/spec/integration/knife/deps_spec.rb
@@ -41,6 +41,7 @@ describe "knife deps", :workstation do
file "cookbooks/soup/recipes/chicken.rb", ""
end
it "knife deps reports all dependencies" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("deps /roles/starring.json").should_succeed <<~EOM
/roles/minor.json
/cookbooks/quiche
@@ -60,6 +61,7 @@ describe "knife deps", :workstation do
file "cookbooks/soup/recipes/chicken.rb", ""
end
it "knife deps reports all dependencies" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("deps /roles/starring.json").should_succeed <<~EOM
/roles/minor.json
/cookbooks/quiche
@@ -94,6 +96,7 @@ describe "knife deps", :workstation do
file "nodes/mort.json", { "run_list" => %w{role[minor] recipe[quiche] recipe[soup::chicken]} }
end
it "knife deps reports just the node" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("deps /nodes/mort.json").should_succeed <<~EOM
/roles/minor.json
/cookbooks/quiche
@@ -108,6 +111,7 @@ describe "knife deps", :workstation do
file "cookbooks/quiche/recipes/default.rb", ""
end
it "knife deps reports just the cookbook" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("deps /cookbooks/quiche").should_succeed "/cookbooks/quiche\n"
end
end
@@ -119,6 +123,7 @@ depends "kettle"'
file "cookbooks/quiche/recipes/default.rb", ""
end
it "knife deps reports just the cookbook" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("deps /cookbooks/quiche").should_succeed "/cookbooks/kettle\n/cookbooks/quiche\n"
end
end
@@ -148,6 +153,7 @@ depends "kettle"'
end
it "knife deps reports all dependencies" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("deps /nodes/mort.json").should_succeed <<~EOM
/environments/desert.json
/roles/minor.json
@@ -158,6 +164,7 @@ depends "kettle"'
EOM
end
it "knife deps * reports all dependencies of all things" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("deps /nodes/*").should_succeed <<~EOM
/roles/minor.json
/nodes/bart.json
@@ -169,6 +176,7 @@ depends "kettle"'
EOM
end
it "knife deps a b reports all dependencies of a and b" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("deps /nodes/bart.json /nodes/mort.json").should_succeed <<~EOM
/roles/minor.json
/nodes/bart.json
@@ -180,6 +188,7 @@ depends "kettle"'
EOM
end
it "knife deps --tree /* shows dependencies in a tree" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).twice
knife("deps --tree /nodes/*").should_succeed <<~EOM
/nodes/bart.json
/roles/minor.json
@@ -214,11 +223,13 @@ depends "foo"'
end
it "knife deps prints each once" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(3).times
knife("deps /cookbooks/foo").should_succeed(
stdout: "/cookbooks/baz\n/cookbooks/bar\n/cookbooks/foo\n"
)
end
it "knife deps --tree prints each once" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(3).times
knife("deps --tree /cookbooks/foo").should_succeed(
stdout: "/cookbooks/foo\n /cookbooks/bar\n /cookbooks/baz\n /cookbooks/foo\n"
)
diff --git a/spec/integration/knife/upload_spec.rb b/spec/integration/knife/upload_spec.rb
index 77db50fc22..7d1ef68e45 100644
--- a/spec/integration/knife/upload_spec.rb
+++ b/spec/integration/knife/upload_spec.rb
@@ -197,6 +197,7 @@ describe "knife upload", :workstation do
end
it "knife upload adds the new files" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /").should_succeed <<~EOM
Created /clients/y.json
Updated /cookbooks/x
@@ -216,6 +217,7 @@ describe "knife upload", :workstation do
end
it "knife upload --no-diff adds the new files" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload --no-diff /").should_succeed <<~EOM
Created /clients/y.json
Updated /cookbooks/x
@@ -492,6 +494,7 @@ describe "knife upload", :workstation do
# technically we shouldn't have deleted missing files. But ... cookbooks
# are a special case.
it "knife upload of the cookbook itself succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /cookbooks/x").should_succeed <<~EOM
Updated /cookbooks/x
EOM
@@ -501,6 +504,7 @@ describe "knife upload", :workstation do
end
it "knife upload --purge of the cookbook itself succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /cookbooks/x").should_succeed <<~EOM
Updated /cookbooks/x
EOM
@@ -516,6 +520,7 @@ describe "knife upload", :workstation do
end
it "knife upload of the cookbook succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /cookbooks/x").should_succeed <<~EOM
Updated /cookbooks/x
EOM
@@ -533,6 +538,7 @@ describe "knife upload", :workstation do
end
it "knife upload of the cookbook succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /cookbooks/x").should_succeed <<~EOM
Updated /cookbooks/x
EOM
@@ -548,6 +554,7 @@ describe "knife upload", :workstation do
end
it "knife upload --freeze freezes the cookbook" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload --freeze /cookbooks/x").should_succeed <<~EOM
Updated /cookbooks/x
EOM
@@ -570,9 +577,11 @@ describe "knife upload", :workstation do
end
it "knife upload fails to upload the frozen cookbook" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /cookbooks/frozencook").should_fail "ERROR: /cookbooks failed to write: Cookbook frozencook is frozen\n"
end
it "knife upload --force uploads the frozen cookbook" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload --force /cookbooks/frozencook").should_succeed <<~EOM
Updated /cookbooks/frozencook
EOM
@@ -594,6 +603,7 @@ describe "knife upload", :workstation do
end
it "knife upload /cookbooks/x uploads the local version" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("diff --name-status /cookbooks").should_succeed <<~EOM
M\t/cookbooks/x/metadata.rb
D\t/cookbooks/x/onlyin1.0.1.rb
@@ -631,6 +641,7 @@ describe "knife upload", :workstation do
D\t/cookbooks/x/onlyin1.0.1.rb
A\t/cookbooks/x/onlyin1.0.0.rb
EOM
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload --purge /cookbooks/x").should_succeed <<~EOM
Updated /cookbooks/x
EOM
@@ -649,6 +660,7 @@ describe "knife upload", :workstation do
end
it "knife upload /cookbooks/x uploads the local version generates metadata.json and uploads it." do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload --purge /cookbooks/x").should_succeed <<~EOM
Updated /cookbooks/x
EOM
@@ -664,6 +676,7 @@ describe "knife upload", :workstation do
end
it "knife upload /cookbooks/x uploads the local version and generates metadata.json before upload and uploads it." do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("diff --name-status /cookbooks").should_succeed <<~EOM
M\t/cookbooks/x/metadata.rb
D\t/cookbooks/x/onlyin1.0.1.rb
@@ -686,6 +699,7 @@ describe "knife upload", :workstation do
end
it "knife upload /cookbooks/x uploads the new version" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload --purge /cookbooks/x").should_succeed <<~EOM
Updated /cookbooks/x
EOM
@@ -788,6 +802,7 @@ describe "knife upload", :workstation do
file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0", "\nchef_version '~> 999.0'")
end
it "knife upload succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /cookbooks/x").should_succeed <<~EOM
Created /cookbooks/x
EOM
@@ -938,6 +953,7 @@ describe "knife upload", :workstation do
end
it "knife upload adds the new files" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(3).times
knife("upload /").should_succeed <<~EOM
Created /clients/y.json
Updated /cookbooks/x-1.0.0
@@ -1144,6 +1160,7 @@ describe "knife upload", :workstation do
# technically we shouldn't have deleted missing files. But ... cookbooks
# are a special case.
it "knife upload of the cookbook itself succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
Updated /cookbooks/x-1.0.0
EOM
@@ -1151,6 +1168,7 @@ describe "knife upload", :workstation do
end
it "knife upload --purge of the cookbook itself succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
Updated /cookbooks/x-1.0.0
EOM
@@ -1164,6 +1182,7 @@ describe "knife upload", :workstation do
end
it "knife upload of the cookbook succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
Updated /cookbooks/x-1.0.0
EOM
@@ -1179,6 +1198,7 @@ describe "knife upload", :workstation do
end
it "knife upload of the cookbook succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
Updated /cookbooks/x-1.0.0
EOM
@@ -1200,6 +1220,7 @@ describe "knife upload", :workstation do
end
it "knife upload /cookbooks uploads the local version" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("diff --name-status /cookbooks").should_succeed <<~EOM
M\t/cookbooks/x-1.0.0/onlyin1.0.0.rb
D\t/cookbooks/x-1.0.1
@@ -1218,6 +1239,7 @@ describe "knife upload", :workstation do
cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
end
it "knife upload /cookbooks uploads the local version" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("upload --purge /cookbooks").should_succeed <<~EOM
Updated /cookbooks/x-1.0.0
Deleted extra entry /cookbooks/x-0.9.9 (purge is on)
@@ -1232,6 +1254,7 @@ describe "knife upload", :workstation do
end
it "knife upload /cookbooks/x uploads the local version" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("diff --name-status /cookbooks").should_succeed <<~EOM
D\t/cookbooks/x-1.0.1
A\t/cookbooks/x-1.0.0
@@ -1250,6 +1273,7 @@ describe "knife upload", :workstation do
end
it "knife upload /cookbooks/x uploads the new version" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("upload --purge /cookbooks").should_succeed <<~EOM
Created /cookbooks/x-1.0.0
Deleted extra entry /cookbooks/x-0.9.9 (purge is on)
@@ -1324,6 +1348,7 @@ describe "knife upload", :workstation do
file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0", "\nchef_version '~> 999.0'")
end
it "knife upload succeeds" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).once
knife("upload /cookbooks/x-1.0.0").should_succeed <<~EOM
Created /cookbooks/x-1.0.0
EOM
@@ -1387,6 +1412,7 @@ describe "knife upload", :workstation do
end
it "knife upload / uploads everything" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /").should_succeed <<~EOM
Updated /acls/groups/blah.json
Created /clients/x.json
@@ -1494,6 +1520,7 @@ describe "knife upload", :workstation do
end
it "knife upload updates everything" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/).at_least(2).times
knife("upload /").should_succeed <<~EOM
Updated /acls/groups/blah.json
Updated /clients/x.json
diff --git a/spec/unit/cookbook/cookbook_version_loader_spec.rb b/spec/unit/cookbook/cookbook_version_loader_spec.rb
index 2cd86877cb..4095a91c02 100644
--- a/spec/unit/cookbook/cookbook_version_loader_spec.rb
+++ b/spec/unit/cookbook/cookbook_version_loader_spec.rb
@@ -124,8 +124,9 @@ describe Chef::Cookbook::CookbookVersionLoader do
expect { cookbook_loader.load! }.to raise_error(Chef::Exceptions::CookbookNotFoundInRepo)
end
- it "skips the cookbook when called with #load" do
- expect { cookbook_loader.load }.to_not raise_error
+ it "gives deprecation warning called with #load and raise error for Cookbook not found" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/)
+ expect { cookbook_loader.load }.to raise_error(Chef::Exceptions::CookbookNotFoundInRepo)
end
end
@@ -148,7 +149,8 @@ describe Chef::Cookbook::CookbookVersionLoader do
expect { cookbook_loader.load! }.to raise_error("THIS METADATA HAS A BUG")
end
- it "raises an error when called with #load" do
+ it "gives deprecation warning to us load! when called with #load and raises error" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/)
expect { cookbook_loader.load }.to raise_error("THIS METADATA HAS A BUG")
end
@@ -180,7 +182,8 @@ describe Chef::Cookbook::CookbookVersionLoader do
expect { cookbook_loader.load! }.to raise_error(Chef::Exceptions::MetadataNotValid, error_message)
end
- it "raises an error when called with #load" do
+ it "gives deprecation warning to use load! method when called with #load and raises error for invalid metadata" do
+ expect(Chef::Log).to receive(:warn).with(/load method is deprecated. Use load! instead/)
expect { cookbook_loader.load }.to raise_error(Chef::Exceptions::MetadataNotValid, error_message)
end