cookstyle 5.22.6 → 5.23.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dad51325bcc35540eeba663b24105674daa20a35d198427a9331be5d02ca3e3b
4
- data.tar.gz: 83e2ab6a718092d10ec8ce423e14c995e5a64bc696cd99b3a447144cf2a10fdb
3
+ metadata.gz: b643382e9541a9d542bda66cde1aae0922ba3bb43318e21bc5f8abe3ebb37ce8
4
+ data.tar.gz: 4b7939a38dfa5d0065560a834c770bdde57ed58e5bfc86b4adeaaea622470ae7
5
5
  SHA512:
6
- metadata.gz: 56cba25a342b3f48f69160838cc03807640b11864ba43c5915c715520b1dd751f6ff263e89fd79d8414f3d9b206adbfa441833373dbcb5aed46e0beb32518b74
7
- data.tar.gz: 45af6528c08c91fc29f83542d407a081cd0d6897c9fb42b63a51ad512ca0895aa4e48019fc6bb41fe34a4436cbf58b4c64b1306ae41a6f9faec6c2ec855378fb
6
+ metadata.gz: 359c2d5b2b9112ce9d16e5ca8bbc76a4dd76db8076a9d5467fcdc9f69905997a67bbe8a6b869dc3099aab72ecdb6b2ca1cffacd1b2b378dbe9416430ecf10b8f
7
+ data.tar.gz: 971d8d6472462ce60641d5c097670d212e071dd99ef5e0e6f8082ce5ab4592860ef71423eb94a853a8a3181ebc27d6c8081bd97435ec6a19638482f51b52fcf7
@@ -129,7 +129,7 @@ ChefStyle/ChefWhaaat:
129
129
 
130
130
  ChefStyle/UnnecessaryOSCheck:
131
131
  Description: Use the platform_family?() helpers instead of node['os] == 'foo' for platform_families that match 1:1 with OS values. These helpers are easier to read and can accept multiple platform arguments, which greatly simplifies complex platform logic.
132
- Enabled: false
132
+ Enabled: true
133
133
  VersionAdded: '5.21.0'
134
134
 
135
135
  ###############################
@@ -1553,8 +1553,6 @@ Style/PercentQLiterals:
1553
1553
  Enabled: true
1554
1554
  Style/PerlBackrefs:
1555
1555
  Enabled: true
1556
- Naming/PredicateName:
1557
- Enabled: true
1558
1556
  Style/Proc:
1559
1557
  Enabled: true
1560
1558
  Style/RaiseArgs:
@@ -1,4 +1,4 @@
1
1
  module Cookstyle
2
- VERSION = "5.22.6".freeze # rubocop: disable Style/StringLiterals
2
+ VERSION = "5.23.0".freeze # rubocop: disable Style/StringLiterals
3
3
  RUBOCOP_VERSION = '0.75.1'.freeze
4
4
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2019, Chef Software Inc.
2
+ # Copyright:: Copyright 2019-2020, Chef Software Inc.
3
3
  # Author:: Tim Smith (<tsmith@chef.io>)
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -34,6 +34,7 @@ module RuboCop
34
34
  # end
35
35
  #
36
36
  class DnfPackageAllowDowngrades < Cop
37
+ include RangeHelp
37
38
  include RuboCop::Chef::CookbookHelpers
38
39
 
39
40
  MSG = 'dnf_package does not support the allow_downgrades property'.freeze
@@ -43,6 +44,12 @@ module RuboCop
43
44
  add_offense(prop, location: :expression, message: MSG, severity: :refactor)
44
45
  end
45
46
  end
47
+
48
+ def autocorrect(node)
49
+ lambda do |corrector|
50
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
51
+ end
52
+ end
46
53
  end
47
54
  end
48
55
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2019, Chef Software Inc.
2
+ # Copyright:: Copyright 2019-2020, Chef Software Inc.
3
3
  # Author:: Tim Smith (<tsmith@chef.io>)
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,24 +18,22 @@ module RuboCop
18
18
  module Cop
19
19
  module Chef
20
20
  module ChefCorrectness
21
- # Libraries should be injected into the Chef::DSL::Recipe or Chef::DSL::Resource classes and not Recipe/Resource/Provider classes directly.
21
+ # Libraries should be injected into the Chef::DSL::Recipe class and not Chef::Recipe or Chef::Provider classes directly.
22
22
  #
23
23
  # @example
24
24
  #
25
25
  # # bad
26
26
  # ::Chef::Recipe.send(:include, Filebeat::Helpers)
27
27
  # ::Chef::Provider.send(:include, Filebeat::Helpers)
28
- # ::Chef::Resource.send(:include, Filebeat::Helpers)
29
28
  #
30
29
  # # good
31
30
  # ::Chef::DSL::Recipe.send(:include, Filebeat::Helpers) # covers previous Recipe & Provider classes
32
- # ::Chef::DSL::Resource.send(:include, Filebeat::Helpers)
33
31
  #
34
32
  class IncorrectLibraryInjection < Cop
35
- MSG = 'Libraries should be injected into the Chef::DSL::Recipe or Chef::DSL::Resource classes and not Recipe/Resource/Provider classes directly.'.freeze
33
+ MSG = 'Libraries should be injected into the Chef::DSL::Recipe class and not Chef::Recipe or Chef::Provider classes directly.'.freeze
36
34
 
37
35
  def_node_matcher :legacy_class_sends?, <<-PATTERN
38
- (send (const (const (cbase) :Chef) {:Recipe :Provider :Resource}) :send (sym :include) ... )
36
+ (send (const (const (cbase) :Chef) {:Recipe :Provider}) :send (sym :include) ... )
39
37
  PATTERN
40
38
 
41
39
  def on_send(node)
@@ -46,11 +44,7 @@ module RuboCop
46
44
 
47
45
  def autocorrect(node)
48
46
  lambda do |corrector|
49
- new_val = node.source
50
- new_val.gsub!(/Chef::(Provider|Recipe)/, 'Chef::DSL::Recipe')
51
- new_val.gsub!(/Chef::Resource/, 'Chef::DSL::Resource')
52
-
53
- corrector.replace(node.loc.expression, new_val)
47
+ corrector.replace(node.loc.expression, node.source.gsub(/Chef::(Provider|Recipe)/, 'Chef::DSL::Recipe'))
54
48
  end
55
49
  end
56
50
  end
@@ -26,6 +26,10 @@ module RuboCop
26
26
  # depends 'partial_search'
27
27
  #
28
28
  class CookbookDependsOnPartialSearch < Cop
29
+ extend TargetChefVersion
30
+
31
+ minimum_target_chef_version '13.0'
32
+
29
33
  MSG = "Don't depend on the deprecated partial_search cookbook made obsolete by Chef 13".freeze
30
34
 
31
35
  def_node_matcher :depends_partial_search?, <<-PATTERN
@@ -42,6 +42,9 @@ module RuboCop
42
42
  #
43
43
  class DeprecatedYumRepositoryProperties < Cop
44
44
  include RuboCop::Chef::CookbookHelpers
45
+ extend TargetChefVersion
46
+
47
+ minimum_target_chef_version '12.14'
45
48
 
46
49
  MSG = 'With the release of Chef Infra Client 12.14 and the yum cookbook 3.0 several properties in the yum_repository resource were renamed. url -> baseurl, keyurl -> gpgkey, and mirrorexpire -> mirror_expire.'.freeze
47
50
 
@@ -34,6 +34,9 @@ module RuboCop
34
34
  #
35
35
  class LaunchdDeprecatedHashProperty < Cop
36
36
  include RuboCop::Chef::CookbookHelpers
37
+ extend TargetChefVersion
38
+
39
+ minimum_target_chef_version '12.19'
37
40
 
38
41
  MSG = "The launchd resource's hash property was renamed to plist_hash in Chef Infra Client 13+ to avoid conflicts with Ruby's hash class.".freeze
39
42
 
@@ -34,6 +34,9 @@ module RuboCop
34
34
  #
35
35
  class VerifyPropertyUsesFileExpansion < Cop
36
36
  include RuboCop::Chef::CookbookHelpers
37
+ extend TargetChefVersion
38
+
39
+ minimum_target_chef_version '12.5'
37
40
 
38
41
  MSG = "Use the 'path' variable in the verify property and not the 'file' variable which was removed in Chef Infra Client 13.".freeze
39
42
 
@@ -41,6 +41,9 @@ module RuboCop
41
41
  #
42
42
  class WindowsTaskChangeAction < Cop
43
43
  include RuboCop::Chef::CookbookHelpers
44
+ extend TargetChefVersion
45
+
46
+ minimum_target_chef_version '13.0'
44
47
 
45
48
  MSG = 'The :change action in the windows_task resource was removed when windows_task was added to Chef Infra Client 13+. The default action of :create should can now be used to create an update tasks.'.freeze
46
49
 
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: 2019, Chef Software Inc.
2
+ # Copyright:: 2019-2020, Chef Software Inc.
3
3
  # Author:: Tim Smith (<tsmith@chef.io>)
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -42,17 +42,17 @@ module RuboCop
42
42
 
43
43
  MSG = 'The default action of a resource can be set with the "default_action" helper instead of using the initialize method.'.freeze
44
44
 
45
- def_node_matcher :action_in_initializer?, <<-PATTERN
46
- (def :initialize (args ...) <(begin ... $(ivasgn {:@action :@default_action} $(...)))> )
45
+ def_node_matcher :action_variable_assignment?, <<-PATTERN
46
+ (ivasgn {:@action :@default_action} $(...))
47
47
  PATTERN
48
48
 
49
49
  def_node_search :intialize_method, '(def :initialize ... )'
50
50
 
51
51
  def_node_search :default_action_method?, '(send nil? :default_action ... )'
52
52
 
53
- def on_def(node)
54
- action_in_initializer?(node) do |action, _val|
55
- add_offense(action, location: :expression, message: MSG, severity: :refactor)
53
+ def on_ivasgn(node)
54
+ action_variable_assignment?(node) do
55
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if intialize_method(node.parent.parent)
56
56
  end
57
57
  end
58
58
 
@@ -18,7 +18,7 @@ module RuboCop
18
18
  module Cop
19
19
  module Chef
20
20
  module ChefModernize
21
- # Use the windows_feature resource built into Chef Infra Client 15+ instead of the powershell_script resource
21
+ # Use the windows_feature resource built into Chef Infra Client 14+ instead of the powershell_script resource
22
22
  # to run Install-WindowsFeature or Add-WindowsFeature
23
23
  #
24
24
  # @example
@@ -38,9 +38,9 @@ module RuboCop
38
38
  include RuboCop::Chef::CookbookHelpers
39
39
  extend TargetChefVersion
40
40
 
41
- minimum_target_chef_version '13.0'
41
+ minimum_target_chef_version '14.0'
42
42
 
43
- MSG = 'Use the windows_feature resource built into Chef Infra Client 13+ instead of using Install-WindowsFeature or Add-WindowsFeature in a powershell_script resource'.freeze
43
+ MSG = 'Use the windows_feature resource built into Chef Infra Client 14+ instead of using Install-WindowsFeature or Add-WindowsFeature in a powershell_script resource'.freeze
44
44
 
45
45
  def on_block(node)
46
46
  match_property_in_resource?(:powershell_script, 'code', node) do |code_property|
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: 2019, Chef Software, Inc.
2
+ # Copyright:: 2019-2020, Chef Software, Inc.
3
3
  # Author:: Tim Smith (<tsmith@chef.io>)
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,19 +18,20 @@ module RuboCop
18
18
  module Cop
19
19
  module Chef
20
20
  module ChefModernize
21
- # It is not longer necessary respond_to?(:foo) in metadata. This was used to support new metadata
22
- # methods in Chef 11 and early versions of Chef 12.
21
+ # In Chef Infra Client 12+ is is no longer necessary to gate the use of the provides methods in resources with `if respond_to?(:provides)` or `if defined? provides`.
23
22
  #
24
23
  # @example
25
24
  #
26
25
  # # bad
27
26
  # provides :foo if respond_to?(:provides)
28
27
  #
28
+ # provides :foo if defined? provides
29
+ #
29
30
  # # good
30
31
  # provides :foo
31
32
  #
32
33
  class RespondToProvides < Cop
33
- MSG = 'respond_to?(:provides) in resources is no longer necessary in Chef Infra Client 12+'.freeze
34
+ MSG = 'Using `respond_to?(:provides)` or `if defined? provides` in resources is no longer necessary in Chef Infra Client 12+.'.freeze
34
35
 
35
36
  def on_if(node)
36
37
  if_respond_to_provides?(node) do
@@ -39,7 +40,16 @@ module RuboCop
39
40
  end
40
41
 
41
42
  def_node_matcher :if_respond_to_provides?, <<~PATTERN
42
- (if (send nil? :respond_to? ( :sym :provides ) ) ... )
43
+ (if
44
+ {
45
+ (send nil? :respond_to?
46
+ (sym :provides))
47
+
48
+ (:defined?
49
+ (send nil? :provides))
50
+ }
51
+ (send nil? :provides
52
+ (sym _)) ... )
43
53
  PATTERN
44
54
 
45
55
  def autocorrect(node)
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: 2019, Chef Software Inc.
2
+ # Copyright:: 2019-2020, Chef Software Inc.
3
3
  # Author:: Tim Smith (<tsmith@chef.io>)
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -35,8 +35,15 @@ module RuboCop
35
35
 
36
36
  MSG = 'whyrun_supported? no longer needs to be set to true as it is the default in Chef Infra Client 13+'.freeze
37
37
 
38
+ # match on both whyrun_supported? and the typo form why_run_supported?
39
+ def_node_matcher :whyrun_true?, <<-PATTERN
40
+ (def {:whyrun_supported? :why_run_supported?}
41
+ (args)
42
+ (true))
43
+ PATTERN
44
+
38
45
  def on_def(node)
39
- if node.method_name == :whyrun_supported? && node.body == s(:true) # rubocop: disable Lint/BooleanSymbol
46
+ whyrun_true?(node) do
40
47
  add_offense(node, location: :expression, message: MSG, severity: :refactor)
41
48
  end
42
49
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2019, Chef Software Inc.
2
+ # Copyright:: Copyright 2019-2020, Chef Software Inc.
3
3
  # Author:: Tim Smith (<tsmith@chef.io>)
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,13 +18,13 @@ module RuboCop
18
18
  module Cop
19
19
  module Chef
20
20
  module ChefRedundantCode
21
- # Every Chef Infra resources already include a sensitive property with a default value of false.
21
+ # Every Chef Infra resource already includes a sensitive property with a default value of false.
22
22
  #
23
23
  # # bad
24
24
  # property :sensitive, [true, false], default: false
25
25
  #
26
26
  class SensitivePropertyInResource < Cop
27
- MSG = 'Every Chef Infra resources already include a sensitive property with a default value of false.'.freeze
27
+ MSG = 'Every Chef Infra resource already includes a sensitive property with a default value of false.'.freeze
28
28
 
29
29
  def_node_matcher :sensitive_property?, <<-PATTERN
30
30
  (send nil? {:property :attribute} (sym :sensitive) ... (hash (pair (sym :default) (false))))
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2019, Chef Software Inc.
2
+ # Copyright:: Copyright 2019-2020, Chef Software Inc.
3
3
  # Author:: Tim Smith (<tsmith@chef.io>)
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -25,23 +25,42 @@ module RuboCop
25
25
  # # bad
26
26
  # property :name, String
27
27
  # property :name, String, name_property: true
28
- # attribute :name, String
29
- # attribute :name, String, name_attribute: true
28
+ # attribute :name, kind_of: String
29
+ # attribute :name, kind_of: String, name_attribute: true
30
30
  #
31
31
  class UnnecessaryNameProperty < Cop
32
32
  MSG = 'There is no need to define a property or attribute named :name in a resource as Chef Infra defines this on all resources by default.'.freeze
33
33
 
34
- # match on a property/attribute named :name that's a string. The property/attribute optionally
35
- # set name_property/name_attribute true, but nothing else is allowed. If you're doing that it's
36
- # no longer the default and your usage is fine.
34
+ def_node_matcher :name_attribute?, <<-PATTERN
35
+ (send nil? :attribute
36
+ (sym :name)
37
+ (hash
38
+ (pair
39
+ (sym :kind_of)
40
+ (const nil? :String))
41
+ (pair
42
+ (sym :name_attribute)
43
+ (true))?))
44
+ PATTERN
45
+
37
46
  def_node_matcher :name_property?, <<-PATTERN
38
- (send nil? {:property :attribute} (sym :name) (const nil? :String) (hash (pair (sym {:name_attribute :name_property}) (true)))?)
47
+ (send nil? :property
48
+ (sym :name)
49
+ (const nil? :String)
50
+ (hash
51
+ (pair
52
+ (sym :name_property)
53
+ (true)))?)
39
54
  PATTERN
40
55
 
41
56
  def on_send(node)
42
57
  name_property?(node) do
43
58
  add_offense(node, location: :expression, message: MSG, severity: :refactor)
44
59
  end
60
+
61
+ name_attribute?(node) do
62
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
63
+ end
45
64
  end
46
65
 
47
66
  def autocorrect(node)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cookstyle
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.22.6
4
+ version: 5.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thom May
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-02-28 00:00:00.000000000 Z
12
+ date: 2020-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubocop