diff options
author | Lamont Granquist <lamont@chef.io> | 2020-01-30 17:18:05 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-30 17:18:05 -0800 |
commit | 7f6bff82061068677af265e8f929f944c0020273 (patch) | |
tree | fe1ab20dd487e5e89518dec0961c944fdf7623eb | |
parent | accc6160248f7adefcf646378e35bc2f4759ea73 (diff) | |
parent | 165641fef35a418832f4373503e51ce7a7ac7c3c (diff) | |
download | chef-7f6bff82061068677af265e8f929f944c0020273.tar.gz |
Add chef-sugar include_recipe? helper (#9306)
Add chef-sugar include_recipe? helper
-rw-r--r-- | chef-utils/README.md | 1 | ||||
-rw-r--r-- | chef-utils/lib/chef-utils/dsl/introspection.rb | 13 | ||||
-rw-r--r-- | chef-utils/spec/unit/dsl/introspection_spec.rb | 21 |
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 |