chef 16.1.16 → 16.2.44

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -3
  3. data/README.md +3 -3
  4. data/Rakefile +2 -2
  5. data/chef.gemspec +3 -3
  6. data/lib/chef/application/apply.rb +1 -1
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/application/client.rb +1 -1
  9. data/lib/chef/application/windows_service_manager.rb +1 -1
  10. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  11. data/lib/chef/chef_fs/path_utils.rb +1 -1
  12. data/lib/chef/cookbook/chefignore.rb +1 -1
  13. data/lib/chef/cookbook/metadata.rb +1 -1
  14. data/lib/chef/cookbook_version.rb +2 -2
  15. data/lib/chef/data_bag.rb +4 -4
  16. data/lib/chef/deprecated.rb +4 -0
  17. data/lib/chef/file_access_control.rb +1 -1
  18. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  19. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  20. data/lib/chef/http.rb +17 -2
  21. data/lib/chef/http/http_request.rb +1 -1
  22. data/lib/chef/http/json_output.rb +1 -1
  23. data/lib/chef/http/ssl_policies.rb +18 -0
  24. data/lib/chef/knife.rb +1 -1
  25. data/lib/chef/knife/bootstrap.rb +3 -6
  26. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  27. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  28. data/lib/chef/knife/config_get.rb +1 -1
  29. data/lib/chef/knife/cookbook_delete.rb +1 -1
  30. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  31. data/lib/chef/knife/data_bag_create.rb +1 -1
  32. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  33. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  34. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  35. data/lib/chef/knife/ssh.rb +1 -1
  36. data/lib/chef/knife/supermarket_share.rb +1 -1
  37. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  38. data/lib/chef/log.rb +1 -1
  39. data/lib/chef/mixin/securable.rb +2 -2
  40. data/lib/chef/powershell.rb +1 -1
  41. data/lib/chef/provider/batch.rb +3 -10
  42. data/lib/chef/provider/cron.rb +2 -14
  43. data/lib/chef/provider/execute.rb +2 -1
  44. data/lib/chef/provider/group/dscl.rb +2 -2
  45. data/lib/chef/provider/group/windows.rb +1 -1
  46. data/lib/chef/provider/ifconfig.rb +7 -7
  47. data/lib/chef/provider/mount/aix.rb +1 -1
  48. data/lib/chef/provider/mount/windows.rb +2 -2
  49. data/lib/chef/provider/noop.rb +1 -1
  50. data/lib/chef/provider/package/openbsd.rb +1 -1
  51. data/lib/chef/provider/package/portage.rb +2 -2
  52. data/lib/chef/provider/package/powershell.rb +6 -2
  53. data/lib/chef/provider/package/rubygems.rb +2 -2
  54. data/lib/chef/provider/package/snap.rb +96 -27
  55. data/lib/chef/provider/package/windows/msi.rb +3 -3
  56. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  57. data/lib/chef/provider/powershell_script.rb +10 -14
  58. data/lib/chef/provider/remote_file/http.rb +4 -1
  59. data/lib/chef/provider/script.rb +4 -75
  60. data/lib/chef/provider/service/arch.rb +1 -1
  61. data/lib/chef/provider/service/debian.rb +2 -2
  62. data/lib/chef/provider/service/openbsd.rb +4 -4
  63. data/lib/chef/provider/service/redhat.rb +1 -1
  64. data/lib/chef/provider/service/windows.rb +1 -1
  65. data/lib/chef/provider/subversion.rb +2 -2
  66. data/lib/chef/provider/user/dscl.rb +4 -4
  67. data/lib/chef/provider/user/linux.rb +3 -3
  68. data/lib/chef/provider/user/mac.rb +5 -5
  69. data/lib/chef/provider/windows_script.rb +87 -25
  70. data/lib/chef/provider/zypper_repository.rb +30 -10
  71. data/lib/chef/resource.rb +22 -11
  72. data/lib/chef/resource/apt_package.rb +1 -1
  73. data/lib/chef/resource/archive_file.rb +28 -8
  74. data/lib/chef/resource/bash.rb +0 -1
  75. data/lib/chef/resource/batch.rb +4 -2
  76. data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
  77. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  78. data/lib/chef/resource/cron/cron.rb +46 -0
  79. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  80. data/lib/chef/resource/cron_access.rb +11 -3
  81. data/lib/chef/resource/csh.rb +0 -1
  82. data/lib/chef/resource/execute.rb +477 -7
  83. data/lib/chef/resource/file.rb +1 -1
  84. data/lib/chef/resource/freebsd_package.rb +1 -1
  85. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  86. data/lib/chef/resource/homebrew_package.rb +30 -1
  87. data/lib/chef/resource/homebrew_update.rb +107 -0
  88. data/lib/chef/resource/hostname.rb +6 -19
  89. data/lib/chef/resource/kernel_module.rb +14 -1
  90. data/lib/chef/resource/mount.rb +1 -1
  91. data/lib/chef/resource/perl.rb +0 -1
  92. data/lib/chef/resource/plist.rb +23 -4
  93. data/lib/chef/resource/powershell_script.rb +4 -2
  94. data/lib/chef/resource/python.rb +0 -1
  95. data/lib/chef/resource/remote_file.rb +26 -10
  96. data/lib/chef/resource/ruby.rb +0 -1
  97. data/lib/chef/resource/template.rb +1 -1
  98. data/lib/chef/resource/windows_ad_join.rb +30 -1
  99. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  100. data/lib/chef/resource/windows_auto_run.rb +11 -0
  101. data/lib/chef/resource/windows_certificate.rb +26 -0
  102. data/lib/chef/resource/windows_font.rb +3 -3
  103. data/lib/chef/resource/windows_package.rb +1 -1
  104. data/lib/chef/resource/windows_pagefile.rb +1 -1
  105. data/lib/chef/resource/windows_script.rb +2 -16
  106. data/lib/chef/resource/windows_security_policy.rb +17 -15
  107. data/lib/chef/resource/windows_shortcut.rb +1 -2
  108. data/lib/chef/resource/windows_task.rb +4 -4
  109. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  110. data/lib/chef/resource/yum_repository.rb +9 -9
  111. data/lib/chef/resources.rb +4 -2
  112. data/lib/chef/search/query.rb +1 -1
  113. data/lib/chef/util/diff.rb +2 -2
  114. data/lib/chef/util/windows/net_user.rb +1 -1
  115. data/lib/chef/util/windows/volume.rb +1 -1
  116. data/lib/chef/version.rb +1 -1
  117. data/lib/chef/win32/file.rb +1 -1
  118. data/lib/chef/win32/registry.rb +2 -2
  119. data/lib/chef/win32/security.rb +1 -1
  120. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  121. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  122. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  123. data/spec/functional/resource/cron_spec.rb +10 -0
  124. data/spec/functional/resource/remote_file_spec.rb +2 -2
  125. data/spec/functional/resource/windows_task_spec.rb +8 -8
  126. data/spec/support/platform_helpers.rb +1 -1
  127. data/spec/support/platforms/win32/spec_service.rb +1 -1
  128. data/spec/support/shared/functional/execute_resource.rb +1 -1
  129. data/spec/support/shared/unit/execute_resource.rb +1 -1
  130. data/spec/unit/application_spec.rb +7 -0
  131. data/spec/unit/data_bag_spec.rb +1 -1
  132. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  133. data/spec/unit/knife/bootstrap_spec.rb +2 -2
  134. data/spec/unit/mixin/user_context_spec.rb +1 -9
  135. data/spec/unit/property_spec.rb +1 -1
  136. data/spec/unit/provider/batch_spec.rb +130 -0
  137. data/spec/unit/provider/cron_spec.rb +9 -49
  138. data/spec/unit/provider/package/powershell_spec.rb +95 -86
  139. data/spec/unit/provider/package/snap_spec.rb +1 -1
  140. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  141. data/spec/unit/provider/script_spec.rb +20 -110
  142. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  143. data/spec/unit/resource/archive_file_spec.rb +11 -2
  144. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  145. data/spec/unit/resource/cron_spec.rb +2 -2
  146. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  147. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  148. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  149. data/spec/unit/resource/timezone_spec.rb +1 -1
  150. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  151. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  152. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  153. data/spec/unit/resource/windows_task_spec.rb +1 -1
  154. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  155. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  156. data/spec/unit/resource_spec.rb +67 -1
  157. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  158. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  159. metadata +22 -22
  160. data/lib/chef/resource/cron.rb +0 -157
@@ -34,7 +34,6 @@ class Chef
34
34
  description 'Make a shortcut to C:\\original_dir'
35
35
  end
36
36
  ```
37
-
38
37
  DOC
39
38
 
40
39
  property :shortcut_name, String,
@@ -57,7 +56,7 @@ class Chef
57
56
  description: "Icon to use for the shortcut. Accepts the format of `path, index`, where index is the icon file to use. See Microsoft's [documentation](https://msdn.microsoft.com/en-us/library/3s9bx7at.aspx) for details"
58
57
 
59
58
  load_current_value do |desired|
60
- require "win32ole" if RUBY_PLATFORM =~ /mswin|mingw32|windows/
59
+ require "win32ole" if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
61
60
 
62
61
  link = WIN32OLE.new("WScript.Shell").CreateShortcut(desired.shortcut_name)
63
62
  name desired.shortcut_name
@@ -189,11 +189,11 @@ class Chef
189
189
  description: "The frequency with which to run the task."
190
190
 
191
191
  property :start_day, String,
192
- description: "Specifies the first date on which the task runs in MM/DD/YYYY format.",
192
+ description: "Specifies the first date on which the task runs in **MM/DD/YYYY** format.",
193
193
  default_description: "The current date."
194
194
 
195
195
  property :start_time, String,
196
- description: "Specifies the start time to run the task, in HH:mm format."
196
+ description: "Specifies the start time to run the task, in **HH:mm** format."
197
197
 
198
198
  property :day, [String, Integer],
199
199
  description: "The day(s) on which the task runs."
@@ -330,7 +330,7 @@ class Chef
330
330
 
331
331
  # make sure the start_day is in MM/DD/YYYY format: http://rubular.com/r/cgjHemtWl5
332
332
  if start_day
333
- raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless %r{^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$} =~ start_day
333
+ raise ArgumentError, "`start_day` property must be in the MM/DD/YYYY format." unless %r{^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$}.match?(start_day)
334
334
  end
335
335
  end
336
336
 
@@ -338,7 +338,7 @@ class Chef
338
338
  def validate_start_time(start_time, frequency)
339
339
  if start_time
340
340
  raise ArgumentError, "`start_time` property is not supported with `frequency :none`" if frequency == :none
341
- raise ArgumentError, "`start_time` property must be in the HH:mm format (e.g. 6:20pm -> 18:20)." unless /^[0-2][0-9]:[0-5][0-9]$/ =~ start_time
341
+ raise ArgumentError, "`start_time` property must be in the HH:mm format (e.g. 6:20pm -> 18:20)." unless /^[0-2][0-9]:[0-5][0-9]$/.match?(start_time)
342
342
  else
343
343
  raise ArgumentError, "`start_time` needs to be provided with `frequency :once`" if frequency == :once
344
344
  end
@@ -68,7 +68,7 @@ class Chef
68
68
  }
69
69
 
70
70
  provides :windows_user_privilege
71
- description "The windows_user_privilege resource allows to add and set principal (User/Group) to the specified privilege. \n Ref: https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/user-rights-assignment"
71
+ description "The windows_user_privilege resource allows to add and set principal (User/Group) to the specified privilege.\n Ref: https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/user-rights-assignment"
72
72
 
73
73
  introduced "16.0"
74
74
 
@@ -78,7 +78,7 @@ class Chef
78
78
  ```ruby
79
79
  windows_user_privilege 'Network Logon Rights' do
80
80
  privilege 'SeNetworkLogonRight'
81
- users ['BUILTIN\Administrators', 'NT AUTHORITY\Authenticated Users']
81
+ users ['BUILTIN\\Administrators', 'NT AUTHORITY\\Authenticated Users']
82
82
  action :set
83
83
  end
84
84
  ```
@@ -88,7 +88,7 @@ class Chef
88
88
  ```ruby
89
89
  windows_user_privilege 'Remote interactive logon' do
90
90
  privilege 'SeDenyRemoteInteractiveLogonRight'
91
- users ['Builtin\Guests', 'NT AUTHORITY\Local Account']
91
+ users ['Builtin\\Guests', 'NT AUTHORITY\\Local Account']
92
92
  action :add
93
93
  end
94
94
  ```
@@ -98,7 +98,7 @@ class Chef
98
98
  ```ruby
99
99
  windows_user_privilege 'Create Pagefile' do
100
100
  privilege 'SeCreatePagefilePrivilege'
101
- users ['BUILTIN\Guests', 'BUILTIN\Administrators']
101
+ users ['BUILTIN\\Guests', 'BUILTIN\\Administrators']
102
102
  action :set
103
103
  end
104
104
  ```
@@ -108,7 +108,7 @@ class Chef
108
108
  ```ruby
109
109
  windows_user_privilege 'Create Pagefile' do
110
110
  privilege 'SeCreatePagefilePrivilege'
111
- users ['BUILTIN\Guests']
111
+ users ['BUILTIN\\Guests']
112
112
  action :remove
113
113
  end
114
114
  ```
@@ -95,7 +95,7 @@ class Chef
95
95
  description: "URL pointing to the ASCII-armored GPG key file for the repository. This is used if Yum needs a public key to verify a package and the required key hasn't been imported into the RPM database. If this option is set, Yum will automatically import the key from the specified URL. Multiple URLs may be specified in the same manner as the baseurl option. If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed.\nMultiple URLs may be specified in the same manner as the baseurl option. If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed."
96
96
 
97
97
  property :http_caching, String, equal_to: %w{packages all none},
98
- description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values: all (all HTTP downloads should be cached), packages (only RPM package downloads should be cached, but not repository metadata downloads), or none (no HTTP downloads should be cached)"
98
+ description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values:\n - `all` means all HTTP downloads should be cached\n - `packages` means only RPM package downloads should be cached, but not repository metadata downloads\n - `none` means no HTTP downloads should be cached.\n\nThe default value of `all` is recommended unless you are experiencing caching related issues."
99
99
 
100
100
  property :include_config, String,
101
101
  description: "An external configuration file using the format `url://to/some/location`."
@@ -114,25 +114,25 @@ class Chef
114
114
  description: "Number of times any attempt to retrieve a file should retry before returning an error. Setting this to `0` makes Yum try forever."
115
115
 
116
116
  property :metadata_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/, /never/],
117
- description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word `never`, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
118
- validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
117
+ description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word `never`, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
118
+ validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
119
119
 
120
120
  property :metalink, String,
121
121
  description: "Specifies a URL to a metalink file for the repomd.xml, a list of mirrors for the entire repository are generated by converting the mirrors for the repomd.xml file to a baseurl."
122
122
 
123
123
  property :mirror_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/],
124
- description: "Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then Yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that Yum is not downloading the mirrorlists as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively.",
125
- validation_message: "The mirror_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
124
+ description: "Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then Yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that Yum is not downloading the mirrorlists as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively.",
125
+ validation_message: "The mirror_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
126
126
 
127
127
  property :mirrorlist_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/],
128
- description: "Specifies the time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than the value specified, then Yum will not download another copy of the mirrorlist. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively.",
129
- validation_message: "The mirrorlist_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
128
+ description: "Specifies the time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than the value specified, then Yum will not download another copy of the mirrorlist. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively.",
129
+ validation_message: "The mirrorlist_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
130
130
 
131
131
  property :mirrorlist, String,
132
132
  description: "URL to a file containing a list of baseurls. This can be used instead of or with the baseurl option. Substitution variables, described below, can be used with this option."
133
133
 
134
134
  property :mode, [String, Integer],
135
- description: "Permissions mode of .repo file on disk. This is useful for scenarios where secrets are in the repo file. If this value is set to '600', normal users will not be able to use Yum search, Yum info, etc.",
135
+ description: "Permissions mode of .repo file on disk. This is useful for scenarios where secrets are in the repo file. If this value is set to `600`, normal users will not be able to use Yum search, Yum info, etc.",
136
136
  default: "0644"
137
137
 
138
138
  property :options, Hash,
@@ -142,7 +142,7 @@ class Chef
142
142
  description: "Password to use with the username for basic authentication."
143
143
 
144
144
  property :priority, String, regex: /^(\d?[1-9]|[0-9][0-9])$/,
145
- description: "Assigns a priority to a repository where the priority value is between '1' and '99' inclusive. Priorities are used to enforce ordered protection of repositories. Packages from repositories with a lower priority (higher numerical value) will never be used to upgrade packages that were installed from a repository with a higher priority (lower numerical value). The repositories with the lowest numerical priority number have the highest priority.",
145
+ description: "Assigns a priority to a repository where the priority value is between `1` and `99` inclusive. Priorities are used to enforce ordered protection of repositories. Packages from repositories with a lower priority (higher numerical value) will never be used to upgrade packages that were installed from a repository with a higher priority (lower numerical value). The repositories with the lowest numerical priority number have the highest priority.",
146
146
  validation_message: "The priority property must be a numeric value from 1-99!"
147
147
 
148
148
  property :proxy_password, String,
@@ -38,9 +38,9 @@ require_relative "resource/chocolatey_config"
38
38
  require_relative "resource/chocolatey_feature"
39
39
  require_relative "resource/chocolatey_package"
40
40
  require_relative "resource/chocolatey_source"
41
- require_relative "resource/cron"
41
+ require_relative "resource/cron/cron"
42
42
  require_relative "resource/cron_access"
43
- require_relative "resource/cron_d"
43
+ require_relative "resource/cron/cron_d"
44
44
  require_relative "resource/csh"
45
45
  require_relative "resource/directory"
46
46
  require_relative "resource/dmg_package"
@@ -60,6 +60,7 @@ require_relative "resource/hostname"
60
60
  require_relative "resource/homebrew_cask"
61
61
  require_relative "resource/homebrew_package"
62
62
  require_relative "resource/homebrew_tap"
63
+ require_relative "resource/homebrew_update"
63
64
  require_relative "resource/ifconfig"
64
65
  require_relative "resource/kernel_module"
65
66
  require_relative "resource/ksh"
@@ -141,6 +142,7 @@ require_relative "resource/cab_package"
141
142
  require_relative "resource/powershell_package"
142
143
  require_relative "resource/msu_package"
143
144
  require_relative "resource/windows_ad_join"
145
+ require_relative "resource/windows_audit_policy"
144
146
  require_relative "resource/windows_auto_run"
145
147
  require_relative "resource/windows_certificate"
146
148
  require_relative "resource/windows_dfs_folder"
@@ -105,7 +105,7 @@ class Chef
105
105
  private
106
106
 
107
107
  def fuzzify_node_query(query)
108
- if query !~ /:/
108
+ if !/:/.match?(query)
109
109
  "tags:*#{query}* OR roles:*#{query}* OR fqdn:*#{query}* OR addresses:*#{query}* OR policy_name:*#{query}* OR policy_group:*#{query}*"
110
110
  else
111
111
  query
@@ -136,7 +136,7 @@ class Chef
136
136
  return "(file sizes exceed #{diff_filesize_threshold} bytes, diff output suppressed)"
137
137
  end
138
138
 
139
- # MacOSX(BSD?) diff will *sometimes* happily spit out nasty binary diffs
139
+ # macOS(BSD?) diff will *sometimes* happily spit out nasty binary diffs
140
140
  return "(current file is binary, diff output suppressed)" if is_binary?(old_file)
141
141
  return "(new content is binary, diff output suppressed)" if is_binary?(new_file)
142
142
 
@@ -171,7 +171,7 @@ class Chef
171
171
  begin
172
172
  return buff !~ /\A[\s[:print:]]*\z/m
173
173
  rescue ArgumentError => e
174
- return true if e.message =~ /invalid byte sequence/
174
+ return true if /invalid byte sequence/.match?(e.message)
175
175
 
176
176
  raise
177
177
  end
@@ -100,7 +100,7 @@ class Chef::Util::Windows::NetUser < Chef::Util::Windows
100
100
  rescue Chef::Exceptions::Win32APIError => e
101
101
  Chef::Log.trace(e)
102
102
  # we're only interested in the incorrect password failures
103
- if e.to_s =~ /System Error Code: 1326/
103
+ if /System Error Code: 1326/.match?(e.to_s)
104
104
  return false
105
105
  end
106
106
 
@@ -25,7 +25,7 @@ class Chef::Util::Windows::Volume < Chef::Util::Windows
25
25
  attr_reader :mount_point
26
26
 
27
27
  def initialize(name)
28
- name += "\\" unless name =~ /\\$/ # trailing slash required
28
+ name += "\\" unless /\\$/.match?(name) # trailing slash required
29
29
  @mount_point = name
30
30
  end
31
31
 
@@ -23,7 +23,7 @@ require_relative "version_string"
23
23
 
24
24
  class Chef
25
25
  CHEF_ROOT = File.expand_path("../..", __FILE__)
26
- VERSION = Chef::VersionString.new("16.1.16")
26
+ VERSION = Chef::VersionString.new("16.2.44")
27
27
  end
28
28
 
29
29
  #
@@ -123,7 +123,7 @@ class Chef
123
123
 
124
124
  # Return the link destination (strip off \??\ at the beginning, which is a local filesystem thing)
125
125
  link_dest = reparse_buffer.reparse_buffer.substitute_name
126
- if link_dest =~ /^\\\?\?\\/
126
+ if /^\\\?\?\\/.match?(link_dest)
127
127
  link_dest = link_dest[4..-1]
128
128
  end
129
129
  link_dest
@@ -20,7 +20,7 @@ require_relative "../reserved_names"
20
20
  require_relative "api"
21
21
  require_relative "../mixin/wide_string"
22
22
 
23
- if RUBY_PLATFORM =~ /mswin|mingw32|windows/
23
+ if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
24
24
  require_relative "../monkey_patches/win32/registry"
25
25
  require_relative "api/registry"
26
26
  require "win32/registry" unless defined?(Win32::Registry)
@@ -31,7 +31,7 @@ class Chef
31
31
  class Win32
32
32
  class Registry
33
33
 
34
- if RUBY_PLATFORM =~ /mswin|mingw32|windows/
34
+ if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
35
35
  include Chef::ReservedNames::Win32::API::Registry
36
36
  extend Chef::ReservedNames::Win32::API::Registry
37
37
  end
@@ -694,7 +694,7 @@ class Chef
694
694
  begin
695
695
  process_token = open_current_process_token(TOKEN_READ)
696
696
  rescue Exception => run_error
697
- return false if run_error.message =~ /Access is denied/
697
+ return false if /Access is denied/.match?(run_error.message)
698
698
 
699
699
  Chef::ReservedNames::Win32::Error.raise!
700
700
  end
@@ -4,7 +4,7 @@ def without_deprecation_warnings(&block)
4
4
  old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
5
5
  Chef::Config[:treat_deprecation_warnings_as_errors] = false
6
6
  begin
7
- block.call
7
+ yield
8
8
  ensure
9
9
  Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
10
10
  end
@@ -2,7 +2,7 @@ def without_deprecation_warnings(&block)
2
2
  old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
3
3
  Chef::Config[:treat_deprecation_warnings_as_errors] = false
4
4
  begin
5
- block.call
5
+ yield
6
6
  ensure
7
7
  Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
8
8
  end
@@ -7,7 +7,7 @@ def without_deprecation_warnings(&block)
7
7
  old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
8
8
  Chef::Config[:treat_deprecation_warnings_as_errors] = false
9
9
  begin
10
- block.call
10
+ yield
11
11
  ensure
12
12
  Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
13
13
  end
@@ -80,6 +80,16 @@ describe Chef::Resource::Cron, :requires_root, :unix_only do
80
80
  5.times { new_resource.run_action(:create) }
81
81
  cron_should_exists(new_resource.name, new_resource.command)
82
82
  end
83
+
84
+ # Test cron for day of week
85
+ weekdays = { Mon: 1, tuesday: 2, '3': 3, 'thursday': 4, 'Fri': 5, 6 => 6 }
86
+ weekdays.each do |key, value|
87
+ it "should create crontab entry and set #{value} for #{key} as weekday" do
88
+ new_resource.weekday key
89
+ expect { new_resource.run_action(:create) }.not_to raise_error
90
+ cron_should_exists(new_resource.name, new_resource.command)
91
+ end
92
+ end
83
93
  end
84
94
 
85
95
  describe "delete action" do
@@ -134,7 +134,7 @@ describe Chef::Resource::RemoteFile do
134
134
  let(:smb_file_local_file_name) { "smb_file.txt" }
135
135
  let(:smb_file_local_path) { File.join( smb_share_root_directory, smb_file_local_file_name ) }
136
136
  let(:smb_share_name) { "chef_smb_test" }
137
- let(:smb_remote_path) { File.join("//#{ENV["COMPUTERNAME"]}", smb_share_name, smb_file_local_file_name).gsub(%r{/}, "\\") }
137
+ let(:smb_remote_path) { File.join("//#{ENV["COMPUTERNAME"]}", smb_share_name, smb_file_local_file_name).tr("/", "\\") }
138
138
  let(:smb_file_content) { "hellofun" }
139
139
  let(:local_destination_path) { File.join(Dir.tmpdir, make_tmpname("chef_remote_file")) }
140
140
  let(:windows_current_user) { ENV["USERNAME"] }
@@ -155,7 +155,7 @@ describe Chef::Resource::RemoteFile do
155
155
  before do
156
156
  shell_out("net.exe share #{smb_share_name} /delete")
157
157
  File.write(smb_file_local_path, smb_file_content )
158
- shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.gsub(%r{/}, '\\')}\" /grant:\"authenticated users\",read")
158
+ shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.tr("/", '\\')}\" /grant:\"authenticated users\",read")
159
159
  end
160
160
 
161
161
  after do
@@ -513,13 +513,13 @@ describe Chef::Resource::WindowsTask, :windows_only do
513
513
  it "not raises any Argument error if frequency_modifier set as 'first, second, third' and day is provided" do
514
514
  subject.frequency_modifier "first, second, third"
515
515
  subject.day "Mon, Fri"
516
- expect { subject.after_created }.not_to raise_error(ArgumentError)
516
+ expect { subject.after_created }.not_to raise_error
517
517
  end
518
518
 
519
519
  it "not raises any Argument error if frequency_modifier 2 " do
520
520
  subject.frequency_modifier 2
521
521
  subject.day "Mon, Sun"
522
- expect { subject.after_created }.not_to raise_error(ArgumentError)
522
+ expect { subject.after_created }.not_to raise_error
523
523
  end
524
524
 
525
525
  it "raises argument error if frequency_modifier > 12" do
@@ -535,7 +535,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
535
535
  it "creates scheduled task to run task monthly on Monday and Friday of first, second and third week of month" do
536
536
  subject.frequency_modifier "first, second, third"
537
537
  subject.day "Mon, Fri"
538
- expect { subject.after_created }.not_to raise_error(ArgumentError)
538
+ expect { subject.after_created }.not_to raise_error
539
539
  call_for_create_action
540
540
  current_resource = call_for_load_current_resource
541
541
  expect(current_resource.exists).to eq(true)
@@ -558,7 +558,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
558
558
  it "creates scheduled task to run task monthly on every 6 months when frequency_modifier is 6 and to run on 1st and 2nd day of month" do
559
559
  subject.frequency_modifier 6
560
560
  subject.day "1, 2"
561
- expect { subject.after_created }.not_to raise_error(ArgumentError)
561
+ expect { subject.after_created }.not_to raise_error
562
562
  call_for_create_action
563
563
  current_resource = call_for_load_current_resource
564
564
  expect(current_resource.exists).to eq(true)
@@ -590,7 +590,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
590
590
 
591
591
  it "creates scheduled task to run monthly to run last day of the month" do
592
592
  subject.day "last"
593
- expect { subject.after_created }.not_to raise_error(ArgumentError)
593
+ expect { subject.after_created }.not_to raise_error
594
594
  call_for_create_action
595
595
  current_resource = call_for_load_current_resource
596
596
  expect(current_resource.exists).to eq(true)
@@ -611,7 +611,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
611
611
 
612
612
  it "day property set as 'lastday' creates scheduled task to run monthly to run last day of the month" do
613
613
  subject.day "lastday"
614
- expect { subject.after_created }.not_to raise_error(ArgumentError)
614
+ expect { subject.after_created }.not_to raise_error
615
615
  call_for_create_action
616
616
  current_resource = call_for_load_current_resource
617
617
  expect(current_resource.exists).to eq(true)
@@ -635,7 +635,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
635
635
  it "creates scheduled task to run monthly on last week of the month" do
636
636
  subject.frequency_modifier "last"
637
637
  subject.day "Mon, Fri"
638
- expect { subject.after_created }.not_to raise_error(ArgumentError)
638
+ expect { subject.after_created }.not_to raise_error
639
639
  call_for_create_action
640
640
  current_resource = call_for_load_current_resource
641
641
  expect(current_resource.exists).to eq(true)
@@ -659,7 +659,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
659
659
  context "when wild card (*) set as months" do
660
660
  it "creates the scheduled task to run on 1st day of the all months" do
661
661
  subject.months "*"
662
- expect { subject.after_created }.not_to raise_error(ArgumentError)
662
+ expect { subject.after_created }.not_to raise_error
663
663
  call_for_create_action
664
664
  current_resource = call_for_load_current_resource
665
665
  expect(current_resource.exists).to eq(true)
@@ -108,7 +108,7 @@ def mac_osx?
108
108
  if File.exists? "/usr/bin/sw_vers"
109
109
  result = ShellHelpers.shell_out("/usr/bin/sw_vers")
110
110
  result.stdout.each_line do |line|
111
- if line =~ /^ProductName:\sMac OS X.*$/
111
+ if /^ProductName:\sMac OS X.*$/.match?(line)
112
112
  return true
113
113
  end
114
114
  end
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- if RUBY_PLATFORM =~ /mswin|mingw|windows/
19
+ if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
20
20
  require "win32/daemon"
21
21
 
22
22
  class SpecService < ::Win32::Daemon
@@ -58,7 +58,7 @@ shared_context "a command that can be executed as an alternate user" do
58
58
  include Chef::Mixin::ShellOut
59
59
 
60
60
  before do
61
- shell_out!("icacls \"#{script_output_dir.gsub(%r{/}, '\\')}\" /grant \"authenticated users:(F)\"")
61
+ shell_out!("icacls \"#{script_output_dir.tr("/", '\\')}\" /grant \"authenticated users:(F)\"")
62
62
  end
63
63
 
64
64
  after do
@@ -75,7 +75,7 @@ shared_examples_for "an execute resource" do
75
75
  end
76
76
 
77
77
  it "the old path property (that never worked) is not supported in chef >= 13" do
78
- expect { @resource.path [ "woot" ] }.to raise_error
78
+ expect(@resource).not_to respond_to(:path)
79
79
  end
80
80
 
81
81
  it "should accept an integer for the return code" do
@@ -94,6 +94,13 @@ describe Chef::Application do
94
94
  end
95
95
  end
96
96
 
97
+ describe "when enforce_license is set to false" do
98
+ it "should not check the license acceptance" do
99
+ expect(@app).to_not receive(:check_license_acceptance)
100
+ @app.run(enforce_license: false)
101
+ end
102
+ end
103
+
97
104
  it "should run the actual application" do
98
105
  expect(@app).to receive(:run_application).and_return(true)
99
106
  @app.run