A linting tool that helps you to write better Chef Infra cookbooks and InSpec profiles by detecting and automatically correcting style, syntax, and logic mistakes in your code.
Apache License 2.0
109
stars
54
forks
source link
Chef/Correctness/LazyEvalNodeAttributeDefaults does not detect nested attributes #958
Cookstyle catches only default: node['hostname'] violation:
bundle exec cookstyle resources/test.rb
resources/test.rb:1:38: R: [Correctable] Chef/Correctness/LazyEvalNodeAttributeDefaults: When setting a node attribute as the default value for a custom resource property, wrap the node attribute in lazy {} so that its value is available when the resource executes. (https://docs.chef.io/workstation/cookstyle/chef_correctness_lazyevalnodeattributedefaults)
property :hostname, String, default: node['hostname']
^^^^^^^^^^^^^^^^
Version:
Environment:
Ruby 3.0.3 with Gemfile.lock
Scenario:
Trying to lint/find Chef resources that use node attributes for default property values without
lazy {}
, as described in https://docs.chef.io/custom_resource_glossary/#lazySteps to Reproduce:
Add following properties to Chef resource:
cookbook_name/resources/test.rb
Expected Result:
To have offenses shown for both properties.
Actual Result:
Cookstyle catches only
default: node['hostname']
violation: