summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@chef.io>2020-01-30 17:18:05 -0800
committerGitHub <noreply@github.com>2020-01-30 17:18:05 -0800
commit7f6bff82061068677af265e8f929f944c0020273 (patch)
treefe1ab20dd487e5e89518dec0961c944fdf7623eb
parentaccc6160248f7adefcf646378e35bc2f4759ea73 (diff)
parent165641fef35a418832f4373503e51ce7a7ac7c3c (diff)
downloadchef-7f6bff82061068677af265e8f929f944c0020273.tar.gz
Add chef-sugar include_recipe? helper (#9306)
Add chef-sugar include_recipe? helper
-rw-r--r--chef-utils/README.md1
-rw-r--r--chef-utils/lib/chef-utils/dsl/introspection.rb13
-rw-r--r--chef-utils/spec/unit/dsl/introspection_spec.rb21
3 files changed, 33 insertions, 2 deletions
diff --git a/chef-utils/README.md b/chef-utils/README.md
index a5eafeae65..dbffe378a8 100644
--- a/chef-utils/README.md
+++ b/chef-utils/README.md
@@ -146,6 +146,7 @@ Architecture Helpers allow you to determine the processor architecture of your n
* `systemd?` - if the init system is systemd
* `kitchen?` - if ENV['TEST_KITCHEN'] is set
* `ci?` - if ENV['CI'] is set
+* `include_recipe?(recipe_name)` - if the `recipe_name` is in the run list, the expanded run list, or has been `include_recipe`'d.
### Service Helpers
diff --git a/chef-utils/lib/chef-utils/dsl/introspection.rb b/chef-utils/lib/chef-utils/dsl/introspection.rb
index 6fb06107d2..c5dcdc0c20 100644
--- a/chef-utils/lib/chef-utils/dsl/introspection.rb
+++ b/chef-utils/lib/chef-utils/dsl/introspection.rb
@@ -1,5 +1,5 @@
#
-# Copyright:: Copyright 2018-2019, Chef Software Inc.
+# Copyright:: Copyright 2018-2020, Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -97,6 +97,17 @@ module ChefUtils
end
end
+ # Determine if the current node includes the given recipe name.
+ #
+ # @param [String] recipe_name
+ #
+ # @return [Boolean]
+ #
+ def includes_recipe?(recipe_name, node = __getnode)
+ node.recipe?(recipe_name)
+ end
+ alias_method :include_recipe?, :includes_recipe?
+
extend self
end
end
diff --git a/chef-utils/spec/unit/dsl/introspection_spec.rb b/chef-utils/spec/unit/dsl/introspection_spec.rb
index d45a3c6000..8457f06630 100644
--- a/chef-utils/spec/unit/dsl/introspection_spec.rb
+++ b/chef-utils/spec/unit/dsl/introspection_spec.rb
@@ -1,5 +1,5 @@
#
-# Copyright:: Copyright 2018-2019, Chef Software Inc.
+# Copyright:: Copyright 2018-2020, Chef Software Inc.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -165,4 +165,23 @@ RSpec.describe ChefUtils::DSL::Introspection do
end
end
end
+
+ context "#include_recipe?" do
+ it "is true when the recipe has been seen by the node" do
+ expect(node).to receive(:recipe?).with("myrecipe").and_return(true)
+ expect(ChefUtils.include_recipe?("myrecipe", node)).to be true
+ end
+ it "is false when the recipe has not been seen by the node" do
+ expect(node).to receive(:recipe?).with("myrecipe").and_return(false)
+ expect(ChefUtils.include_recipe?("myrecipe", node)).to be false
+ end
+ it "the alias is true when the recipe has been seen by the node" do
+ expect(node).to receive(:recipe?).with("myrecipe").and_return(true)
+ expect(ChefUtils.includes_recipe?("myrecipe", node)).to be true
+ end
+ it "the alias is false when the recipe has not been seen by the node" do
+ expect(node).to receive(:recipe?).with("myrecipe").and_return(false)
+ expect(ChefUtils.includes_recipe?("myrecipe", node)).to be false
+ end
+ end
end