summaryrefslogtreecommitdiff
path: root/spec/integration
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2017-03-20 12:38:22 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2017-03-20 12:38:22 -0700
commit62f18e4d6db732e3d86991f08815c4e091a9dd27 (patch)
tree29e102efa1ed05f9b9527f92ccc4620546180fe8 /spec/integration
parent02ec917f9356d999c44aceb7f1ff43957b0fe832 (diff)
downloadchef-62f18e4d6db732e3d86991f08815c4e091a9dd27.tar.gz
Revert "Chef-13: remove more deprecated provider_resolver code"
forgot to branch and need more coffee This reverts commit 02ec917f9356d999c44aceb7f1ff43957b0fe832.
Diffstat (limited to 'spec/integration')
-rw-r--r--spec/integration/recipes/recipe_dsl_spec.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/spec/integration/recipes/recipe_dsl_spec.rb b/spec/integration/recipes/recipe_dsl_spec.rb
index 84a4e455ea..27176f65d8 100644
--- a/spec/integration/recipes/recipe_dsl_spec.rb
+++ b/spec/integration/recipes/recipe_dsl_spec.rb
@@ -1190,6 +1190,17 @@ describe "Recipe DSL methods" do
end.to raise_error(Chef::Exceptions::NoSuchResourceType)
expect(resource_class.called_provides).to be_truthy
end
+
+ it "blarghle_blarghle_little_star 'foo' returns the resource and emits a warning" do
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
+ dsl_name = blarghle_blarghle_little_star
+ recipe = converge do
+ instance_eval("#{dsl_name} 'foo'")
+ end
+ expect(recipe.logged_warnings).to include "WARN: #{resource_class}.provides? returned true when asked if it provides DSL #{dsl_name}, but provides :#{dsl_name} was never called!"
+ expect(BaseThingy.created_resource).to eq resource_class
+ expect(resource_class.called_provides).to be_truthy
+ end
end
context "and a provider" do
@@ -1313,6 +1324,81 @@ describe "Recipe DSL methods" do
end
end
end
+
+ context "with provides? returning true" do
+ before do
+ temp_my_resource = my_resource
+ provider_class.define_singleton_method(:provides?) do |node, resource|
+ @called_provides = true
+ resource.declared_type == temp_my_resource
+ end
+ end
+
+ context "that provides :my_resource" do
+ before do
+ provider_class.provides my_resource
+ end
+
+ it "my_resource calls the provider (and calls provides?), but does not emit a warning" do
+ temp_my_resource = my_resource
+ recipe = converge do
+ instance_eval("#{temp_my_resource} 'foo'")
+ end
+ expect(recipe.logged_warnings).to eq ""
+ expect(BaseThingy.created_provider).to eq provider_class
+ expect(provider_class.called_provides).to be_truthy
+ end
+ end
+
+ context "that does not call provides :my_resource" do
+ it "my_resource calls the provider (and calls provides?), and emits a warning" do
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
+ temp_my_resource = my_resource
+ recipe = converge do
+ instance_eval("#{temp_my_resource} 'foo'")
+ end
+ expect(recipe.logged_warnings).to include("WARN: #{provider_class}.provides? returned true when asked if it provides DSL #{my_resource}, but provides :#{my_resource} was never called!")
+ expect(BaseThingy.created_provider).to eq provider_class
+ expect(provider_class.called_provides).to be_truthy
+ end
+ end
+ end
+
+ context "with provides? returning false to my_resource" do
+ before do
+ temp_my_resource = my_resource
+ provider_class.define_singleton_method(:provides?) do |node, resource|
+ @called_provides = true
+ false
+ end
+ end
+
+ context "that provides :my_resource" do
+ before do
+ provider_class.provides my_resource
+ end
+
+ it "my_resource fails to find a provider (and calls provides)" do
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
+ temp_my_resource = my_resource
+ expect_converge do
+ instance_eval("#{temp_my_resource} 'foo'")
+ end.to raise_error(Chef::Exceptions::ProviderNotFound)
+ expect(provider_class.called_provides).to be_truthy
+ end
+ end
+
+ context "that does not provide :my_resource" do
+ it "my_resource fails to find a provider (and calls provides)" do
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
+ temp_my_resource = my_resource
+ expect_converge do
+ instance_eval("#{temp_my_resource} 'foo'")
+ end.to raise_error(Chef::Exceptions::ProviderNotFound)
+ expect(provider_class.called_provides).to be_truthy
+ end
+ end
+ end
end
end
end