Skip to content

Chef/Correctness/LazyEvalNodeAttributeDefaults does not detect nested attributes  #958

Description

@vytstank

Version:

cookstyle (7.32.1)
rubocop (1.25.1)
rubocop-ast (1.24.1)

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/#lazy

Steps to Reproduce:

Add following properties to Chef resource:

cookbook_name/resources/test.rb

property :hostname, String, default: node['hostname']
property :release, String, default: node['kernel']['release']

Expected Result:

To have offenses shown for both properties.

Actual Result:

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']
                                     ^^^^^^^^^^^^^^^^

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Status: UntriagedAn issue that has yet to be triaged.Type: BugDoes not work as expected.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions