diff options
author | John Keiser <john@johnkeiser.com> | 2015-06-16 13:49:26 -0700 |
---|---|---|
committer | John Keiser <john@johnkeiser.com> | 2015-06-16 16:57:07 -0700 |
commit | 6fbe77bf0c3fa2f4683487fac87f79b1eb6c293e (patch) | |
tree | 670157649ee8529602ff7845c43d785647fca2d7 | |
parent | 7f81d08720d59df974ec4d5416fd24fafc2ad824 (diff) | |
download | chef-6fbe77bf0c3fa2f4683487fac87f79b1eb6c293e.tar.gz |
Only automatically set resources that do class X < Chef::Resource,jk/3524
not X = Class.new(Chef::Resource)
-rw-r--r-- | lib/chef/resource.rb | 10 | ||||
-rw-r--r-- | spec/support/shared/shared_examples.rb | 2 | ||||
-rw-r--r-- | spec/unit/api_client_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/cookbook_version_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/data_bag_item_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/data_bag_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/environment_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/exceptions_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/json_compat_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/node_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/osc_user_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/recipe_spec.rb | 4 | ||||
-rw-r--r-- | spec/unit/resource_collection_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/resource_spec.rb | 17 | ||||
-rw-r--r-- | spec/unit/role_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/run_list_spec.rb | 2 | ||||
-rw-r--r-- | spec/unit/user_spec.rb | 2 |
17 files changed, 38 insertions, 21 deletions
diff --git a/lib/chef/resource.rb b/lib/chef/resource.rb index e89dede609..a85d07df2d 100644 --- a/lib/chef/resource.rb +++ b/lib/chef/resource.rb @@ -924,11 +924,6 @@ class Chef else @resource_name = nil end - else - # set resource_name automatically if it's not set - if !instance_variable_defined?(:@resource_name) && self.name - resource_name convert_to_snake_case(self.name.split('::')[-1]) - end end @resource_name @@ -1111,7 +1106,10 @@ class Chef def self.inherited(child) super @sorted_descendants = nil - child.resource_name + # set resource_name automatically if it's not set + if child.name && !child.resource_name + child.resource_name(convert_to_snake_case(child.name.split('::')[-1])) + end end diff --git a/spec/support/shared/shared_examples.rb b/spec/support/shared/shared_examples.rb index b20c65f8b6..550fa2eb68 100644 --- a/spec/support/shared/shared_examples.rb +++ b/spec/support/shared/shared_examples.rb @@ -1,7 +1,7 @@ # For storing any examples shared between multiple tests # Any object which defines a .to_json should import this test -shared_examples "to_json equalivent to Chef::JSONCompat.to_json" do +shared_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { raise "You must define the subject when including this test" diff --git a/spec/unit/api_client_spec.rb b/spec/unit/api_client_spec.rb index ba0eca3284..bc4b38848b 100644 --- a/spec/unit/api_client_spec.rb +++ b/spec/unit/api_client_spec.rb @@ -144,7 +144,7 @@ describe Chef::ApiClient do expect(@json).not_to include("private_key") end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { @client } end end diff --git a/spec/unit/cookbook_version_spec.rb b/spec/unit/cookbook_version_spec.rb index 4990aef004..2bccddcaec 100644 --- a/spec/unit/cookbook_version_spec.rb +++ b/spec/unit/cookbook_version_spec.rb @@ -336,7 +336,7 @@ describe Chef::CookbookVersion do end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { Chef::CookbookVersion.new("tatft", '/tmp/blah') } end diff --git a/spec/unit/data_bag_item_spec.rb b/spec/unit/data_bag_item_spec.rb index 4348252388..497817ecf1 100644 --- a/spec/unit/data_bag_item_spec.rb +++ b/spec/unit/data_bag_item_spec.rb @@ -193,7 +193,7 @@ describe Chef::DataBagItem do expect(deserial["snooze"]).to eq({ "finally" => "world_will" }) end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { data_bag_item } end end diff --git a/spec/unit/data_bag_spec.rb b/spec/unit/data_bag_spec.rb index bd9a99a1de..13b835d120 100644 --- a/spec/unit/data_bag_spec.rb +++ b/spec/unit/data_bag_spec.rb @@ -73,7 +73,7 @@ describe Chef::DataBag do expect(@deserial.send(t.to_sym)).to eq(@data_bag.send(t.to_sym)) end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { @data_bag } end end diff --git a/spec/unit/environment_spec.rb b/spec/unit/environment_spec.rb index ee3b8b21e1..64617e0888 100644 --- a/spec/unit/environment_spec.rb +++ b/spec/unit/environment_spec.rb @@ -208,7 +208,7 @@ describe Chef::Environment do expect(@json).to match(/"chef_type":"environment"/) end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { @environment } end end diff --git a/spec/unit/exceptions_spec.rb b/spec/unit/exceptions_spec.rb index fd90aeab71..85c54aa693 100644 --- a/spec/unit/exceptions_spec.rb +++ b/spec/unit/exceptions_spec.rb @@ -76,7 +76,7 @@ describe Chef::Exceptions do end if exception.methods.include?(:to_json) - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { exception } end end diff --git a/spec/unit/json_compat_spec.rb b/spec/unit/json_compat_spec.rb index 7482ba8a28..aaf0c48806 100644 --- a/spec/unit/json_compat_spec.rb +++ b/spec/unit/json_compat_spec.rb @@ -67,7 +67,7 @@ describe Chef::JSONCompat do expect(Chef::JSONCompat.to_json_pretty(f)).to eql("{\n \"foo\": 1234,\n \"bar\": {\n \"baz\": 5678\n }\n}\n") end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { Foo.new } end end diff --git a/spec/unit/node_spec.rb b/spec/unit/node_spec.rb index 5939403ce6..032cb1accb 100644 --- a/spec/unit/node_spec.rb +++ b/spec/unit/node_spec.rb @@ -1106,7 +1106,7 @@ describe Chef::Node do expect(serialized_node.run_list).to eq(node.run_list) end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { node.from_file(File.expand_path("nodes/test.example.com.rb", CHEF_SPEC_DATA)) node diff --git a/spec/unit/osc_user_spec.rb b/spec/unit/osc_user_spec.rb index 678486a16d..16731b47bd 100644 --- a/spec/unit/osc_user_spec.rb +++ b/spec/unit/osc_user_spec.rb @@ -160,7 +160,7 @@ describe Chef::OscUser do expect(@json).not_to include("password") end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { @user } end end diff --git a/spec/unit/recipe_spec.rb b/spec/unit/recipe_spec.rb index ee98e63c1f..7579abf227 100644 --- a/spec/unit/recipe_spec.rb +++ b/spec/unit/recipe_spec.rb @@ -121,6 +121,7 @@ describe Chef::Recipe do it "locate resource for particular platform" do ShaunTheSheep = Class.new(Chef::Resource) + ShaunTheSheep.resource_name :shaun_the_sheep ShaunTheSheep.provides :laughter, :platform => ["television"] node.automatic[:platform] = "television" node.automatic[:platform_version] = "123" @@ -131,6 +132,7 @@ describe Chef::Recipe do it "locate a resource for all platforms" do YourMom = Class.new(Chef::Resource) + YourMom.resource_name :your_mom YourMom.provides :love_and_caring res = recipe.love_and_caring "mommy" expect(res.name).to eql("mommy") @@ -141,7 +143,9 @@ describe Chef::Recipe do before do node.automatic[:platform] = "nbc_sports" Sounders = Class.new(Chef::Resource) + Sounders.resource_name :sounders TottenhamHotspur = Class.new(Chef::Resource) + TottenhamHotspur.resource_name :tottenham_hotspur end after do diff --git a/spec/unit/resource_collection_spec.rb b/spec/unit/resource_collection_spec.rb index b43b012dfc..d52e7e2c26 100644 --- a/spec/unit/resource_collection_spec.rb +++ b/spec/unit/resource_collection_spec.rb @@ -252,7 +252,7 @@ describe Chef::ResourceCollection do expect(json).to match(/instance_vars/) end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { rc } end end diff --git a/spec/unit/resource_spec.rb b/spec/unit/resource_spec.rb index 8ba45d9350..87f7f8d929 100644 --- a/spec/unit/resource_spec.rb +++ b/spec/unit/resource_spec.rb @@ -344,6 +344,7 @@ describe Chef::Resource do expect(r.resource_name).to be_nil expect(r.declared_type).to eq :d end + it "and there are no provides lines, @resource_name is used" do c = Class.new(Chef::Resource) do def initialize(*args, &block) @@ -358,6 +359,20 @@ describe Chef::Resource do expect(r.resource_name).to eq :blah expect(r.declared_type).to eq :d end + + it "and the resource class gets a late-bound name, resource_name is nil" do + c = Class.new(Chef::Resource) do + def self.name + "ResourceSpecNameTest" + end + end + + r = c.new('hi') + r.declared_type = :d + expect(c.resource_name).to be_nil + expect(r.resource_name).to be_nil + expect(r.declared_type).to eq :d + end end it "resource_name without provides is honored" do @@ -416,7 +431,7 @@ describe Chef::Resource do expect(json).to match(/instance_vars/) end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { @resource } end end diff --git a/spec/unit/role_spec.rb b/spec/unit/role_spec.rb index f120ca6da6..ecc7945a08 100644 --- a/spec/unit/role_spec.rb +++ b/spec/unit/role_spec.rb @@ -217,7 +217,7 @@ describe Chef::Role do end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { @role } end end diff --git a/spec/unit/run_list_spec.rb b/spec/unit/run_list_spec.rb index bf996de8c1..e150579431 100644 --- a/spec/unit/run_list_spec.rb +++ b/spec/unit/run_list_spec.rb @@ -307,7 +307,7 @@ describe Chef::RunList do expect(Chef::JSONCompat.to_json(@run_list)).to eq(Chef::JSONCompat.to_json(["recipe[nagios::client]", "role[production]", "recipe[apache2]"])) end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { @run_list } end diff --git a/spec/unit/user_spec.rb b/spec/unit/user_spec.rb index 57822df7e3..5222c951b3 100644 --- a/spec/unit/user_spec.rb +++ b/spec/unit/user_spec.rb @@ -244,7 +244,7 @@ describe Chef::User do expect(@json).not_to include("password") end - include_examples "to_json equalivent to Chef::JSONCompat.to_json" do + include_examples "to_json equivalent to Chef::JSONCompat.to_json" do let(:jsonable) { @user } end end |