chef 14.15.6 → 18.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1900) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +50 -32
  3. data/README.md +18 -206
  4. data/Rakefile +57 -22
  5. data/chef-universal-mingw-ucrt.gemspec +23 -0
  6. data/chef.gemspec +54 -30
  7. data/lib/chef/action_collection.rb +255 -0
  8. data/lib/chef/api_client/registration.rb +14 -13
  9. data/lib/chef/api_client.rb +11 -11
  10. data/lib/chef/api_client_v1.rb +22 -13
  11. data/lib/chef/application/apply.rb +61 -39
  12. data/lib/chef/application/base.rb +480 -0
  13. data/lib/chef/application/client.rb +43 -424
  14. data/lib/chef/application/exit_code.rb +22 -34
  15. data/lib/chef/application/solo.rb +31 -275
  16. data/lib/chef/application.rb +100 -87
  17. data/lib/chef/applications.rb +3 -4
  18. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +13 -13
  19. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +12 -12
  20. data/lib/chef/chef_class.rb +12 -18
  21. data/lib/chef/chef_fs/chef_fs_data_store.rb +80 -72
  22. data/lib/chef/chef_fs/command_line.rb +20 -12
  23. data/lib/chef/chef_fs/config.rb +8 -7
  24. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +1 -1
  25. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +2 -2
  26. data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +2 -2
  27. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +2 -2
  28. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +3 -3
  29. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +5 -5
  30. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +1 -1
  31. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +2 -2
  32. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +2 -2
  33. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +2 -2
  34. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +3 -4
  35. data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +1 -1
  36. data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +1 -1
  37. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +3 -3
  38. data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +2 -2
  40. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  41. data/lib/chef/chef_fs/file_pattern.rb +21 -15
  42. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +3 -3
  43. data/lib/chef/chef_fs/file_system/base_fs_object.rb +17 -10
  44. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +4 -4
  45. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +13 -13
  46. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +8 -8
  47. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +26 -26
  48. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +2 -2
  49. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +7 -7
  50. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +16 -13
  51. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +6 -6
  52. data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +3 -3
  53. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +2 -2
  54. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +26 -13
  55. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +8 -7
  56. data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +2 -2
  57. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +3 -3
  58. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +8 -6
  59. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +5 -5
  60. data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +2 -2
  61. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +11 -11
  62. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +11 -11
  63. data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +2 -2
  64. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +6 -5
  65. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +8 -7
  66. data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +5 -5
  67. data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +2 -2
  68. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +6 -5
  69. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +12 -8
  70. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +3 -3
  71. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +7 -7
  72. data/lib/chef/chef_fs/file_system/exceptions.rb +1 -1
  73. data/lib/chef/chef_fs/file_system/memory/memory_dir.rb +3 -3
  74. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  75. data/lib/chef/chef_fs/file_system/memory/memory_root.rb +1 -1
  76. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +3 -3
  77. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +3 -3
  78. data/lib/chef/chef_fs/file_system/repository/acl.rb +4 -4
  79. data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +6 -6
  80. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +4 -4
  81. data/lib/chef/chef_fs/file_system/repository/base_file.rb +5 -3
  82. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +4 -4
  83. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +22 -12
  84. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +16 -13
  85. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +56 -54
  86. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +5 -4
  87. data/lib/chef/chef_fs/file_system/repository/client.rb +3 -3
  88. data/lib/chef/chef_fs/file_system/repository/client_key.rb +3 -3
  89. data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +4 -4
  90. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +4 -4
  91. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +4 -4
  92. data/lib/chef/chef_fs/file_system/repository/container.rb +3 -3
  93. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +4 -4
  94. data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +3 -3
  95. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +4 -4
  96. data/lib/chef/chef_fs/file_system/repository/data_bag.rb +3 -3
  97. data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +3 -3
  98. data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +3 -3
  99. data/lib/chef/chef_fs/file_system/repository/directory.rb +9 -5
  100. data/lib/chef/chef_fs/file_system/repository/environment.rb +3 -3
  101. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +4 -4
  102. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +11 -9
  103. data/lib/chef/chef_fs/file_system/repository/group.rb +3 -3
  104. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +4 -4
  105. data/lib/chef/chef_fs/file_system/repository/node.rb +3 -3
  106. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +6 -6
  107. data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +4 -4
  108. data/lib/chef/chef_fs/file_system/repository/policy.rb +3 -3
  109. data/lib/chef/chef_fs/file_system/repository/policy_group.rb +3 -3
  110. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +4 -4
  111. data/lib/chef/chef_fs/file_system/repository/role.rb +3 -3
  112. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +4 -4
  113. data/lib/chef/chef_fs/file_system/repository/user.rb +3 -3
  114. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +4 -4
  115. data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +3 -3
  116. data/lib/chef/chef_fs/file_system.rb +36 -22
  117. data/lib/chef/chef_fs/file_system_cache.rb +4 -3
  118. data/lib/chef/chef_fs/path_utils.rb +13 -10
  119. data/lib/chef/chef_fs.rb +2 -2
  120. data/lib/chef/client.rb +327 -273
  121. data/lib/chef/compliance/default_attributes.rb +110 -0
  122. data/lib/chef/compliance/fetcher/automate.rb +73 -0
  123. data/lib/chef/compliance/fetcher/chef_server.rb +134 -0
  124. data/lib/chef/compliance/input.rb +115 -0
  125. data/lib/chef/compliance/input_collection.rb +139 -0
  126. data/lib/chef/compliance/profile.rb +122 -0
  127. data/lib/chef/compliance/profile_collection.rb +108 -0
  128. data/lib/chef/compliance/reporter/automate.rb +211 -0
  129. data/lib/chef/compliance/reporter/chef_server_automate.rb +99 -0
  130. data/lib/chef/compliance/reporter/cli.rb +77 -0
  131. data/lib/chef/compliance/reporter/compliance_enforcer.rb +24 -0
  132. data/lib/chef/compliance/reporter/json_file.rb +26 -0
  133. data/lib/chef/compliance/runner.rb +409 -0
  134. data/lib/chef/compliance/waiver.rb +115 -0
  135. data/lib/chef/compliance/waiver_collection.rb +143 -0
  136. data/lib/chef/config.rb +7 -6
  137. data/lib/chef/config_fetcher.rb +4 -4
  138. data/lib/chef/constants.rb +1 -1
  139. data/lib/chef/cookbook/chefignore.rb +19 -15
  140. data/lib/chef/cookbook/cookbook_collection.rb +3 -4
  141. data/lib/chef/cookbook/cookbook_version_loader.rb +91 -71
  142. data/lib/chef/cookbook/file_system_file_vendor.rb +4 -4
  143. data/lib/chef/cookbook/file_vendor.rb +2 -2
  144. data/lib/chef/cookbook/gem_installer.rb +12 -9
  145. data/lib/chef/cookbook/manifest_v0.rb +4 -3
  146. data/lib/chef/cookbook/manifest_v2.rb +3 -3
  147. data/lib/chef/cookbook/metadata.rb +92 -118
  148. data/lib/chef/cookbook/remote_file_vendor.rb +6 -8
  149. data/lib/chef/cookbook/synchronizer.rb +31 -14
  150. data/lib/chef/cookbook/syntax_check.rb +20 -16
  151. data/lib/chef/cookbook_loader.rb +130 -115
  152. data/lib/chef/cookbook_manifest.rb +14 -11
  153. data/lib/chef/cookbook_uploader.rb +16 -15
  154. data/lib/chef/cookbook_version.rb +104 -32
  155. data/lib/chef/daemon.rb +4 -4
  156. data/lib/chef/data_bag.rb +19 -19
  157. data/lib/chef/data_bag_item.rb +31 -19
  158. data/lib/chef/data_collector/config_validation.rb +140 -0
  159. data/lib/chef/data_collector/error_handlers.rb +116 -0
  160. data/lib/chef/data_collector/message_helpers.rb +50 -0
  161. data/lib/chef/data_collector/run_end_message.rb +191 -0
  162. data/lib/chef/data_collector/run_start_message.rb +60 -0
  163. data/lib/chef/data_collector.rb +189 -464
  164. data/lib/chef/decorator/lazy.rb +2 -2
  165. data/lib/chef/decorator/lazy_array.rb +4 -4
  166. data/lib/chef/decorator.rb +5 -6
  167. data/lib/chef/delayed_evaluator.rb +5 -1
  168. data/lib/chef/deprecated.rb +48 -20
  169. data/lib/chef/deprecation/warnings.rb +4 -3
  170. data/lib/chef/digester.rb +8 -7
  171. data/lib/chef/dsl/chef_vault.rb +84 -0
  172. data/lib/chef/dsl/cheffish.rb +1 -1
  173. data/lib/chef/{knife/environment_edit.rb → dsl/compliance.rb} +13 -19
  174. data/lib/chef/dsl/data_query.rb +7 -7
  175. data/lib/chef/dsl/declare_resource.rb +25 -26
  176. data/lib/chef/dsl/include_attribute.rb +2 -2
  177. data/lib/chef/dsl/include_recipe.rb +2 -8
  178. data/lib/chef/dsl/platform_introspection.rb +26 -30
  179. data/lib/chef/dsl/powershell.rb +2 -2
  180. data/lib/chef/{knife/node_from_file.rb → dsl/reader_helpers.rb} +24 -24
  181. data/lib/chef/dsl/reboot_pending.rb +9 -10
  182. data/lib/chef/dsl/recipe.rb +16 -21
  183. data/lib/chef/dsl/registry_helper.rb +1 -1
  184. data/lib/chef/dsl/render_helpers.rb +44 -0
  185. data/lib/chef/dsl/resources.rb +5 -7
  186. data/lib/chef/dsl/rest_resource.rb +77 -0
  187. data/lib/chef/dsl/secret.rb +170 -0
  188. data/lib/chef/dsl/toml.rb +116 -0
  189. data/lib/chef/dsl/universal.rb +19 -16
  190. data/lib/chef/dsl.rb +7 -6
  191. data/lib/chef/encrypted_data_bag_item/assertions.rb +4 -4
  192. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +3 -2
  193. data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +1 -1
  194. data/lib/chef/encrypted_data_bag_item/decryptor.rb +52 -45
  195. data/lib/chef/encrypted_data_bag_item/encryptor.rb +11 -10
  196. data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +1 -1
  197. data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +1 -1
  198. data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +1 -1
  199. data/lib/chef/encrypted_data_bag_item.rb +13 -10
  200. data/lib/chef/environment.rb +19 -17
  201. data/lib/chef/event_dispatch/base.rb +145 -196
  202. data/lib/chef/event_dispatch/dispatcher.rb +50 -16
  203. data/lib/chef/event_dispatch/dsl.rb +3 -3
  204. data/lib/chef/event_loggers/base.rb +4 -3
  205. data/lib/chef/event_loggers/windows_eventlog.rb +8 -7
  206. data/lib/chef/exceptions.rb +65 -35
  207. data/lib/chef/file_access_control/unix.rb +9 -6
  208. data/lib/chef/file_access_control/windows.rb +32 -22
  209. data/lib/chef/file_access_control.rb +5 -5
  210. data/lib/chef/file_cache.rb +13 -12
  211. data/lib/chef/file_content_management/content_base.rb +1 -1
  212. data/lib/chef/file_content_management/deploy/cp.rb +1 -1
  213. data/lib/chef/file_content_management/deploy/mv_unix.rb +2 -2
  214. data/lib/chef/file_content_management/deploy/mv_windows.rb +4 -4
  215. data/lib/chef/file_content_management/deploy.rb +7 -7
  216. data/lib/chef/file_content_management/tempfile.rb +13 -13
  217. data/lib/chef/formatters/base.rb +11 -12
  218. data/lib/chef/formatters/doc.rb +91 -96
  219. data/lib/chef/formatters/error_description.rb +2 -2
  220. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +17 -15
  221. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +4 -4
  222. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +7 -6
  223. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +2 -2
  224. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +11 -10
  225. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +24 -23
  226. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +31 -30
  227. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +11 -10
  228. data/lib/chef/formatters/error_inspectors.rb +7 -7
  229. data/lib/chef/formatters/error_mapper.rb +3 -3
  230. data/lib/chef/formatters/indentable_output_stream.rb +11 -20
  231. data/lib/chef/formatters/minimal.rb +31 -48
  232. data/lib/chef/group.rb +75 -0
  233. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +5 -6
  234. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +32 -43
  235. data/lib/chef/guard_interpreter.rb +3 -3
  236. data/lib/chef/handler/error_report.rb +3 -3
  237. data/lib/chef/handler/json_file.rb +4 -4
  238. data/lib/chef/handler/slow_report.rb +66 -0
  239. data/lib/chef/handler.rb +52 -13
  240. data/lib/chef/http/api_versions.rb +4 -5
  241. data/lib/chef/http/auth_credentials.rb +8 -3
  242. data/lib/chef/http/authenticator.rb +176 -7
  243. data/lib/chef/http/basic_client.rb +23 -13
  244. data/lib/chef/http/cookie_jar.rb +2 -2
  245. data/lib/chef/http/cookie_manager.rb +2 -2
  246. data/lib/chef/http/decompressor.rb +5 -4
  247. data/lib/chef/http/http_request.rb +13 -9
  248. data/lib/chef/http/json_input.rb +2 -2
  249. data/lib/chef/http/json_output.rb +7 -6
  250. data/lib/chef/http/json_to_model_output.rb +3 -3
  251. data/lib/chef/http/remote_request_id.rb +3 -4
  252. data/lib/chef/http/simple.rb +6 -6
  253. data/lib/chef/http/simple_json.rb +6 -6
  254. data/lib/chef/http/socketless_chef_zero_client.rb +17 -12
  255. data/lib/chef/http/ssl_policies.rb +58 -18
  256. data/lib/chef/http/validate_content_length.rb +5 -5
  257. data/lib/chef/http.rb +72 -56
  258. data/lib/chef/json_compat.rb +8 -13
  259. data/lib/chef/key.rb +15 -13
  260. data/lib/chef/local_mode.rb +8 -10
  261. data/lib/chef/log/syslog.rb +6 -5
  262. data/lib/chef/log/winevt.rb +7 -7
  263. data/lib/chef/log.rb +12 -7
  264. data/lib/chef/mash.rb +21 -232
  265. data/lib/chef/mixin/api_version_request_handling.rb +8 -8
  266. data/lib/chef/mixin/checksum.rb +8 -3
  267. data/lib/chef/{knife/cookbook_create.rb → mixin/chef_utils_wiring.rb} +20 -9
  268. data/lib/chef/mixin/convert_to_class_name.rb +2 -57
  269. data/lib/chef/mixin/create_path.rb +11 -11
  270. data/lib/chef/mixin/deep_merge.rb +41 -24
  271. data/lib/chef/{resource/user/dscl_user.rb → mixin/default_paths.rb} +9 -8
  272. data/lib/chef/mixin/deprecation.rb +1 -1
  273. data/lib/chef/mixin/enforce_ownership_and_permissions.rb +2 -2
  274. data/lib/chef/mixin/file_class.rb +3 -3
  275. data/lib/chef/mixin/from_file.rb +3 -3
  276. data/lib/chef/mixin/get_source_from_package.rb +3 -2
  277. data/lib/chef/mixin/homebrew_user.rb +6 -5
  278. data/lib/chef/mixin/lazy_module_include.rb +1 -1
  279. data/lib/chef/mixin/notifying_block.rb +1 -1
  280. data/lib/chef/mixin/openssl_helper.rb +69 -23
  281. data/lib/chef/mixin/params_validate.rb +26 -18
  282. data/lib/chef/mixin/path_sanity.rb +5 -40
  283. data/lib/chef/mixin/powershell_exec.rb +17 -16
  284. data/lib/chef/mixin/powershell_out.rb +16 -9
  285. data/lib/chef/mixin/powershell_type_coercions.rb +3 -3
  286. data/lib/chef/mixin/properties.rb +75 -18
  287. data/lib/chef/mixin/provides.rb +1 -1
  288. data/lib/chef/mixin/proxified_socket.rb +1 -1
  289. data/lib/chef/mixin/securable.rb +12 -12
  290. data/lib/chef/mixin/shell_out.rb +5 -235
  291. data/lib/chef/mixin/subclass_directive.rb +1 -1
  292. data/lib/chef/mixin/template.rb +8 -6
  293. data/lib/chef/mixin/unformatter.rb +2 -2
  294. data/lib/chef/mixin/uris.rb +5 -3
  295. data/lib/chef/mixin/user_context.rb +4 -4
  296. data/lib/chef/mixin/versioned_api.rb +2 -3
  297. data/lib/chef/mixin/which.rb +13 -26
  298. data/lib/chef/mixin/why_run.rb +9 -3
  299. data/lib/chef/mixin/wide_string.rb +1 -1
  300. data/lib/chef/mixin/windows_architecture_helper.rb +12 -12
  301. data/lib/chef/mixin/windows_env_helper.rb +10 -10
  302. data/lib/chef/mixin/xml_escape.rb +8 -8
  303. data/lib/chef/mixins.rb +13 -12
  304. data/lib/chef/monkey_patches/webrick-utils.rb +16 -14
  305. data/lib/chef/monkey_patches/win32/registry.rb +4 -30
  306. data/lib/chef/monologger.rb +1 -1
  307. data/lib/chef/node/attribute.rb +178 -146
  308. data/lib/chef/node/attribute_collections.rb +25 -56
  309. data/lib/chef/node/common_api.rb +12 -4
  310. data/lib/chef/node/immutable_collections.rb +32 -7
  311. data/lib/chef/node/mixin/deep_merge_cache.rb +22 -18
  312. data/lib/chef/node/mixin/immutablize_array.rb +148 -143
  313. data/lib/chef/node/mixin/immutablize_hash.rb +137 -131
  314. data/lib/chef/node/mixin/mashy_array.rb +68 -0
  315. data/lib/chef/node/mixin/state_tracking.rb +1 -1
  316. data/lib/chef/node.rb +147 -61
  317. data/lib/chef/node_map.rb +66 -50
  318. data/lib/chef/null_logger.rb +9 -17
  319. data/lib/chef/org.rb +10 -9
  320. data/lib/chef/platform/priority_map.rb +6 -6
  321. data/lib/chef/platform/provider_handler_map.rb +3 -3
  322. data/lib/chef/platform/provider_mapping.rb +6 -6
  323. data/lib/chef/platform/provider_priority_map.rb +2 -2
  324. data/lib/chef/platform/query_helpers.rb +16 -39
  325. data/lib/chef/platform/rebooter.rb +7 -7
  326. data/lib/chef/platform/resource_handler_map.rb +3 -3
  327. data/lib/chef/platform/resource_priority_map.rb +2 -2
  328. data/lib/chef/platform/service_helpers.rb +27 -92
  329. data/lib/chef/platform.rb +3 -3
  330. data/lib/chef/policy_builder/dynamic.rb +11 -8
  331. data/lib/chef/policy_builder/expand_node_object.rb +45 -37
  332. data/lib/chef/policy_builder/policyfile.rb +112 -66
  333. data/lib/chef/policy_builder.rb +4 -4
  334. data/lib/chef/powershell.rb +34 -10
  335. data/lib/chef/property.rb +69 -23
  336. data/lib/chef/provider/batch.rb +5 -12
  337. data/lib/chef/provider/cookbook_file/content.rb +3 -3
  338. data/lib/chef/provider/cookbook_file.rb +3 -2
  339. data/lib/chef/provider/cron/aix.rb +11 -4
  340. data/lib/chef/provider/cron/solaris.rb +2 -2
  341. data/lib/chef/provider/cron/unix.rb +4 -5
  342. data/lib/chef/provider/cron.rb +75 -45
  343. data/lib/chef/provider/directory.rb +16 -16
  344. data/lib/chef/provider/dsc_resource.rb +19 -32
  345. data/lib/chef/provider/dsc_script.rb +23 -27
  346. data/lib/chef/provider/execute.rb +11 -15
  347. data/lib/chef/provider/file/content.rb +3 -3
  348. data/lib/chef/provider/file.rb +41 -33
  349. data/lib/chef/provider/git.rb +108 -42
  350. data/lib/chef/provider/group/aix.rb +3 -1
  351. data/lib/chef/provider/group/dscl.rb +10 -7
  352. data/lib/chef/provider/group/gpasswd.rb +2 -2
  353. data/lib/chef/provider/group/groupadd.rb +5 -4
  354. data/lib/chef/provider/group/groupmod.rb +4 -4
  355. data/lib/chef/provider/group/pw.rb +5 -5
  356. data/lib/chef/provider/group/solaris.rb +62 -0
  357. data/lib/chef/provider/group/usermod.rb +5 -10
  358. data/lib/chef/provider/group/windows.rb +16 -5
  359. data/lib/chef/provider/group.rb +28 -18
  360. data/lib/chef/provider/http_request.rb +21 -19
  361. data/lib/chef/provider/ifconfig/aix.rb +3 -2
  362. data/lib/chef/provider/ifconfig/debian.rb +42 -25
  363. data/lib/chef/provider/ifconfig/redhat.rb +56 -20
  364. data/lib/chef/provider/ifconfig.rb +38 -35
  365. data/lib/chef/provider/launchd.rb +57 -81
  366. data/lib/chef/provider/link.rb +17 -26
  367. data/lib/chef/provider/lwrp_base.rb +6 -7
  368. data/lib/chef/provider/mount/aix.rb +12 -12
  369. data/lib/chef/provider/mount/linux.rb +86 -0
  370. data/lib/chef/provider/mount/mount.rb +61 -54
  371. data/lib/chef/provider/mount/solaris.rb +9 -10
  372. data/lib/chef/provider/mount/windows.rb +6 -6
  373. data/lib/chef/provider/mount.rb +37 -16
  374. data/lib/chef/provider/noop.rb +2 -2
  375. data/lib/chef/provider/package/apt.rb +42 -30
  376. data/lib/chef/provider/package/bff.rb +5 -4
  377. data/lib/chef/provider/package/cab.rb +15 -14
  378. data/lib/chef/provider/package/chocolatey.rb +39 -39
  379. data/lib/chef/provider/package/deb.rb +131 -0
  380. data/lib/chef/provider/package/dnf/dnf_helper.py +107 -30
  381. data/lib/chef/provider/package/dnf/python_helper.rb +97 -49
  382. data/lib/chef/provider/package/dnf/version.rb +6 -2
  383. data/lib/chef/provider/package/dnf.rb +109 -26
  384. data/lib/chef/provider/package/dpkg.rb +15 -38
  385. data/lib/chef/provider/package/freebsd/base.rb +10 -7
  386. data/lib/chef/provider/package/freebsd/pkgng.rb +7 -5
  387. data/lib/chef/provider/package/freebsd/port.rb +2 -6
  388. data/lib/chef/provider/package/habitat.rb +168 -0
  389. data/lib/chef/provider/package/homebrew.rb +110 -47
  390. data/lib/chef/provider/package/ips.rb +4 -4
  391. data/lib/chef/provider/package/macports.rb +1 -2
  392. data/lib/chef/provider/package/msu.rb +15 -10
  393. data/lib/chef/provider/package/openbsd.rb +6 -6
  394. data/lib/chef/provider/package/pacman.rb +27 -36
  395. data/lib/chef/provider/package/paludis.rb +4 -3
  396. data/lib/chef/provider/package/portage.rb +11 -10
  397. data/lib/chef/provider/package/powershell.rb +29 -17
  398. data/lib/chef/provider/package/rpm.rb +6 -5
  399. data/lib/chef/provider/package/rubygems.rb +84 -57
  400. data/lib/chef/provider/package/smartos.rb +4 -3
  401. data/lib/chef/provider/package/snap.rb +427 -0
  402. data/lib/chef/provider/package/solaris.rb +6 -6
  403. data/lib/chef/provider/package/windows/exe.rb +7 -7
  404. data/lib/chef/provider/package/windows/msi.rb +14 -13
  405. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +14 -11
  406. data/lib/chef/provider/package/windows.rb +40 -61
  407. data/lib/chef/provider/package/yum/python_helper.rb +126 -46
  408. data/lib/chef/provider/package/yum/rpm_utils.rb +13 -23
  409. data/lib/chef/provider/package/yum/version.rb +5 -1
  410. data/lib/chef/provider/package/yum/yum_cache.rb +5 -5
  411. data/lib/chef/provider/package/yum/yum_helper.py +72 -91
  412. data/lib/chef/provider/package/yum.rb +57 -40
  413. data/lib/chef/provider/package/zypper/version.rb +60 -0
  414. data/lib/chef/provider/package/zypper.rb +147 -75
  415. data/lib/chef/provider/package.rb +141 -159
  416. data/lib/chef/provider/powershell_script.rb +48 -61
  417. data/lib/chef/provider/registry_key.rb +22 -20
  418. data/lib/chef/provider/remote_directory.rb +18 -18
  419. data/lib/chef/provider/remote_file/cache_control_data.rb +6 -6
  420. data/lib/chef/provider/remote_file/content.rb +8 -5
  421. data/lib/chef/provider/remote_file/fetcher.rb +4 -3
  422. data/lib/chef/provider/remote_file/ftp.rb +10 -7
  423. data/lib/chef/provider/remote_file/http.rb +9 -6
  424. data/lib/chef/provider/remote_file/local_file.rb +7 -6
  425. data/lib/chef/provider/remote_file/network_file.rb +4 -4
  426. data/lib/chef/provider/remote_file/sftp.rb +10 -7
  427. data/lib/chef/provider/remote_file.rb +12 -11
  428. data/lib/chef/provider/route.rb +55 -55
  429. data/lib/chef/provider/ruby_block.rb +3 -3
  430. data/lib/chef/provider/script.rb +7 -82
  431. data/lib/chef/provider/service/aix.rb +2 -2
  432. data/lib/chef/provider/service/aixinit.rb +5 -5
  433. data/lib/chef/provider/service/arch.rb +7 -6
  434. data/lib/chef/provider/service/debian.rb +53 -49
  435. data/lib/chef/provider/service/freebsd.rb +19 -25
  436. data/lib/chef/provider/service/gentoo.rb +5 -5
  437. data/lib/chef/provider/service/init.rb +4 -4
  438. data/lib/chef/provider/service/insserv.rb +6 -6
  439. data/lib/chef/provider/service/invokercd.rb +5 -5
  440. data/lib/chef/provider/service/macosx.rb +32 -26
  441. data/lib/chef/provider/service/openbsd.rb +11 -14
  442. data/lib/chef/provider/service/redhat.rb +13 -13
  443. data/lib/chef/provider/service/simple.rb +7 -6
  444. data/lib/chef/provider/service/solaris.rb +3 -3
  445. data/lib/chef/provider/service/systemd.rb +62 -32
  446. data/lib/chef/provider/service/upstart.rb +11 -21
  447. data/lib/chef/provider/service/windows.rb +56 -64
  448. data/lib/chef/provider/service.rb +29 -26
  449. data/lib/chef/provider/subversion.rb +50 -29
  450. data/lib/chef/provider/support/yum_repo.erb +2 -2
  451. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  452. data/lib/chef/provider/systemd_unit.rb +68 -41
  453. data/lib/chef/provider/template/content.rb +7 -10
  454. data/lib/chef/provider/template.rb +5 -4
  455. data/lib/chef/provider/template_finder.rb +3 -11
  456. data/lib/chef/provider/user/aix.rb +13 -5
  457. data/lib/chef/provider/user/dscl.rb +66 -141
  458. data/lib/chef/provider/user/linux.rb +41 -6
  459. data/lib/chef/provider/user/mac.rb +677 -0
  460. data/lib/chef/provider/user/pw.rb +4 -3
  461. data/lib/chef/provider/user/solaris.rb +6 -4
  462. data/lib/chef/provider/user/windows.rb +19 -13
  463. data/lib/chef/provider/user.rb +78 -30
  464. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  465. data/lib/chef/provider/windows_script.rb +91 -29
  466. data/lib/chef/provider/yum_repository.rb +46 -51
  467. data/lib/chef/provider/zypper_repository.rb +70 -55
  468. data/lib/chef/provider.rb +121 -47
  469. data/lib/chef/provider_resolver.rb +11 -5
  470. data/lib/chef/providers.rb +111 -120
  471. data/lib/chef/pwsh.rb +72 -0
  472. data/lib/chef/recipe.rb +43 -21
  473. data/lib/chef/request_id.rb +3 -3
  474. data/lib/chef/resource/_rest_resource.rb +389 -0
  475. data/lib/chef/resource/action_class.rb +28 -26
  476. data/lib/chef/resource/alternatives.rb +209 -0
  477. data/lib/chef/resource/apt_package.rb +50 -10
  478. data/lib/chef/resource/apt_preference.rb +109 -14
  479. data/lib/chef/resource/apt_repository.rb +426 -27
  480. data/lib/chef/resource/apt_update.rb +73 -6
  481. data/lib/chef/resource/archive_file.rb +206 -0
  482. data/lib/chef/resource/bash.rb +124 -4
  483. data/lib/chef/resource/batch.rb +8 -5
  484. data/lib/chef/resource/bff_package.rb +33 -4
  485. data/lib/chef/resource/breakpoint.rb +64 -6
  486. data/lib/chef/resource/build_essential.rb +102 -62
  487. data/lib/chef/resource/cab_package.rb +48 -13
  488. data/lib/chef/resource/chef_client_config.rb +341 -0
  489. data/lib/chef/resource/chef_client_cron.rb +234 -0
  490. data/lib/chef/resource/chef_client_launchd.rb +194 -0
  491. data/lib/chef/resource/chef_client_scheduled_task.rb +259 -0
  492. data/lib/chef/resource/chef_client_systemd_timer.rb +186 -0
  493. data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
  494. data/lib/chef/resource/chef_gem.rb +69 -34
  495. data/lib/chef/resource/chef_handler.rb +165 -19
  496. data/lib/chef/resource/chef_sleep.rb +70 -0
  497. data/lib/chef/resource/chef_vault_secret.rb +129 -0
  498. data/lib/chef/resource/chocolatey_config.rb +28 -14
  499. data/lib/chef/resource/chocolatey_feature.rb +92 -0
  500. data/lib/chef/resource/chocolatey_package.rb +45 -13
  501. data/lib/chef/resource/chocolatey_source.rb +81 -13
  502. data/lib/chef/resource/conditional.rb +3 -3
  503. data/lib/chef/resource/cookbook_file.rb +12 -10
  504. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  505. data/lib/chef/resource/cron/cron.rb +119 -0
  506. data/lib/chef/resource/cron/cron_d.rb +201 -0
  507. data/lib/chef/resource/cron_access.rb +44 -15
  508. data/lib/chef/resource/csh.rb +8 -6
  509. data/lib/chef/resource/directory.rb +9 -8
  510. data/lib/chef/resource/dmg_package.rb +71 -43
  511. data/lib/chef/resource/dnf_package.rb +28 -31
  512. data/lib/chef/resource/dpkg_package.rb +18 -5
  513. data/lib/chef/resource/dsc_resource.rb +14 -13
  514. data/lib/chef/resource/dsc_script.rb +23 -10
  515. data/lib/chef/resource/execute.rb +520 -46
  516. data/lib/chef/resource/file/verification/json.rb +50 -0
  517. data/lib/chef/resource/file/verification/systemd_unit.rb +3 -2
  518. data/lib/chef/resource/file/verification/yaml.rb +52 -0
  519. data/lib/chef/resource/file/verification.rb +11 -6
  520. data/lib/chef/resource/file.rb +26 -20
  521. data/lib/chef/resource/freebsd_package.rb +10 -29
  522. data/lib/chef/resource/gem_package.rb +59 -15
  523. data/lib/chef/resource/group.rb +40 -14
  524. data/lib/chef/{knife/recipe_list.rb → resource/habitat/_habitat_shared.rb} +13 -17
  525. data/lib/chef/resource/habitat/habitat_package.rb +128 -0
  526. data/lib/chef/resource/habitat/habitat_sup.rb +328 -0
  527. data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
  528. data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
  529. data/lib/chef/resource/habitat_config.rb +106 -0
  530. data/lib/chef/resource/habitat_install.rb +246 -0
  531. data/lib/chef/resource/habitat_service.rb +450 -0
  532. data/lib/chef/resource/habitat_user_toml.rb +91 -0
  533. data/lib/chef/resource/helpers/cron_validations.rb +101 -0
  534. data/lib/chef/resource/homebrew_cask.rb +46 -36
  535. data/lib/chef/resource/homebrew_package.rb +39 -7
  536. data/lib/chef/resource/homebrew_tap.rb +27 -31
  537. data/lib/chef/resource/homebrew_update.rb +108 -0
  538. data/lib/chef/resource/hostname.rb +128 -88
  539. data/lib/chef/resource/http_request.rb +5 -5
  540. data/lib/chef/resource/ifconfig.rb +83 -35
  541. data/lib/chef/resource/inspec_input.rb +126 -0
  542. data/lib/chef/resource/inspec_waiver.rb +183 -0
  543. data/lib/chef/resource/inspec_waiver_file_entry.rb +155 -0
  544. data/lib/chef/resource/ips_package.rb +15 -8
  545. data/lib/chef/resource/kernel_module.rb +80 -36
  546. data/lib/chef/resource/ksh.rb +9 -6
  547. data/lib/chef/resource/launchd.rb +114 -110
  548. data/lib/chef/resource/link.rb +18 -40
  549. data/lib/chef/resource/locale.rb +145 -57
  550. data/lib/chef/resource/log.rb +21 -8
  551. data/lib/chef/resource/lwrp_base.rb +31 -16
  552. data/lib/chef/resource/macos_userdefaults.rb +112 -83
  553. data/lib/chef/resource/macosx_service.rb +4 -8
  554. data/lib/chef/resource/macports_package.rb +13 -4
  555. data/lib/chef/resource/mdadm.rb +122 -17
  556. data/lib/chef/resource/mount.rb +37 -28
  557. data/lib/chef/resource/msu_package.rb +28 -12
  558. data/lib/chef/resource/notify_group.rb +72 -0
  559. data/lib/chef/resource/ohai.rb +66 -9
  560. data/lib/chef/resource/ohai_hint.rb +46 -23
  561. data/lib/chef/resource/openbsd_package.rb +31 -8
  562. data/lib/chef/resource/openssl_dhparam.rb +53 -23
  563. data/lib/chef/resource/openssl_ec_private_key.rb +49 -27
  564. data/lib/chef/resource/openssl_ec_public_key.rb +37 -20
  565. data/lib/chef/resource/openssl_rsa_private_key.rb +47 -27
  566. data/lib/chef/resource/openssl_rsa_public_key.rb +38 -19
  567. data/lib/chef/resource/openssl_x509_certificate.rb +139 -98
  568. data/lib/chef/resource/openssl_x509_crl.rb +46 -30
  569. data/lib/chef/resource/openssl_x509_request.rb +84 -52
  570. data/lib/chef/resource/osx_profile.rb +297 -11
  571. data/lib/chef/resource/package.rb +13 -21
  572. data/lib/chef/resource/pacman_package.rb +5 -3
  573. data/lib/chef/resource/paludis_package.rb +16 -8
  574. data/lib/chef/resource/perl.rb +8 -6
  575. data/lib/chef/resource/plist.rb +226 -0
  576. data/lib/chef/resource/portage_package.rb +17 -6
  577. data/lib/chef/resource/powershell_package.rb +11 -14
  578. data/lib/chef/resource/powershell_package_source.rb +246 -83
  579. data/lib/chef/resource/powershell_script.rb +46 -22
  580. data/lib/chef/resource/python.rb +8 -6
  581. data/lib/chef/resource/reboot.rb +84 -10
  582. data/lib/chef/resource/registry_key.rb +128 -47
  583. data/lib/chef/resource/remote_directory.rb +44 -45
  584. data/lib/chef/resource/remote_file.rb +141 -27
  585. data/lib/chef/resource/resource_notification.rb +6 -5
  586. data/lib/chef/resource/rhsm_errata.rb +28 -12
  587. data/lib/chef/resource/rhsm_errata_level.rb +25 -16
  588. data/lib/chef/resource/rhsm_register.rb +122 -41
  589. data/lib/chef/resource/rhsm_repo.rb +25 -14
  590. data/lib/chef/resource/rhsm_subscription.rb +16 -20
  591. data/lib/chef/resource/route.rb +30 -17
  592. data/lib/chef/resource/rpm_package.rb +15 -4
  593. data/lib/chef/resource/ruby.rb +6 -8
  594. data/lib/chef/resource/ruby_block.rb +109 -8
  595. data/lib/chef/resource/scm/_scm.rb +48 -0
  596. data/lib/chef/resource/scm/git.rb +142 -0
  597. data/lib/chef/resource/scm/subversion.rb +71 -0
  598. data/lib/chef/resource/script.rb +13 -9
  599. data/lib/chef/resource/selinux/common_helpers.rb +47 -0
  600. data/lib/chef/resource/selinux/selinux_debian.erb +18 -0
  601. data/lib/chef/resource/selinux/selinux_default.erb +15 -0
  602. data/lib/chef/resource/selinux_boolean.rb +101 -0
  603. data/lib/chef/resource/selinux_fcontext.rb +160 -0
  604. data/lib/chef/resource/selinux_install.rb +107 -0
  605. data/lib/chef/resource/selinux_module.rb +143 -0
  606. data/lib/chef/resource/selinux_permissive.rb +64 -0
  607. data/lib/chef/resource/selinux_port.rb +118 -0
  608. data/lib/chef/resource/selinux_state.rb +166 -0
  609. data/lib/chef/resource/service.rb +64 -162
  610. data/lib/chef/resource/smartos_package.rb +13 -4
  611. data/lib/chef/{knife/data_bag_list.rb → resource/snap_package.rb} +14 -17
  612. data/lib/chef/resource/solaris_package.rb +13 -6
  613. data/lib/chef/resource/ssh_known_hosts_entry.rb +47 -33
  614. data/lib/chef/resource/sudo.rb +92 -60
  615. data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
  616. data/lib/chef/resource/support/client.erb +77 -0
  617. data/lib/chef/resource/support/cron.d.erb +1 -1
  618. data/lib/chef/resource/support/cron_access.erb +1 -1
  619. data/lib/chef/resource/support/sudoer.erb +1 -2
  620. data/lib/chef/resource/support/sup.toml.erb +179 -0
  621. data/lib/chef/resource/support/ulimit.erb +41 -0
  622. data/lib/chef/resource/swap_file.rb +35 -21
  623. data/lib/chef/resource/sysctl.rb +115 -38
  624. data/lib/chef/resource/systemd_unit.rb +60 -17
  625. data/lib/chef/resource/template.rb +15 -14
  626. data/lib/chef/resource/timezone.rb +128 -88
  627. data/lib/chef/resource/user/aix_user.rb +2 -3
  628. data/lib/chef/resource/user/linux_user.rb +2 -3
  629. data/lib/chef/resource/user/mac_user.rb +121 -0
  630. data/lib/chef/resource/user/pw_user.rb +2 -3
  631. data/lib/chef/resource/user/solaris_user.rb +2 -3
  632. data/lib/chef/resource/user/windows_user.rb +9 -5
  633. data/lib/chef/resource/user.rb +55 -127
  634. data/lib/chef/resource/user_ulimit.rb +116 -0
  635. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  636. data/lib/chef/resource/windows_ad_join.rb +149 -33
  637. data/lib/chef/resource/windows_audit_policy.rb +230 -0
  638. data/lib/chef/resource/windows_auto_run.rb +26 -18
  639. data/lib/chef/resource/windows_certificate.rb +319 -120
  640. data/lib/chef/resource/windows_defender.rb +162 -0
  641. data/lib/chef/resource/windows_defender_exclusion.rb +124 -0
  642. data/lib/chef/resource/windows_dfs_folder.rb +72 -0
  643. data/lib/chef/resource/windows_dfs_namespace.rb +110 -0
  644. data/lib/chef/resource/windows_dfs_server.rb +77 -0
  645. data/lib/chef/resource/windows_dns_record.rb +90 -0
  646. data/lib/chef/resource/windows_dns_zone.rb +79 -0
  647. data/lib/chef/resource/windows_env.rb +190 -9
  648. data/lib/chef/resource/windows_feature.rb +77 -25
  649. data/lib/chef/resource/windows_feature_dism.rb +57 -53
  650. data/lib/chef/resource/windows_feature_powershell.rb +88 -110
  651. data/lib/chef/resource/windows_firewall_profile.rb +194 -0
  652. data/lib/chef/resource/windows_firewall_rule.rb +193 -62
  653. data/lib/chef/resource/windows_font.rb +24 -17
  654. data/lib/chef/resource/windows_package.rb +129 -18
  655. data/lib/chef/resource/windows_pagefile.rb +147 -75
  656. data/lib/chef/resource/windows_path.rb +59 -6
  657. data/lib/chef/resource/windows_printer.rb +122 -84
  658. data/lib/chef/resource/windows_printer_port.rb +93 -81
  659. data/lib/chef/resource/windows_script.rb +7 -22
  660. data/lib/chef/resource/windows_security_policy.rb +167 -0
  661. data/lib/chef/resource/windows_service.rb +173 -58
  662. data/lib/chef/resource/windows_share.rb +87 -74
  663. data/lib/chef/resource/windows_shortcut.rb +26 -18
  664. data/lib/chef/resource/windows_task.rb +833 -90
  665. data/lib/chef/resource/windows_uac.rb +113 -0
  666. data/lib/chef/resource/windows_update_settings.rb +258 -0
  667. data/lib/chef/resource/windows_user_privilege.rb +232 -0
  668. data/lib/chef/resource/windows_workgroup.rb +42 -26
  669. data/lib/chef/resource/yum_package.rb +120 -37
  670. data/lib/chef/resource/yum_repository.rb +85 -59
  671. data/lib/chef/resource/zypper_package.rb +41 -11
  672. data/lib/chef/resource/zypper_repository.rb +68 -36
  673. data/lib/chef/resource.rb +172 -126
  674. data/lib/chef/resource_builder.rb +21 -6
  675. data/lib/chef/resource_collection/resource_collection_serialization.rb +6 -5
  676. data/lib/chef/resource_collection/resource_list.rb +10 -8
  677. data/lib/chef/resource_collection/resource_set.rb +20 -20
  678. data/lib/chef/resource_collection/stepable_iterator.rb +2 -2
  679. data/lib/chef/resource_collection.rb +12 -10
  680. data/lib/chef/resource_definition.rb +8 -6
  681. data/lib/chef/resource_definition_list.rb +4 -4
  682. data/lib/chef/resource_inspector.rb +95 -77
  683. data/lib/chef/resource_reporter.rb +47 -141
  684. data/lib/chef/resource_resolver.rb +11 -18
  685. data/lib/chef/resources.rb +176 -130
  686. data/lib/chef/role.rb +21 -20
  687. data/lib/chef/run_context/cookbook_compiler.rb +176 -65
  688. data/lib/chef/run_context.rb +127 -36
  689. data/lib/chef/run_list/run_list_expansion.rb +9 -8
  690. data/lib/chef/run_list/run_list_item.rb +6 -6
  691. data/lib/chef/run_list/versioned_recipe_list.rb +4 -4
  692. data/lib/chef/run_list.rb +10 -9
  693. data/lib/chef/run_lock.rb +14 -13
  694. data/lib/chef/run_status.rb +5 -8
  695. data/lib/chef/runner.rb +10 -10
  696. data/lib/chef/scan_access_control.rb +2 -2
  697. data/lib/chef/search/query.rb +15 -17
  698. data/lib/chef/secret_fetcher/akeyless_vault.rb +57 -0
  699. data/lib/chef/secret_fetcher/aws_secrets_manager.rb +65 -0
  700. data/lib/chef/secret_fetcher/azure_key_vault.rb +134 -0
  701. data/lib/chef/secret_fetcher/base.rb +76 -0
  702. data/lib/chef/secret_fetcher/example.rb +46 -0
  703. data/lib/chef/secret_fetcher/hashi_vault.rb +134 -0
  704. data/lib/chef/secret_fetcher.rb +60 -0
  705. data/lib/chef/server_api.rb +11 -15
  706. data/lib/chef/server_api_versions.rb +6 -2
  707. data/lib/chef/shell/ext.rb +29 -30
  708. data/lib/chef/shell/model_wrapper.rb +5 -4
  709. data/lib/chef/shell/shell_session.rb +16 -13
  710. data/lib/chef/shell.rb +105 -47
  711. data/lib/chef/{audit/logger.rb → train_transport.rb} +8 -15
  712. data/lib/chef/user.rb +14 -15
  713. data/lib/chef/user_v1.rb +26 -25
  714. data/lib/chef/util/backup.rb +4 -4
  715. data/lib/chef/util/diff.rb +24 -22
  716. data/lib/chef/util/dsc/configuration_generator.rb +59 -17
  717. data/lib/chef/util/dsc/lcm_output_parser.rb +13 -16
  718. data/lib/chef/util/dsc/local_configuration_manager.rb +23 -20
  719. data/lib/chef/util/dsc/resource_store.rb +7 -13
  720. data/lib/chef/util/editor.rb +1 -1
  721. data/lib/chef/util/file_edit.rb +4 -3
  722. data/lib/chef/util/path_helper.rb +1 -1
  723. data/lib/chef/util/powershell/ps_credential.rb +20 -16
  724. data/lib/chef/util/selinux.rb +5 -5
  725. data/lib/chef/util/threaded_job_queue.rb +2 -4
  726. data/lib/chef/util/windows/logon_session.rb +8 -8
  727. data/lib/chef/util/windows/net_group.rb +2 -2
  728. data/lib/chef/util/windows/net_use.rb +4 -4
  729. data/lib/chef/util/windows/net_user.rb +8 -7
  730. data/lib/chef/util/windows/volume.rb +3 -3
  731. data/lib/chef/version/platform.rb +1 -1
  732. data/lib/chef/version.rb +4 -4
  733. data/lib/chef/version_class.rb +2 -2
  734. data/lib/chef/version_constraint/platform.rb +2 -2
  735. data/lib/chef/version_constraint.rb +4 -4
  736. data/lib/chef/version_string.rb +3 -126
  737. data/lib/chef/win32/api/command_line_helper.rb +89 -0
  738. data/lib/chef/win32/api/crypto.rb +13 -13
  739. data/lib/chef/win32/api/error.rb +9 -7
  740. data/lib/chef/win32/api/file.rb +66 -62
  741. data/lib/chef/win32/api/installer.rb +8 -8
  742. data/lib/chef/win32/api/memory.rb +6 -6
  743. data/lib/chef/win32/api/net.rb +42 -41
  744. data/lib/chef/win32/api/process.rb +4 -4
  745. data/lib/chef/win32/api/psapi.rb +3 -3
  746. data/lib/chef/win32/api/registry.rb +5 -5
  747. data/lib/chef/win32/api/security.rb +95 -89
  748. data/lib/chef/win32/api/synchronization.rb +7 -7
  749. data/lib/chef/win32/api/system.rb +9 -9
  750. data/lib/chef/win32/api/unicode.rb +5 -5
  751. data/lib/chef/win32/api.rb +15 -8
  752. data/lib/chef/win32/crypto.rb +6 -6
  753. data/lib/chef/win32/error.rb +6 -6
  754. data/lib/chef/win32/eventlog.rb +4 -4
  755. data/lib/chef/win32/file/info.rb +3 -2
  756. data/lib/chef/win32/file/version_info.rb +22 -21
  757. data/lib/chef/win32/file.rb +19 -24
  758. data/lib/chef/win32/handle.rb +11 -12
  759. data/lib/chef/win32/memory.rb +4 -4
  760. data/lib/chef/win32/mutex.rb +5 -5
  761. data/lib/chef/win32/net.rb +13 -8
  762. data/lib/chef/win32/process.rb +8 -8
  763. data/lib/chef/win32/registry.rb +24 -15
  764. data/lib/chef/win32/security/ace.rb +5 -5
  765. data/lib/chef/win32/security/acl.rb +6 -5
  766. data/lib/chef/win32/security/securable_object.rb +4 -4
  767. data/lib/chef/win32/security/security_descriptor.rb +8 -6
  768. data/lib/chef/win32/security/sid.rb +20 -19
  769. data/lib/chef/win32/security/token.rb +8 -6
  770. data/lib/chef/win32/security.rb +61 -18
  771. data/lib/chef/win32/system.rb +4 -4
  772. data/lib/chef/win32/unicode.rb +4 -4
  773. data/lib/chef/win32/version.rb +10 -8
  774. data/lib/chef/workstation_config_loader.rb +1 -1
  775. data/lib/chef.rb +15 -15
  776. data/spec/data/archive_file/test_archive.tar.gz +0 -0
  777. data/spec/data/chef_guid +1 -0
  778. data/spec/data/cookbooks/apache2/metadata.json +33 -0
  779. data/spec/data/cookbooks/irssi/files/default/irssi.response +2 -0
  780. data/spec/data/cookbooks/java/metadata.json +33 -0
  781. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  782. data/spec/data/cookbooks/starter/chefignore +8 -0
  783. data/spec/data/cookbooks/starter/files/sample.txt +1 -0
  784. data/spec/data/cookbooks/starter/metadata.rb +2 -0
  785. data/spec/data/cookbooks/starter/recipes/default.rb +4 -0
  786. data/spec/data/cookbooks/wget/files/default/wget.response +2 -0
  787. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  788. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  789. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  790. data/spec/data/lwrp/resources/bar.rb +2 -0
  791. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  792. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  793. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  794. data/spec/data/lwrp/resources/foo.rb +2 -0
  795. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  796. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  797. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  798. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  799. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  800. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  801. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  802. data/spec/data/nodes/mcwfhpowell.json +3 -0
  803. data/spec/data/rubygems.org/latest_specs.4.8.gz +0 -0
  804. data/spec/data/rubygems.org/nonexistent_gem +0 -0
  805. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  806. data/spec/data/rubygems.org/sexp_processor +0 -0
  807. data/spec/data/rubygems.org/sexp_processor-4.15.1.gemspec.rz +0 -0
  808. data/spec/data/rubygems.org/sexp_processor-info +50 -0
  809. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  810. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  811. data/spec/data/run_context/cookbooks/dependency1/attributes/unparsed_file +1 -0
  812. data/spec/data/run_context/cookbooks/dependency1/definitions/unparsed_file +1 -0
  813. data/spec/data/run_context/cookbooks/dependency1/libraries/unparsed_file +1 -0
  814. data/spec/data/run_context/cookbooks/dependency1/providers/unparsed_file +1 -0
  815. data/spec/data/run_context/cookbooks/dependency1/recipes/unparsed_file +1 -0
  816. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  817. data/spec/data/run_context/cookbooks/dependency1/resources/unparsed_file +1 -0
  818. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  819. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  820. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  821. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  822. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  823. data/spec/data/shef-config.rb +2 -2
  824. data/spec/data/snap_package/async_result_success.json +6 -0
  825. data/spec/data/snap_package/change_id_result.json +175 -0
  826. data/spec/data/snap_package/find_result_failure.json +10 -0
  827. data/spec/data/snap_package/find_result_success.json +70 -0
  828. data/spec/data/snap_package/get_by_name_result_failure.json +10 -0
  829. data/spec/data/snap_package/get_by_name_result_success.json +38 -0
  830. data/spec/data/snap_package/get_conf_success.json +10 -0
  831. data/spec/data/snap_package/result_failure.json +9 -0
  832. data/spec/data/ssl/binary/chef-rspec-der.cert +0 -0
  833. data/spec/data/ssl/binary/chef-rspec-der.key +0 -0
  834. data/spec/data/ssl/chef-rspec.cert +15 -15
  835. data/spec/data/windows_certificates/base64_test.cer +18 -20
  836. data/spec/data/windows_certificates/othertest.cer +0 -0
  837. data/spec/data/windows_certificates/test.cer +0 -0
  838. data/spec/data/windows_certificates/test.p7b +0 -0
  839. data/spec/data/windows_certificates/test.pem +18 -19
  840. data/spec/data/windows_certificates/test.pfx +0 -0
  841. data/spec/functional/application_spec.rb +1 -1
  842. data/spec/functional/assets/inittest +8 -7
  843. data/spec/functional/assets/yumrepo-empty/repodata/01a3b489a465bcac22a43492163df43451dc6ce47d27f66de289756b91635523-filelists.sqlite.bz2 +0 -0
  844. data/spec/functional/assets/yumrepo-empty/repodata/401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz +0 -0
  845. data/spec/functional/assets/yumrepo-empty/repodata/5dc1e6e73c84803f059bb3065e684e56adfc289a7e398946574d79dac6643945-primary.sqlite.bz2 +0 -0
  846. data/spec/functional/assets/yumrepo-empty/repodata/6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz +0 -0
  847. data/spec/functional/assets/yumrepo-empty/repodata/7c36572015e075add2b38b900837bcdbb8a504130ddff49b2351a7fc0affa3d4-other.sqlite.bz2 +0 -0
  848. data/spec/functional/assets/yumrepo-empty/repodata/dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz +0 -0
  849. data/spec/functional/assets/yumrepo-empty/repodata/repomd.xml +55 -0
  850. data/spec/functional/dsl/reboot_pending_spec.rb +6 -6
  851. data/spec/functional/dsl/registry_helper_spec.rb +3 -3
  852. data/spec/functional/event_loggers/windows_eventlog_spec.rb +9 -8
  853. data/spec/functional/file_content_management/deploy_strategies_spec.rb +4 -4
  854. data/spec/functional/http/simple_spec.rb +1 -1
  855. data/spec/functional/mixin/from_file_spec.rb +13 -2
  856. data/spec/functional/mixin/powershell_out_spec.rb +12 -4
  857. data/spec/functional/mixin/shell_out_spec.rb +1 -31
  858. data/spec/functional/mixin/user_context_spec.rb +3 -3
  859. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +1 -1
  860. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +1 -1
  861. data/spec/functional/rebooter_spec.rb +1 -1
  862. data/spec/functional/resource/aix_service_spec.rb +12 -5
  863. data/spec/functional/resource/aixinit_service_spec.rb +17 -18
  864. data/spec/functional/resource/apt_package_spec.rb +6 -9
  865. data/spec/functional/resource/archive_file_spec.rb +88 -0
  866. data/spec/functional/resource/bash_spec.rb +4 -3
  867. data/spec/functional/resource/batch_spec.rb +1 -1
  868. data/spec/functional/resource/bff_spec.rb +4 -4
  869. data/spec/functional/resource/chocolatey_package_spec.rb +68 -4
  870. data/spec/functional/resource/cookbook_file_spec.rb +4 -4
  871. data/spec/functional/resource/cron_spec.rb +35 -36
  872. data/spec/functional/resource/directory_spec.rb +1 -1
  873. data/spec/functional/resource/dnf_package_spec.rb +1305 -362
  874. data/spec/functional/resource/dpkg_package_spec.rb +17 -1
  875. data/spec/functional/resource/dsc_resource_spec.rb +2 -2
  876. data/spec/functional/resource/dsc_script_spec.rb +11 -15
  877. data/spec/functional/resource/execute_spec.rb +2 -2
  878. data/spec/functional/resource/file_spec.rb +1 -1
  879. data/spec/functional/resource/git_spec.rb +208 -136
  880. data/spec/functional/resource/group_spec.rb +44 -57
  881. data/spec/functional/resource/ifconfig_spec.rb +10 -2
  882. data/spec/functional/resource/insserv_spec.rb +10 -10
  883. data/spec/functional/resource/launchd_spec.rb +232 -0
  884. data/spec/functional/resource/link_spec.rb +33 -28
  885. data/spec/functional/resource/locale_spec.rb +108 -0
  886. data/spec/functional/resource/macos_userdefaults_spec.rb +139 -0
  887. data/spec/functional/resource/mount_spec.rb +20 -4
  888. data/spec/functional/resource/msu_package_spec.rb +15 -6
  889. data/spec/functional/resource/ohai_spec.rb +3 -11
  890. data/spec/functional/resource/plist_spec.rb +25 -0
  891. data/spec/functional/resource/powershell_package_source_spec.rb +106 -0
  892. data/spec/functional/resource/powershell_script_spec.rb +84 -96
  893. data/spec/functional/resource/registry_spec.rb +90 -90
  894. data/spec/functional/resource/remote_directory_spec.rb +1 -1
  895. data/spec/functional/resource/remote_file_spec.rb +11 -17
  896. data/spec/functional/resource/rpm_spec.rb +4 -4
  897. data/spec/functional/resource/template_spec.rb +3 -3
  898. data/spec/functional/resource/timezone_spec.rb +3 -1
  899. data/spec/functional/resource/user/linux_user_spec.rb +127 -0
  900. data/spec/functional/resource/user/{dscl_spec.rb → mac_user_spec.rb} +31 -19
  901. data/spec/functional/resource/user/windows_spec.rb +1 -1
  902. data/spec/functional/resource/windows_certificate_spec.rb +266 -382
  903. data/spec/functional/resource/windows_env_spec.rb +4 -4
  904. data/spec/functional/resource/windows_firewall_rule_spec.rb +93 -0
  905. data/spec/functional/resource/windows_font_spec.rb +52 -0
  906. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  907. data/spec/functional/resource/windows_package_spec.rb +37 -12
  908. data/spec/functional/resource/windows_pagefile_spec.rb +125 -0
  909. data/spec/functional/resource/windows_path_spec.rb +5 -1
  910. data/spec/functional/resource/windows_security_policy_spec.rb +86 -0
  911. data/spec/functional/resource/windows_share_spec.rb +103 -0
  912. data/spec/functional/resource/windows_task_spec.rb +64 -63
  913. data/spec/functional/resource/windows_user_privilege_spec.rb +192 -0
  914. data/spec/functional/resource/yum_package_spec.rb +1212 -432
  915. data/spec/functional/resource/zypper_package_spec.rb +35 -2
  916. data/spec/functional/run_lock_spec.rb +27 -26
  917. data/spec/functional/shell_spec.rb +13 -10
  918. data/spec/functional/tiny_server_spec.rb +1 -1
  919. data/spec/functional/util/path_helper_spec.rb +1 -1
  920. data/spec/functional/version_spec.rb +7 -6
  921. data/spec/functional/win32/crypto_spec.rb +3 -3
  922. data/spec/functional/win32/registry_spec.rb +18 -24
  923. data/spec/functional/win32/security_spec.rb +24 -2
  924. data/spec/functional/win32/sid_spec.rb +2 -2
  925. data/spec/functional/win32/version_info_spec.rb +2 -2
  926. data/spec/functional/win32/versions_spec.rb +3 -3
  927. data/spec/integration/client/client_spec.rb +326 -83
  928. data/spec/integration/client/exit_code_spec.rb +4 -30
  929. data/spec/integration/client/fips_spec.rb +20 -0
  930. data/spec/integration/client/ipv6_spec.rb +4 -3
  931. data/spec/integration/compliance/compliance_spec.rb +143 -0
  932. data/spec/integration/ohai/ohai_spec.rb +62 -0
  933. data/spec/integration/recipes/accumulator_spec.rb +15 -2
  934. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +11 -6
  935. data/spec/integration/recipes/lwrp_spec.rb +5 -2
  936. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  937. data/spec/integration/recipes/notifies_spec.rb +67 -23
  938. data/spec/integration/recipes/notifying_block_spec.rb +13 -8
  939. data/spec/integration/recipes/provider_choice.rb +4 -2
  940. data/spec/integration/recipes/recipe_dsl_spec.rb +61 -153
  941. data/spec/integration/recipes/remote_directory.rb +2 -2
  942. data/spec/integration/recipes/resource_action_spec.rb +35 -15
  943. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +22 -20
  944. data/spec/integration/recipes/resource_load_spec.rb +137 -14
  945. data/spec/integration/recipes/unified_mode_spec.rb +73 -2
  946. data/spec/integration/recipes/use_partial_spec.rb +116 -0
  947. data/spec/integration/solo/solo_spec.rb +13 -11
  948. data/spec/spec_helper.rb +62 -45
  949. data/spec/stress/win32/file_spec.rb +2 -2
  950. data/spec/stress/win32/memory_spec.rb +1 -1
  951. data/spec/stress/win32/security_spec.rb +1 -1
  952. data/spec/support/chef_helpers.rb +7 -43
  953. data/spec/support/key_helpers.rb +1 -3
  954. data/spec/support/lib/chef/provider/easy.rb +1 -1
  955. data/spec/support/lib/chef/provider/openldap_includer.rb +1 -1
  956. data/spec/support/lib/chef/provider/snakeoil.rb +1 -1
  957. data/spec/support/lib/chef/resource/cat.rb +2 -2
  958. data/spec/support/lib/chef/resource/one_two_three_four.rb +1 -1
  959. data/spec/support/lib/chef/resource/openldap_includer.rb +1 -1
  960. data/spec/support/lib/chef/resource/with_state.rb +1 -2
  961. data/spec/support/lib/chef/resource/zen_follower.rb +3 -2
  962. data/spec/support/lib/chef/resource/zen_master.rb +1 -2
  963. data/spec/support/matchers/leak.rb +8 -10
  964. data/spec/support/mock/platform.rb +25 -17
  965. data/spec/support/platform_helpers.rb +49 -71
  966. data/spec/support/platforms/prof/gc.rb +2 -2
  967. data/spec/support/platforms/prof/win32.rb +1 -1
  968. data/spec/support/platforms/win32/spec_service.rb +28 -26
  969. data/spec/support/recipe_dsl_helper.rb +83 -0
  970. data/spec/support/ruby_installer.rb +51 -0
  971. data/spec/support/shared/context/config.rb +0 -3
  972. data/spec/support/shared/context/win32.rb +1 -1
  973. data/spec/support/shared/functional/directory_resource.rb +2 -2
  974. data/spec/support/shared/functional/execute_resource.rb +3 -3
  975. data/spec/support/shared/functional/file_resource.rb +24 -25
  976. data/spec/support/shared/functional/http.rb +12 -12
  977. data/spec/support/shared/functional/knife.rb +1 -1
  978. data/spec/support/shared/functional/securable_resource.rb +111 -31
  979. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  980. data/spec/support/shared/functional/windows_script.rb +11 -24
  981. data/spec/support/shared/integration/integration_helper.rb +23 -56
  982. data/spec/support/shared/integration/knife_support.rb +12 -16
  983. data/spec/support/shared/unit/api_error_inspector.rb +1 -1
  984. data/spec/support/shared/unit/api_versioning.rb +1 -1
  985. data/spec/support/shared/unit/application_dot_d.rb +6 -5
  986. data/spec/support/shared/unit/execute_resource.rb +2 -4
  987. data/spec/support/shared/unit/file_system_support.rb +1 -1
  988. data/spec/support/shared/unit/knife_shared.rb +2 -2
  989. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  990. data/spec/support/shared/unit/platform_introspector.rb +1 -1
  991. data/spec/support/shared/unit/provider/file.rb +46 -23
  992. data/spec/support/shared/unit/provider/package/package_shared.rb +95 -0
  993. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +22 -14
  994. data/spec/support/shared/unit/resource/static_provider_resolution.rb +1 -1
  995. data/spec/support/shared/unit/script_resource.rb +14 -30
  996. data/spec/support/shared/unit/user_and_client_shared.rb +2 -2
  997. data/spec/support/shared/unit/windows_script_resource.rb +17 -32
  998. data/spec/tiny_server.rb +1 -2
  999. data/spec/unit/{log_spec.rb → action_collection_spec.rb} +3 -8
  1000. data/spec/unit/api_client/registration_spec.rb +1 -1
  1001. data/spec/unit/api_client_spec.rb +1 -1
  1002. data/spec/unit/api_client_v1_spec.rb +1 -1
  1003. data/spec/unit/application/apply_spec.rb +3 -0
  1004. data/spec/unit/application/base_spec.rb +40 -0
  1005. data/spec/unit/application/client_spec.rb +122 -93
  1006. data/spec/unit/application/exit_code_spec.rb +12 -12
  1007. data/spec/unit/application/solo_spec.rb +9 -16
  1008. data/spec/unit/application_spec.rb +115 -14
  1009. data/spec/unit/chef_class_spec.rb +1 -1
  1010. data/spec/unit/chef_fs/config_spec.rb +4 -4
  1011. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +2 -2
  1012. data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +1 -1
  1013. data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +1 -1
  1014. data/spec/unit/chef_fs/diff_spec.rb +10 -10
  1015. data/spec/unit/chef_fs/file_pattern_spec.rb +3 -3
  1016. data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +1 -1
  1017. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +3 -5
  1018. data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +1 -1
  1019. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +2 -2
  1020. data/spec/unit/chef_fs/file_system_spec.rb +4 -2
  1021. data/spec/unit/chef_fs/path_util_spec.rb +4 -4
  1022. data/spec/unit/chef_spec.rb +1 -1
  1023. data/spec/unit/client_spec.rb +349 -71
  1024. data/spec/unit/compliance/fetcher/automate_spec.rb +126 -0
  1025. data/spec/unit/compliance/fetcher/chef_server_spec.rb +93 -0
  1026. data/spec/unit/compliance/input_spec.rb +104 -0
  1027. data/spec/unit/compliance/profile_spec.rb +120 -0
  1028. data/spec/unit/compliance/reporter/automate_spec.rb +451 -0
  1029. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +197 -0
  1030. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +49 -0
  1031. data/spec/unit/compliance/runner_spec.rb +346 -0
  1032. data/spec/unit/compliance/waiver_spec.rb +104 -0
  1033. data/spec/unit/cookbook/chefignore_spec.rb +32 -12
  1034. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +10 -7
  1035. data/spec/unit/cookbook/file_vendor_spec.rb +2 -2
  1036. data/spec/unit/cookbook/gem_installer_spec.rb +7 -6
  1037. data/spec/unit/cookbook/manifest_v0_spec.rb +1 -1
  1038. data/spec/unit/cookbook/manifest_v2_spec.rb +1 -1
  1039. data/spec/unit/cookbook/metadata_spec.rb +39 -321
  1040. data/spec/unit/cookbook/synchronizer_spec.rb +28 -25
  1041. data/spec/unit/cookbook/syntax_check_spec.rb +5 -2
  1042. data/spec/unit/cookbook_loader_spec.rb +21 -58
  1043. data/spec/unit/cookbook_manifest_spec.rb +1 -1
  1044. data/spec/unit/cookbook_spec.rb +3 -3
  1045. data/spec/unit/cookbook_uploader_spec.rb +8 -2
  1046. data/spec/unit/cookbook_version_file_specificity_spec.rb +1 -1
  1047. data/spec/unit/cookbook_version_spec.rb +55 -3
  1048. data/spec/unit/daemon_spec.rb +2 -6
  1049. data/spec/unit/data_bag_item_spec.rb +2 -7
  1050. data/spec/unit/data_bag_spec.rb +8 -5
  1051. data/spec/unit/data_collector/config_validation_spec.rb +208 -0
  1052. data/spec/unit/data_collector_spec.rb +769 -673
  1053. data/spec/unit/decorator/lazy_array_spec.rb +1 -1
  1054. data/spec/unit/decorator/lazy_spec.rb +1 -1
  1055. data/spec/unit/decorator_spec.rb +24 -24
  1056. data/spec/unit/deprecated_spec.rb +4 -4
  1057. data/spec/unit/deprecation_spec.rb +1 -1
  1058. data/spec/unit/digester_spec.rb +1 -1
  1059. data/spec/unit/dsl/data_query_spec.rb +1 -1
  1060. data/spec/unit/dsl/declare_resource_spec.rb +2 -2
  1061. data/spec/unit/dsl/platform_introspection_spec.rb +32 -1
  1062. data/spec/unit/dsl/reboot_pending_spec.rb +6 -6
  1063. data/spec/unit/dsl/recipe_spec.rb +1 -1
  1064. data/spec/unit/dsl/registry_helper_spec.rb +8 -8
  1065. data/spec/unit/dsl/render_helpers_spec.rb +102 -0
  1066. data/spec/unit/dsl/secret_spec.rb +175 -0
  1067. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +2 -2
  1068. data/spec/unit/encrypted_data_bag_item_spec.rb +3 -3
  1069. data/spec/unit/environment_spec.rb +16 -10
  1070. data/spec/unit/event_dispatch/dispatcher_spec.rb +54 -4
  1071. data/spec/unit/exceptions_spec.rb +1 -1
  1072. data/spec/unit/file_access_control_spec.rb +4 -4
  1073. data/spec/unit/file_cache_spec.rb +1 -1
  1074. data/spec/unit/file_content_management/deploy/cp_spec.rb +1 -1
  1075. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +2 -2
  1076. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +3 -3
  1077. data/spec/unit/file_content_management/tempfile_spec.rb +2 -2
  1078. data/spec/unit/formatters/base_spec.rb +2 -2
  1079. data/spec/unit/formatters/doc_spec.rb +2 -2
  1080. data/spec/unit/formatters/error_description_spec.rb +1 -1
  1081. data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +1 -1
  1082. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +1 -1
  1083. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +3 -3
  1084. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
  1085. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +1 -1
  1086. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +1 -1
  1087. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
  1088. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +1 -1
  1089. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +12 -12
  1090. data/spec/unit/guard_interpreter_spec.rb +2 -2
  1091. data/spec/unit/handler/json_file_spec.rb +1 -1
  1092. data/spec/unit/handler_spec.rb +9 -3
  1093. data/spec/unit/http/api_versions_spec.rb +21 -3
  1094. data/spec/unit/http/authenticator_spec.rb +69 -1
  1095. data/spec/unit/http/basic_client_spec.rb +30 -0
  1096. data/spec/unit/http/http_request_spec.rb +1 -1
  1097. data/spec/unit/http/json_input_spec.rb +1 -1
  1098. data/spec/unit/http/simple_spec.rb +1 -1
  1099. data/spec/unit/http/socketless_chef_zero_client_spec.rb +1 -1
  1100. data/spec/unit/http/ssl_policies_spec.rb +126 -67
  1101. data/spec/unit/http/validate_content_length_spec.rb +1 -1
  1102. data/spec/unit/http_spec.rb +10 -4
  1103. data/spec/unit/json_compat_spec.rb +2 -2
  1104. data/spec/unit/key_spec.rb +2 -2
  1105. data/spec/unit/log/syslog_spec.rb +7 -11
  1106. data/spec/unit/log/winevt_spec.rb +22 -14
  1107. data/spec/unit/lwrp_spec.rb +17 -14
  1108. data/spec/unit/mixin/api_version_request_handling_spec.rb +1 -1
  1109. data/spec/unit/mixin/checksum_spec.rb +29 -1
  1110. data/spec/unit/mixin/deep_merge_spec.rb +15 -0
  1111. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +18 -18
  1112. data/spec/unit/mixin/deprecation_spec.rb +1 -1
  1113. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -1
  1114. data/spec/unit/mixin/homebrew_user_spec.rb +1 -1
  1115. data/spec/unit/mixin/lazy_module_include.rb +1 -1
  1116. data/spec/unit/mixin/openssl_helper_spec.rb +48 -13
  1117. data/spec/unit/mixin/params_validate_spec.rb +5 -4
  1118. data/spec/unit/mixin/powershell_exec_spec.rb +51 -4
  1119. data/spec/unit/mixin/powershell_out_spec.rb +17 -5
  1120. data/spec/unit/mixin/powershell_type_coercions_spec.rb +2 -2
  1121. data/spec/unit/mixin/proxified_socket_spec.rb +1 -1
  1122. data/spec/unit/mixin/securable_spec.rb +6 -7
  1123. data/spec/unit/mixin/shell_out_spec.rb +47 -189
  1124. data/spec/unit/mixin/subclass_directive_spec.rb +3 -3
  1125. data/spec/unit/mixin/template_spec.rb +34 -34
  1126. data/spec/unit/mixin/unformatter_spec.rb +3 -3
  1127. data/spec/unit/mixin/uris_spec.rb +2 -2
  1128. data/spec/unit/mixin/user_context_spec.rb +4 -12
  1129. data/spec/unit/mixin/versioned_api_spec.rb +1 -1
  1130. data/spec/unit/mixin/which.rb +10 -2
  1131. data/spec/unit/mixin/why_run_spec.rb +53 -0
  1132. data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
  1133. data/spec/unit/mixin/xml_escape_spec.rb +1 -1
  1134. data/spec/unit/monologger_spec.rb +1 -1
  1135. data/spec/unit/node/attribute_spec.rb +60 -14
  1136. data/spec/unit/node/immutable_collections_spec.rb +77 -146
  1137. data/spec/unit/node/vivid_mash_spec.rb +109 -4
  1138. data/spec/unit/node_map_spec.rb +50 -16
  1139. data/spec/unit/node_spec.rb +212 -31
  1140. data/spec/unit/org_group_spec.rb +45 -0
  1141. data/spec/unit/org_spec.rb +1 -1
  1142. data/spec/unit/platform/query_helpers_spec.rb +3 -162
  1143. data/spec/unit/policy_builder/dynamic_spec.rb +1 -18
  1144. data/spec/unit/policy_builder/expand_node_object_spec.rb +3 -3
  1145. data/spec/unit/policy_builder/policyfile_spec.rb +145 -57
  1146. data/spec/unit/policy_builder_spec.rb +1 -1
  1147. data/spec/unit/property/state_spec.rb +12 -7
  1148. data/spec/unit/property/validation_spec.rb +55 -1
  1149. data/spec/unit/property_spec.rb +130 -33
  1150. data/spec/unit/provider/apt_preference_spec.rb +16 -12
  1151. data/spec/unit/provider/apt_repository_spec.rb +45 -42
  1152. data/spec/unit/provider/apt_update_spec.rb +16 -13
  1153. data/spec/unit/provider/batch_spec.rb +130 -0
  1154. data/spec/unit/provider/cookbook_file/content_spec.rb +1 -1
  1155. data/spec/unit/provider/cookbook_file_spec.rb +5 -5
  1156. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  1157. data/spec/unit/provider/cron_spec.rb +202 -34
  1158. data/spec/unit/provider/directory_spec.rb +5 -16
  1159. data/spec/unit/provider/dsc_resource_spec.rb +31 -64
  1160. data/spec/unit/provider/dsc_script_spec.rb +20 -20
  1161. data/spec/unit/provider/execute_spec.rb +3 -10
  1162. data/spec/unit/provider/file/content_spec.rb +1 -1
  1163. data/spec/unit/provider/file_spec.rb +6 -5
  1164. data/spec/unit/provider/git_spec.rb +48 -8
  1165. data/spec/unit/provider/group/dscl_spec.rb +1 -1
  1166. data/spec/unit/provider/group/gpasswd_spec.rb +3 -3
  1167. data/spec/unit/provider/group/groupadd_spec.rb +3 -2
  1168. data/spec/unit/provider/group/groupmod_spec.rb +3 -3
  1169. data/spec/unit/provider/group/pw_spec.rb +3 -3
  1170. data/spec/unit/provider/group/solaris_spec.rb +106 -0
  1171. data/spec/unit/provider/group/usermod_spec.rb +5 -8
  1172. data/spec/unit/provider/group/windows_spec.rb +6 -0
  1173. data/spec/unit/provider/group_spec.rb +3 -3
  1174. data/spec/unit/provider/http_request_spec.rb +61 -73
  1175. data/spec/unit/provider/ifconfig/aix_spec.rb +15 -15
  1176. data/spec/unit/provider/ifconfig/debian_spec.rb +1 -1
  1177. data/spec/unit/provider/ifconfig/redhat_spec.rb +1 -1
  1178. data/spec/unit/provider/ifconfig_spec.rb +6 -5
  1179. data/spec/unit/provider/launchd_spec.rb +8 -50
  1180. data/spec/unit/provider/link_spec.rb +18 -13
  1181. data/spec/unit/provider/log_spec.rb +4 -4
  1182. data/spec/unit/provider/mdadm_spec.rb +4 -6
  1183. data/spec/unit/provider/mount/aix_spec.rb +2 -2
  1184. data/spec/unit/provider/mount/linux_spec.rb +130 -0
  1185. data/spec/unit/provider/mount/mount_spec.rb +74 -11
  1186. data/spec/unit/provider/mount/solaris_spec.rb +2 -2
  1187. data/spec/unit/provider/mount/windows_spec.rb +1 -0
  1188. data/spec/unit/provider/mount_spec.rb +32 -1
  1189. data/spec/unit/provider/package/apt_spec.rb +111 -23
  1190. data/spec/unit/provider/package/bff_spec.rb +2 -1
  1191. data/spec/unit/provider/package/cab_spec.rb +2 -2
  1192. data/spec/unit/provider/package/chocolatey_spec.rb +59 -41
  1193. data/spec/unit/provider/package/deb_spec.rb +135 -0
  1194. data/spec/unit/provider/package/dnf/python_helper_spec.rb +11 -4
  1195. data/spec/unit/provider/package/dpkg_spec.rb +28 -1
  1196. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -2
  1197. data/spec/unit/provider/package/freebsd/port_spec.rb +2 -14
  1198. data/spec/unit/provider/package/homebrew_spec.rb +281 -175
  1199. data/spec/unit/provider/package/ips_spec.rb +1 -1
  1200. data/spec/unit/provider/package/macports_spec.rb +1 -1
  1201. data/spec/unit/provider/package/msu_spec.rb +5 -5
  1202. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  1203. data/spec/unit/provider/package/pacman_spec.rb +63 -148
  1204. data/spec/unit/provider/package/paludis_spec.rb +1 -1
  1205. data/spec/unit/provider/package/portage_spec.rb +3 -3
  1206. data/spec/unit/provider/package/powershell_spec.rb +198 -134
  1207. data/spec/unit/provider/package/rpm_spec.rb +21 -10
  1208. data/spec/unit/provider/package/rubygems_spec.rb +273 -67
  1209. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  1210. data/spec/unit/provider/package/snap_spec.rb +208 -0
  1211. data/spec/unit/provider/package/solaris_spec.rb +3 -2
  1212. data/spec/unit/provider/package/windows/exe_spec.rb +3 -3
  1213. data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
  1214. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  1215. data/spec/unit/provider/package/windows_spec.rb +33 -56
  1216. data/spec/unit/provider/package/yum/python_helper_spec.rb +2 -1
  1217. data/spec/unit/provider/package/yum/yum_cache_spec.rb +1 -1
  1218. data/spec/unit/provider/package/zypper_spec.rb +51 -44
  1219. data/spec/unit/provider/package_spec.rb +6 -228
  1220. data/spec/unit/provider/powershell_script_spec.rb +22 -77
  1221. data/spec/unit/provider/registry_key_spec.rb +5 -5
  1222. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  1223. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +4 -4
  1224. data/spec/unit/provider/remote_file/content_spec.rb +1 -1
  1225. data/spec/unit/provider/remote_file/fetcher_spec.rb +2 -2
  1226. data/spec/unit/provider/remote_file/http_spec.rb +11 -1
  1227. data/spec/unit/provider/remote_file/local_file_spec.rb +1 -1
  1228. data/spec/unit/provider/remote_file/network_file_spec.rb +2 -2
  1229. data/spec/unit/provider/remote_file_spec.rb +4 -5
  1230. data/spec/unit/provider/route_spec.rb +0 -2
  1231. data/spec/unit/provider/script_spec.rb +20 -110
  1232. data/spec/unit/provider/service/aix_service_spec.rb +1 -1
  1233. data/spec/unit/provider/service/aixinit_service_spec.rb +1 -1
  1234. data/spec/unit/provider/service/arch_service_spec.rb +7 -5
  1235. data/spec/unit/provider/service/debian_service_spec.rb +37 -14
  1236. data/spec/unit/provider/service/gentoo_service_spec.rb +12 -11
  1237. data/spec/unit/provider/service/init_service_spec.rb +1 -1
  1238. data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
  1239. data/spec/unit/provider/service/invokercd_service_spec.rb +1 -1
  1240. data/spec/unit/provider/service/macosx_spec.rb +211 -214
  1241. data/spec/unit/provider/service/redhat_spec.rb +7 -4
  1242. data/spec/unit/provider/service/simple_service_spec.rb +6 -4
  1243. data/spec/unit/provider/service/solaris_smf_service_spec.rb +1 -1
  1244. data/spec/unit/provider/service/systemd_service_spec.rb +151 -36
  1245. data/spec/unit/provider/service/upstart_service_spec.rb +6 -35
  1246. data/spec/unit/provider/service/windows_spec.rb +167 -109
  1247. data/spec/unit/provider/service_spec.rb +1 -1
  1248. data/spec/unit/provider/subversion_spec.rb +13 -14
  1249. data/spec/unit/provider/systemd_unit_spec.rb +108 -85
  1250. data/spec/unit/provider/template/content_spec.rb +1 -1
  1251. data/spec/unit/provider/template_spec.rb +6 -7
  1252. data/spec/unit/provider/user/aix_spec.rb +2 -2
  1253. data/spec/unit/provider/user/linux_spec.rb +97 -3
  1254. data/spec/unit/provider/user/mac_spec.rb +38 -0
  1255. data/spec/unit/provider/user/pw_spec.rb +1 -1
  1256. data/spec/unit/provider/user/solaris_spec.rb +2 -2
  1257. data/spec/unit/provider/user_spec.rb +56 -30
  1258. data/spec/unit/provider/windows_env_spec.rb +23 -38
  1259. data/spec/unit/provider/windows_path_spec.rb +7 -12
  1260. data/spec/unit/provider/windows_task_spec.rb +8 -7
  1261. data/spec/unit/provider/yum_repository_spec.rb +1 -1
  1262. data/spec/unit/provider/zypper_repository_spec.rb +82 -39
  1263. data/spec/unit/provider_spec.rb +25 -9
  1264. data/spec/unit/recipe_spec.rb +69 -6
  1265. data/spec/unit/resource/alternatives_spec.rb +120 -0
  1266. data/spec/unit/resource/apt_package_spec.rb +11 -1
  1267. data/spec/unit/resource/apt_preference_spec.rb +1 -19
  1268. data/spec/unit/resource/apt_repository_spec.rb +1 -19
  1269. data/spec/unit/resource/apt_update_spec.rb +1 -19
  1270. data/spec/unit/resource/archive_file_spec.rb +466 -0
  1271. data/spec/unit/resource/bash_spec.rb +1 -1
  1272. data/spec/unit/resource/batch_spec.rb +7 -7
  1273. data/spec/unit/resource/bff_package_spec.rb +1 -1
  1274. data/spec/unit/resource/breakpoint_spec.rb +2 -2
  1275. data/spec/unit/resource/build_essential_spec.rb +36 -2
  1276. data/spec/unit/resource/cab_package_spec.rb +1 -1
  1277. data/spec/unit/resource/chef_client_config_spec.rb +145 -0
  1278. data/spec/unit/resource/chef_client_cron_spec.rb +161 -0
  1279. data/spec/unit/resource/chef_client_launchd_spec.rb +132 -0
  1280. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +186 -0
  1281. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +108 -0
  1282. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +68 -0
  1283. data/spec/unit/resource/chef_gem_spec.rb +1 -4
  1284. data/spec/unit/resource/chef_handler_spec.rb +1 -1
  1285. data/spec/unit/{audit/rspec_formatter_spec.rb → resource/chef_sleep_spec.rb} +10 -9
  1286. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  1287. data/spec/unit/resource/chocolatey_config_spec.rb +2 -7
  1288. data/spec/unit/resource/chocolatey_feature_spec.rb +89 -0
  1289. data/spec/unit/resource/chocolatey_package_spec.rb +18 -3
  1290. data/spec/unit/resource/chocolatey_source_spec.rb +57 -8
  1291. data/spec/unit/resource/conditional_spec.rb +5 -5
  1292. data/spec/unit/resource/cookbook_file_spec.rb +4 -4
  1293. data/spec/unit/resource/cron_access_spec.rb +1 -1
  1294. data/spec/unit/resource/cron_d_spec.rb +34 -40
  1295. data/spec/unit/resource/cron_spec.rb +7 -13
  1296. data/spec/unit/resource/csh_spec.rb +1 -1
  1297. data/spec/unit/resource/directory_spec.rb +1 -1
  1298. data/spec/unit/resource/dmg_package_spec.rb +1 -1
  1299. data/spec/unit/resource/dnf_package_spec.rb +1 -1
  1300. data/spec/unit/resource/dpkg_package_spec.rb +23 -1
  1301. data/spec/unit/resource/dsc_resource_spec.rb +1 -1
  1302. data/spec/unit/resource/dsc_script_spec.rb +1 -1
  1303. data/spec/unit/resource/execute_spec.rb +124 -119
  1304. data/spec/unit/resource/file/verification/json_spec.rb +72 -0
  1305. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +1 -1
  1306. data/spec/unit/resource/file/verification/yaml_spec.rb +67 -0
  1307. data/spec/unit/resource/file/verification_spec.rb +3 -2
  1308. data/spec/unit/resource/file_spec.rb +1 -1
  1309. data/spec/unit/resource/freebsd_package_spec.rb +2 -28
  1310. data/spec/unit/resource/gem_package_spec.rb +4 -4
  1311. data/spec/unit/resource/group_spec.rb +1 -1
  1312. data/spec/unit/resource/helpers/cron_validations_spec.rb +81 -0
  1313. data/spec/unit/resource/homebrew_cask_spec.rb +30 -12
  1314. data/spec/unit/resource/homebrew_package_spec.rb +1 -1
  1315. data/spec/unit/resource/homebrew_tap_spec.rb +1 -1
  1316. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  1317. data/spec/unit/resource/hostname_spec.rb +1 -1
  1318. data/spec/unit/resource/http_request_spec.rb +1 -1
  1319. data/spec/unit/resource/ifconfig_spec.rb +2 -10
  1320. data/spec/unit/resource/inspec_input_spec.rb +300 -0
  1321. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  1322. data/spec/unit/resource/inspec_waiver_spec.rb +312 -0
  1323. data/spec/unit/resource/ips_package_spec.rb +1 -1
  1324. data/spec/unit/resource/kernel_module_spec.rb +4 -7
  1325. data/spec/unit/resource/ksh_spec.rb +1 -1
  1326. data/spec/unit/resource/launchd_spec.rb +8 -0
  1327. data/spec/unit/resource/link_spec.rb +1 -5
  1328. data/spec/unit/resource/locale_spec.rb +154 -25
  1329. data/spec/unit/resource/log_spec.rb +1 -1
  1330. data/spec/unit/resource/macos_user_defaults_spec.rb +50 -9
  1331. data/spec/unit/{knife/osc_user_list_spec.rb → resource/macosx_service.rb} +14 -14
  1332. data/spec/unit/resource/macports_package_spec.rb +1 -1
  1333. data/spec/unit/resource/mount_spec.rb +29 -6
  1334. data/spec/unit/resource/msu_package_spec.rb +5 -1
  1335. data/spec/unit/{knife/user_list_spec.rb → resource/notify_group_spec.rb} +11 -13
  1336. data/spec/unit/resource/ohai_hint_spec.rb +1 -1
  1337. data/spec/unit/resource/ohai_spec.rb +56 -6
  1338. data/spec/unit/resource/openbsd_package_spec.rb +1 -1
  1339. data/spec/unit/resource/{openssl_dhparam.rb → openssl_dhparam_spec.rb} +1 -1
  1340. data/spec/unit/resource/openssl_ec_private_key_spec.rb +1 -1
  1341. data/spec/unit/resource/openssl_ec_public_key_spec.rb +1 -1
  1342. data/spec/unit/resource/openssl_rsa_private_key_spec.rb +1 -1
  1343. data/spec/unit/resource/openssl_rsa_public_key_spec.rb +1 -1
  1344. data/spec/unit/resource/openssl_x509_certificate_spec.rb +1 -1
  1345. data/spec/unit/resource/openssl_x509_crl_spec.rb +1 -1
  1346. data/spec/unit/resource/openssl_x509_request.rb +1 -1
  1347. data/spec/unit/resource/osx_profile_spec.rb +299 -0
  1348. data/spec/unit/resource/package_spec.rb +1 -11
  1349. data/spec/unit/resource/pacman_package_spec.rb +1 -1
  1350. data/spec/unit/resource/paludis_package_spec.rb +1 -1
  1351. data/spec/unit/resource/perl_spec.rb +1 -1
  1352. data/spec/unit/resource/plist_spec.rb +130 -0
  1353. data/spec/unit/resource/portage_package_spec.rb +1 -1
  1354. data/spec/unit/resource/powershell_package_source_spec.rb +64 -63
  1355. data/spec/unit/resource/powershell_package_spec.rb +1 -1
  1356. data/spec/unit/resource/powershell_script_spec.rb +15 -91
  1357. data/spec/unit/resource/python_spec.rb +1 -1
  1358. data/spec/unit/resource/reboot_spec.rb +1 -1
  1359. data/spec/unit/resource/registry_key_spec.rb +11 -11
  1360. data/spec/unit/resource/remote_directory_spec.rb +23 -10
  1361. data/spec/unit/resource/remote_file_spec.rb +6 -6
  1362. data/spec/unit/resource/resource_notification_spec.rb +1 -1
  1363. data/spec/unit/resource/rest_resource_spec.rb +381 -0
  1364. data/spec/unit/resource/rhsm_errata_level_spec.rb +1 -1
  1365. data/spec/unit/resource/rhsm_errata_spec.rb +1 -1
  1366. data/spec/unit/resource/rhsm_register_spec.rb +120 -16
  1367. data/spec/unit/resource/rhsm_repo_spec.rb +7 -1
  1368. data/spec/unit/resource/rhsm_subscription_spec.rb +51 -4
  1369. data/spec/unit/resource/route_spec.rb +7 -2
  1370. data/spec/unit/resource/ruby_block_spec.rb +1 -1
  1371. data/spec/unit/resource/ruby_spec.rb +1 -1
  1372. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +51 -3
  1373. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +2 -53
  1374. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +3 -4
  1375. data/spec/unit/resource/script_spec.rb +7 -2
  1376. data/spec/unit/resource/selinux_boolean_spec.rb +92 -0
  1377. data/spec/unit/resource/selinux_fcontext_spec.rb +65 -0
  1378. data/spec/unit/resource/selinux_install_spec.rb +60 -0
  1379. data/spec/unit/resource/selinux_module_spec.rb +55 -0
  1380. data/spec/unit/resource/selinux_permissive_spec.rb +39 -0
  1381. data/spec/unit/resource/selinux_port_spec.rb +42 -0
  1382. data/spec/unit/resource/selinux_state_spec.rb +46 -0
  1383. data/spec/unit/resource/service_spec.rb +82 -85
  1384. data/spec/unit/resource/smartos_package_spec.rb +1 -1
  1385. data/spec/unit/resource/snap_package_spec.rb +60 -0
  1386. data/spec/unit/resource/solaris_package_spec.rb +9 -11
  1387. data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +1 -6
  1388. data/spec/unit/resource/sudo_spec.rb +1 -1
  1389. data/spec/unit/resource/swap_file_spec.rb +1 -1
  1390. data/spec/unit/resource/sysctl_spec.rb +23 -1
  1391. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  1392. data/spec/unit/resource/template_spec.rb +1 -1
  1393. data/spec/unit/resource/timezone_spec.rb +102 -0
  1394. data/spec/unit/resource/user/linux_user_spec.rb +42 -0
  1395. data/spec/{functional/knife/configure_spec.rb → unit/resource/user/windows_user_spec.rb} +13 -10
  1396. data/spec/unit/resource/user_spec.rb +22 -23
  1397. data/spec/unit/resource/user_ulimit_spec.rb +66 -0
  1398. data/spec/unit/resource/windows_ad_join_spec.rb +5 -1
  1399. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  1400. data/spec/unit/resource/windows_auto_run_spec.rb +2 -2
  1401. data/spec/unit/resource/{windows_certificate.rb → windows_certificate_spec.rb} +13 -1
  1402. data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
  1403. data/spec/unit/resource/windows_defender_spec.rb +71 -0
  1404. data/spec/unit/resource/windows_dfs_folder_spec.rb +39 -0
  1405. data/spec/unit/resource/windows_dfs_namespace_spec.rb +39 -0
  1406. data/spec/unit/{knife/client_list_spec.rb → resource/windows_dfs_server_spec.rb} +12 -12
  1407. data/spec/unit/resource/windows_dns_record_spec.rb +55 -0
  1408. data/spec/unit/resource/windows_dns_zone_spec.rb +51 -0
  1409. data/spec/unit/resource/{windows_feature_dism.rb → windows_feature_dism_spec.rb} +3 -18
  1410. data/spec/unit/resource/{windows_feature_powershell.rb → windows_feature_powershell_spec.rb} +28 -17
  1411. data/spec/unit/resource/{windows_feature.rb → windows_feature_spec.rb} +1 -1
  1412. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  1413. data/spec/unit/resource/windows_firewall_rule_spec.rb +156 -47
  1414. data/spec/unit/resource/windows_font_spec.rb +1 -1
  1415. data/spec/unit/resource/windows_package_spec.rb +27 -7
  1416. data/spec/unit/resource/windows_pagefile_spec.rb +5 -10
  1417. data/spec/unit/resource/windows_path_spec.rb +1 -1
  1418. data/spec/unit/resource/windows_printer_port_spec.rb +1 -1
  1419. data/spec/unit/resource/windows_printer_spec.rb +1 -1
  1420. data/spec/unit/resource/windows_service_spec.rb +43 -14
  1421. data/spec/unit/resource/{windows_share.rb → windows_share_spec.rb} +10 -1
  1422. data/spec/unit/resource/windows_shortcut_spec.rb +1 -1
  1423. data/spec/unit/resource/windows_task_spec.rb +6 -6
  1424. data/spec/unit/resource/windows_uac_spec.rb +50 -0
  1425. data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
  1426. data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
  1427. data/spec/unit/resource/windows_workgroup_spec.rb +3 -3
  1428. data/spec/unit/resource/yum_package_spec.rb +1 -1
  1429. data/spec/unit/resource/yum_repository_spec.rb +26 -22
  1430. data/spec/unit/resource/zypper_package_spec.rb +1 -1
  1431. data/spec/unit/resource/zypper_repository_spec.rb +2 -2
  1432. data/spec/unit/resource_collection/resource_list_spec.rb +1 -1
  1433. data/spec/unit/resource_collection/resource_set_spec.rb +1 -1
  1434. data/spec/unit/resource_collection_spec.rb +1 -1
  1435. data/spec/unit/resource_definition_spec.rb +1 -1
  1436. data/spec/unit/resource_inspector_spec.rb +11 -6
  1437. data/spec/unit/resource_reporter_spec.rb +227 -203
  1438. data/spec/unit/resource_spec.rb +219 -16
  1439. data/spec/unit/role_spec.rb +33 -28
  1440. data/spec/unit/run_context/child_run_context_spec.rb +1 -8
  1441. data/spec/unit/run_context/cookbook_compiler_spec.rb +14 -2
  1442. data/spec/unit/run_context_spec.rb +18 -2
  1443. data/spec/unit/run_list/run_list_expansion_spec.rb +1 -1
  1444. data/spec/unit/run_list/run_list_item_spec.rb +1 -1
  1445. data/spec/unit/run_list/versioned_recipe_list_spec.rb +2 -2
  1446. data/spec/unit/run_list_spec.rb +1 -1
  1447. data/spec/unit/run_lock_spec.rb +7 -3
  1448. data/spec/unit/run_status_spec.rb +1 -1
  1449. data/spec/unit/runner_spec.rb +2 -3
  1450. data/spec/unit/scan_access_control_spec.rb +2 -2
  1451. data/spec/unit/search/query_spec.rb +10 -3
  1452. data/spec/unit/secret_fetcher/akeyless_vault_spec.rb +37 -0
  1453. data/spec/unit/secret_fetcher/aws_secrets_manager_spec.rb +70 -0
  1454. data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +149 -0
  1455. data/spec/unit/secret_fetcher/hashi_vault_spec.rb +126 -0
  1456. data/spec/unit/secret_fetcher_spec.rb +82 -0
  1457. data/spec/unit/server_api_spec.rb +43 -16
  1458. data/spec/unit/server_api_versions_spec.rb +1 -1
  1459. data/spec/unit/shell/model_wrapper_spec.rb +1 -1
  1460. data/spec/unit/shell/shell_ext_spec.rb +47 -4
  1461. data/spec/unit/shell/shell_session_spec.rb +35 -64
  1462. data/spec/unit/shell_spec.rb +19 -22
  1463. data/spec/unit/train_transport_spec.rb +85 -0
  1464. data/spec/unit/user_spec.rb +2 -2
  1465. data/spec/unit/user_v1_spec.rb +16 -14
  1466. data/spec/unit/util/backup_spec.rb +3 -3
  1467. data/spec/unit/util/diff_spec.rb +3 -17
  1468. data/spec/unit/util/dsc/configuration_generator_spec.rb +81 -2
  1469. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +1 -1
  1470. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +28 -36
  1471. data/spec/unit/util/dsc/resource_store.rb +2 -2
  1472. data/spec/unit/util/file_edit_spec.rb +2 -2
  1473. data/spec/unit/util/powershell/ps_credential_spec.rb +3 -3
  1474. data/spec/unit/util/selinux_spec.rb +7 -4
  1475. data/spec/unit/util/threaded_job_queue_spec.rb +10 -1
  1476. data/spec/unit/util/windows/logon_session_spec.rb +2 -2
  1477. data/spec/unit/version_class_spec.rb +1 -1
  1478. data/spec/unit/version_constraint_spec.rb +1 -1
  1479. data/spec/unit/win32/error_spec.rb +2 -2
  1480. data/spec/unit/win32/link_spec.rb +5 -5
  1481. data/spec/unit/win32/registry_spec.rb +5 -5
  1482. data/spec/unit/win32/security_spec.rb +6 -5
  1483. data/tasks/rspec.rb +23 -26
  1484. metadata +469 -584
  1485. data/bin/chef-apply +0 -24
  1486. data/bin/chef-client +0 -25
  1487. data/bin/chef-resource-inspector +0 -26
  1488. data/bin/chef-shell +0 -31
  1489. data/bin/chef-solo +0 -24
  1490. data/bin/knife +0 -24
  1491. data/chef-universal-mingw32.gemspec +0 -24
  1492. data/lib/chef/application/knife.rb +0 -221
  1493. data/lib/chef/application/windows_service.rb +0 -337
  1494. data/lib/chef/application/windows_service_manager.rb +0 -204
  1495. data/lib/chef/audit/audit_event_proxy.rb +0 -93
  1496. data/lib/chef/audit/audit_reporter.rb +0 -176
  1497. data/lib/chef/audit/control_group_data.rb +0 -145
  1498. data/lib/chef/audit/rspec_formatter.rb +0 -37
  1499. data/lib/chef/audit/runner.rb +0 -196
  1500. data/lib/chef/chef_fs/knife.rb +0 -161
  1501. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  1502. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -277
  1503. data/lib/chef/chef_fs/parallelizer.rb +0 -103
  1504. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -241
  1505. data/lib/chef/data_collector/messages/helpers.rb +0 -159
  1506. data/lib/chef/data_collector/messages.rb +0 -100
  1507. data/lib/chef/data_collector/resource_report.rb +0 -123
  1508. data/lib/chef/dsl/audit.rb +0 -51
  1509. data/lib/chef/dsl/chef_provisioning.rb +0 -57
  1510. data/lib/chef/dsl/core.rb +0 -52
  1511. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -159
  1512. data/lib/chef/knife/bootstrap/client_builder.rb +0 -208
  1513. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  1514. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -243
  1515. data/lib/chef/knife/bootstrap.rb +0 -525
  1516. data/lib/chef/knife/client_bulk_delete.rb +0 -103
  1517. data/lib/chef/knife/client_create.rb +0 -110
  1518. data/lib/chef/knife/client_delete.rb +0 -62
  1519. data/lib/chef/knife/client_edit.rb +0 -52
  1520. data/lib/chef/knife/client_key_create.rb +0 -70
  1521. data/lib/chef/knife/client_key_delete.rb +0 -77
  1522. data/lib/chef/knife/client_key_edit.rb +0 -80
  1523. data/lib/chef/knife/client_key_list.rb +0 -70
  1524. data/lib/chef/knife/client_key_show.rb +0 -77
  1525. data/lib/chef/knife/client_list.rb +0 -41
  1526. data/lib/chef/knife/client_reregister.rb +0 -58
  1527. data/lib/chef/knife/client_show.rb +0 -48
  1528. data/lib/chef/knife/config_get.rb +0 -127
  1529. data/lib/chef/knife/config_get_profile.rb +0 -37
  1530. data/lib/chef/knife/config_list_profiles.rb +0 -121
  1531. data/lib/chef/knife/config_use_profile.rb +0 -50
  1532. data/lib/chef/knife/configure.rb +0 -147
  1533. data/lib/chef/knife/configure_client.rb +0 -48
  1534. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  1535. data/lib/chef/knife/cookbook_delete.rb +0 -151
  1536. data/lib/chef/knife/cookbook_download.rb +0 -142
  1537. data/lib/chef/knife/cookbook_list.rb +0 -47
  1538. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  1539. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -43
  1540. data/lib/chef/knife/cookbook_show.rb +0 -98
  1541. data/lib/chef/knife/cookbook_site_download.rb +0 -40
  1542. data/lib/chef/knife/cookbook_site_install.rb +0 -40
  1543. data/lib/chef/knife/cookbook_site_list.rb +0 -40
  1544. data/lib/chef/knife/cookbook_site_search.rb +0 -40
  1545. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  1546. data/lib/chef/knife/cookbook_site_show.rb +0 -40
  1547. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  1548. data/lib/chef/knife/cookbook_test.rb +0 -95
  1549. data/lib/chef/knife/cookbook_upload.rb +0 -308
  1550. data/lib/chef/knife/core/bootstrap_context.rb +0 -273
  1551. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  1552. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  1553. data/lib/chef/knife/core/generic_presenter.rb +0 -231
  1554. data/lib/chef/knife/core/hashed_command_loader.rb +0 -99
  1555. data/lib/chef/knife/core/node_editor.rb +0 -130
  1556. data/lib/chef/knife/core/node_presenter.rb +0 -158
  1557. data/lib/chef/knife/core/object_loader.rb +0 -115
  1558. data/lib/chef/knife/core/status_presenter.rb +0 -172
  1559. data/lib/chef/knife/core/subcommand_loader.rb +0 -183
  1560. data/lib/chef/knife/core/text_formatter.rb +0 -85
  1561. data/lib/chef/knife/core/ui.rb +0 -286
  1562. data/lib/chef/knife/data_bag_create.rb +0 -80
  1563. data/lib/chef/knife/data_bag_delete.rb +0 -49
  1564. data/lib/chef/knife/data_bag_edit.rb +0 -74
  1565. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  1566. data/lib/chef/knife/data_bag_secret_options.rb +0 -142
  1567. data/lib/chef/knife/data_bag_show.rb +0 -69
  1568. data/lib/chef/knife/delete.rb +0 -125
  1569. data/lib/chef/knife/deps.rb +0 -154
  1570. data/lib/chef/knife/diff.rb +0 -84
  1571. data/lib/chef/knife/download.rb +0 -84
  1572. data/lib/chef/knife/edit.rb +0 -88
  1573. data/lib/chef/knife/environment_compare.rb +0 -127
  1574. data/lib/chef/knife/environment_create.rb +0 -52
  1575. data/lib/chef/knife/environment_delete.rb +0 -44
  1576. data/lib/chef/knife/environment_from_file.rb +0 -84
  1577. data/lib/chef/knife/environment_list.rb +0 -41
  1578. data/lib/chef/knife/environment_show.rb +0 -47
  1579. data/lib/chef/knife/exec.rb +0 -87
  1580. data/lib/chef/knife/key_create.rb +0 -112
  1581. data/lib/chef/knife/key_create_base.rb +0 -50
  1582. data/lib/chef/knife/key_delete.rb +0 -55
  1583. data/lib/chef/knife/key_edit.rb +0 -118
  1584. data/lib/chef/knife/key_edit_base.rb +0 -55
  1585. data/lib/chef/knife/key_list.rb +0 -88
  1586. data/lib/chef/knife/key_list_base.rb +0 -45
  1587. data/lib/chef/knife/key_show.rb +0 -53
  1588. data/lib/chef/knife/list.rb +0 -172
  1589. data/lib/chef/knife/node_bulk_delete.rb +0 -74
  1590. data/lib/chef/knife/node_create.rb +0 -47
  1591. data/lib/chef/knife/node_delete.rb +0 -46
  1592. data/lib/chef/knife/node_edit.rb +0 -70
  1593. data/lib/chef/knife/node_environment_set.rb +0 -54
  1594. data/lib/chef/knife/node_list.rb +0 -44
  1595. data/lib/chef/knife/node_policy_set.rb +0 -79
  1596. data/lib/chef/knife/node_run_list_add.rb +0 -104
  1597. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  1598. data/lib/chef/knife/node_run_list_set.rb +0 -66
  1599. data/lib/chef/knife/node_show.rb +0 -61
  1600. data/lib/chef/knife/null.rb +0 -10
  1601. data/lib/chef/knife/osc_user_create.rb +0 -97
  1602. data/lib/chef/knife/osc_user_delete.rb +0 -51
  1603. data/lib/chef/knife/osc_user_edit.rb +0 -58
  1604. data/lib/chef/knife/osc_user_list.rb +0 -47
  1605. data/lib/chef/knife/osc_user_reregister.rb +0 -64
  1606. data/lib/chef/knife/osc_user_show.rb +0 -53
  1607. data/lib/chef/knife/raw.rb +0 -124
  1608. data/lib/chef/knife/rehash.rb +0 -65
  1609. data/lib/chef/knife/role_bulk_delete.rb +0 -65
  1610. data/lib/chef/knife/role_create.rb +0 -53
  1611. data/lib/chef/knife/role_delete.rb +0 -46
  1612. data/lib/chef/knife/role_edit.rb +0 -45
  1613. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  1614. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  1615. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  1616. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  1617. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  1618. data/lib/chef/knife/role_from_file.rb +0 -51
  1619. data/lib/chef/knife/role_list.rb +0 -42
  1620. data/lib/chef/knife/role_run_list_add.rb +0 -87
  1621. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  1622. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  1623. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  1624. data/lib/chef/knife/role_run_list_set.rb +0 -69
  1625. data/lib/chef/knife/role_show.rb +0 -48
  1626. data/lib/chef/knife/search.rb +0 -194
  1627. data/lib/chef/knife/serve.rb +0 -64
  1628. data/lib/chef/knife/show.rb +0 -72
  1629. data/lib/chef/knife/ssh.rb +0 -640
  1630. data/lib/chef/knife/ssl_check.rb +0 -283
  1631. data/lib/chef/knife/ssl_fetch.rb +0 -161
  1632. data/lib/chef/knife/status.rb +0 -110
  1633. data/lib/chef/knife/supermarket_download.rb +0 -122
  1634. data/lib/chef/knife/supermarket_install.rb +0 -193
  1635. data/lib/chef/knife/supermarket_list.rb +0 -65
  1636. data/lib/chef/knife/supermarket_search.rb +0 -53
  1637. data/lib/chef/knife/supermarket_share.rb +0 -166
  1638. data/lib/chef/knife/supermarket_show.rb +0 -67
  1639. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  1640. data/lib/chef/knife/tag_create.rb +0 -52
  1641. data/lib/chef/knife/tag_delete.rb +0 -60
  1642. data/lib/chef/knife/tag_list.rb +0 -47
  1643. data/lib/chef/knife/upload.rb +0 -86
  1644. data/lib/chef/knife/user_create.rb +0 -151
  1645. data/lib/chef/knife/user_delete.rb +0 -96
  1646. data/lib/chef/knife/user_edit.rb +0 -82
  1647. data/lib/chef/knife/user_key_create.rb +0 -70
  1648. data/lib/chef/knife/user_key_delete.rb +0 -77
  1649. data/lib/chef/knife/user_key_edit.rb +0 -80
  1650. data/lib/chef/knife/user_key_list.rb +0 -70
  1651. data/lib/chef/knife/user_key_show.rb +0 -77
  1652. data/lib/chef/knife/user_list.rb +0 -44
  1653. data/lib/chef/knife/user_reregister.rb +0 -90
  1654. data/lib/chef/knife/user_show.rb +0 -79
  1655. data/lib/chef/knife/xargs.rb +0 -282
  1656. data/lib/chef/knife.rb +0 -630
  1657. data/lib/chef/monkey_patches/net_http.rb +0 -64
  1658. data/lib/chef/nil_argument.rb +0 -3
  1659. data/lib/chef/provider/apt_preference.rb +0 -94
  1660. data/lib/chef/provider/apt_repository.rb +0 -360
  1661. data/lib/chef/provider/apt_update.rb +0 -80
  1662. data/lib/chef/provider/group/suse.rb +0 -83
  1663. data/lib/chef/provider/log.rb +0 -43
  1664. data/lib/chef/provider/mdadm.rb +0 -85
  1665. data/lib/chef/provider/ohai.rb +0 -45
  1666. data/lib/chef/provider/osx_profile.rb +0 -251
  1667. data/lib/chef/provider/package/freebsd/pkg.rb +0 -114
  1668. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  1669. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  1670. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  1671. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  1672. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  1673. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  1674. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  1675. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  1676. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  1677. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  1678. data/lib/chef/provider/reboot.rb +0 -78
  1679. data/lib/chef/provider/user/useradd.rb +0 -161
  1680. data/lib/chef/provider/windows_env.rb +0 -207
  1681. data/lib/chef/provider/windows_path.rb +0 -61
  1682. data/lib/chef/provider/windows_task.rb +0 -635
  1683. data/lib/chef/resource/cron.rb +0 -174
  1684. data/lib/chef/resource/cron_d.rb +0 -238
  1685. data/lib/chef/resource/git.rb +0 -35
  1686. data/lib/chef/resource/scm.rb +0 -75
  1687. data/lib/chef/resource/subversion.rb +0 -55
  1688. data/lib/chef/util/powershell/cmdlet.rb +0 -173
  1689. data/lib/chef/util/powershell/cmdlet_result.rb +0 -61
  1690. data/spec/data/mac_users/10.7-8.plist.xml +0 -559
  1691. data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
  1692. data/spec/data/mac_users/10.7.plist.xml +0 -559
  1693. data/spec/data/mac_users/10.7.shadow.xml +0 -11
  1694. data/spec/data/mac_users/10.8.plist.xml +0 -559
  1695. data/spec/data/mac_users/10.8.shadow.xml +0 -21
  1696. data/spec/functional/audit/rspec_formatter_spec.rb +0 -54
  1697. data/spec/functional/audit/runner_spec.rb +0 -121
  1698. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  1699. data/spec/functional/knife/exec_spec.rb +0 -55
  1700. data/spec/functional/knife/rehash_spec.rb +0 -39
  1701. data/spec/functional/knife/smoke_test.rb +0 -42
  1702. data/spec/functional/knife/ssh_spec.rb +0 -359
  1703. data/spec/functional/resource/base.rb +0 -28
  1704. data/spec/functional/resource/windows_service_spec.rb +0 -102
  1705. data/spec/functional/util/powershell/cmdlet_spec.rb +0 -111
  1706. data/spec/functional/win32/service_manager_spec.rb +0 -220
  1707. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -556
  1708. data/spec/integration/knife/chef_repo_path_spec.rb +0 -961
  1709. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -199
  1710. data/spec/integration/knife/chefignore_spec.rb +0 -300
  1711. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -130
  1712. data/spec/integration/knife/client_create_spec.rb +0 -69
  1713. data/spec/integration/knife/client_delete_spec.rb +0 -63
  1714. data/spec/integration/knife/client_key_create_spec.rb +0 -65
  1715. data/spec/integration/knife/client_key_delete_spec.rb +0 -42
  1716. data/spec/integration/knife/client_key_list_spec.rb +0 -60
  1717. data/spec/integration/knife/client_key_show_spec.rb +0 -44
  1718. data/spec/integration/knife/client_list_spec.rb +0 -48
  1719. data/spec/integration/knife/client_show_spec.rb +0 -36
  1720. data/spec/integration/knife/common_options_spec.rb +0 -173
  1721. data/spec/integration/knife/config_get_profile_spec.rb +0 -112
  1722. data/spec/integration/knife/config_get_spec.rb +0 -190
  1723. data/spec/integration/knife/config_list_profiles_spec.rb +0 -189
  1724. data/spec/integration/knife/config_use_profile_spec.rb +0 -100
  1725. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -112
  1726. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -64
  1727. data/spec/integration/knife/cookbook_download_spec.rb +0 -71
  1728. data/spec/integration/knife/cookbook_list_spec.rb +0 -54
  1729. data/spec/integration/knife/cookbook_show_spec.rb +0 -148
  1730. data/spec/integration/knife/cookbook_upload_spec.rb +0 -90
  1731. data/spec/integration/knife/data_bag_create_spec.rb +0 -124
  1732. data/spec/integration/knife/data_bag_delete_spec.rb +0 -58
  1733. data/spec/integration/knife/data_bag_edit_spec.rb +0 -104
  1734. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -115
  1735. data/spec/integration/knife/data_bag_list_spec.rb +0 -43
  1736. data/spec/integration/knife/data_bag_show_spec.rb +0 -94
  1737. data/spec/integration/knife/delete_spec.rb +0 -1017
  1738. data/spec/integration/knife/deps_spec.rb +0 -702
  1739. data/spec/integration/knife/diff_spec.rb +0 -602
  1740. data/spec/integration/knife/download_spec.rb +0 -1333
  1741. data/spec/integration/knife/environment_compare_spec.rb +0 -74
  1742. data/spec/integration/knife/environment_create_spec.rb +0 -40
  1743. data/spec/integration/knife/environment_delete_spec.rb +0 -36
  1744. data/spec/integration/knife/environment_from_file_spec.rb +0 -115
  1745. data/spec/integration/knife/environment_list_spec.rb +0 -41
  1746. data/spec/integration/knife/environment_show_spec.rb +0 -76
  1747. data/spec/integration/knife/list_spec.rb +0 -1059
  1748. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -51
  1749. data/spec/integration/knife/node_create_spec.rb +0 -46
  1750. data/spec/integration/knife/node_delete_spec.rb +0 -47
  1751. data/spec/integration/knife/node_environment_set_spec.rb +0 -45
  1752. data/spec/integration/knife/node_from_file_spec.rb +0 -58
  1753. data/spec/integration/knife/node_list_spec.rb +0 -44
  1754. data/spec/integration/knife/node_run_list_add_spec.rb +0 -53
  1755. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -35
  1756. data/spec/integration/knife/node_run_list_set_spec.rb +0 -40
  1757. data/spec/integration/knife/node_show_spec.rb +0 -35
  1758. data/spec/integration/knife/raw_spec.rb +0 -248
  1759. data/spec/integration/knife/redirection_spec.rb +0 -54
  1760. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -51
  1761. data/spec/integration/knife/role_create_spec.rb +0 -40
  1762. data/spec/integration/knife/role_delete_spec.rb +0 -47
  1763. data/spec/integration/knife/role_from_file_spec.rb +0 -95
  1764. data/spec/integration/knife/role_list_spec.rb +0 -44
  1765. data/spec/integration/knife/role_show_spec.rb +0 -50
  1766. data/spec/integration/knife/search_node_spec.rb +0 -39
  1767. data/spec/integration/knife/serve_spec.rb +0 -93
  1768. data/spec/integration/knife/show_spec.rb +0 -167
  1769. data/spec/integration/knife/upload_spec.rb +0 -1540
  1770. data/spec/scripts/ssl-serve.rb +0 -47
  1771. data/spec/support/mock/constant.rb +0 -52
  1772. data/spec/support/shared/context/client.rb +0 -306
  1773. data/spec/support/shared/examples/client.rb +0 -104
  1774. data/spec/support/shared/functional/win32_service.rb +0 -57
  1775. data/spec/support/shared/integration/app_server_support.rb +0 -39
  1776. data/spec/unit/application/knife_spec.rb +0 -228
  1777. data/spec/unit/audit/audit_event_proxy_spec.rb +0 -325
  1778. data/spec/unit/audit/audit_reporter_spec.rb +0 -444
  1779. data/spec/unit/audit/control_group_data_spec.rb +0 -487
  1780. data/spec/unit/audit/logger_spec.rb +0 -42
  1781. data/spec/unit/audit/runner_spec.rb +0 -144
  1782. data/spec/unit/chef_fs/parallelizer.rb +0 -477
  1783. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  1784. data/spec/unit/data_collector/messages/helpers_spec.rb +0 -202
  1785. data/spec/unit/data_collector/messages_spec.rb +0 -329
  1786. data/spec/unit/data_collector/resource_report_spec.rb +0 -145
  1787. data/spec/unit/dsl/audit_spec.rb +0 -43
  1788. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  1789. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  1790. data/spec/unit/knife/bootstrap_spec.rb +0 -976
  1791. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  1792. data/spec/unit/knife/client_create_spec.rb +0 -186
  1793. data/spec/unit/knife/client_delete_spec.rb +0 -99
  1794. data/spec/unit/knife/client_edit_spec.rb +0 -53
  1795. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  1796. data/spec/unit/knife/client_show_spec.rb +0 -52
  1797. data/spec/unit/knife/configure_client_spec.rb +0 -81
  1798. data/spec/unit/knife/configure_spec.rb +0 -190
  1799. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  1800. data/spec/unit/knife/cookbook_create_spec.rb +0 -42
  1801. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  1802. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  1803. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  1804. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -65
  1805. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  1806. data/spec/unit/knife/cookbook_show_spec.rb +0 -254
  1807. data/spec/unit/knife/cookbook_test_spec.rb +0 -84
  1808. data/spec/unit/knife/cookbook_upload_spec.rb +0 -333
  1809. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -324
  1810. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  1811. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  1812. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  1813. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  1814. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  1815. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  1816. data/spec/unit/knife/core/ui_spec.rb +0 -639
  1817. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  1818. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  1819. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  1820. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -165
  1821. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  1822. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  1823. data/spec/unit/knife/environment_create_spec.rb +0 -91
  1824. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  1825. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  1826. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  1827. data/spec/unit/knife/environment_list_spec.rb +0 -54
  1828. data/spec/unit/knife/environment_show_spec.rb +0 -52
  1829. data/spec/unit/knife/key_create_spec.rb +0 -223
  1830. data/spec/unit/knife/key_delete_spec.rb +0 -133
  1831. data/spec/unit/knife/key_edit_spec.rb +0 -264
  1832. data/spec/unit/knife/key_helper.rb +0 -74
  1833. data/spec/unit/knife/key_list_spec.rb +0 -216
  1834. data/spec/unit/knife/key_show_spec.rb +0 -126
  1835. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  1836. data/spec/unit/knife/node_delete_spec.rb +0 -77
  1837. data/spec/unit/knife/node_edit_spec.rb +0 -116
  1838. data/spec/unit/knife/node_environment_set_spec.rb +0 -56
  1839. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  1840. data/spec/unit/knife/node_list_spec.rb +0 -62
  1841. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  1842. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  1843. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  1844. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  1845. data/spec/unit/knife/node_show_spec.rb +0 -65
  1846. data/spec/unit/knife/osc_user_create_spec.rb +0 -93
  1847. data/spec/unit/knife/osc_user_delete_spec.rb +0 -44
  1848. data/spec/unit/knife/osc_user_edit_spec.rb +0 -52
  1849. data/spec/unit/knife/osc_user_reregister_spec.rb +0 -58
  1850. data/spec/unit/knife/osc_user_show_spec.rb +0 -46
  1851. data/spec/unit/knife/raw_spec.rb +0 -43
  1852. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  1853. data/spec/unit/knife/role_create_spec.rb +0 -80
  1854. data/spec/unit/knife/role_delete_spec.rb +0 -67
  1855. data/spec/unit/knife/role_edit_spec.rb +0 -77
  1856. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  1857. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  1858. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  1859. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  1860. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  1861. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  1862. data/spec/unit/knife/role_list_spec.rb +0 -54
  1863. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  1864. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  1865. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  1866. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  1867. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  1868. data/spec/unit/knife/role_show_spec.rb +0 -59
  1869. data/spec/unit/knife/ssh_spec.rb +0 -506
  1870. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  1871. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  1872. data/spec/unit/knife/status_spec.rb +0 -112
  1873. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  1874. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  1875. data/spec/unit/knife/supermarket_share_spec.rb +0 -209
  1876. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  1877. data/spec/unit/knife/tag_create_spec.rb +0 -23
  1878. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  1879. data/spec/unit/knife/tag_list_spec.rb +0 -23
  1880. data/spec/unit/knife/user_create_spec.rb +0 -214
  1881. data/spec/unit/knife/user_delete_spec.rb +0 -65
  1882. data/spec/unit/knife/user_edit_spec.rb +0 -66
  1883. data/spec/unit/knife/user_reregister_spec.rb +0 -74
  1884. data/spec/unit/knife/user_show_spec.rb +0 -65
  1885. data/spec/unit/knife_spec.rb +0 -589
  1886. data/spec/unit/mash_spec.rb +0 -51
  1887. data/spec/unit/monkey_patches/uri_spec.rb +0 -34
  1888. data/spec/unit/provider/group/suse_spec.rb +0 -90
  1889. data/spec/unit/provider/ohai_spec.rb +0 -84
  1890. data/spec/unit/provider/osx_profile_spec.rb +0 -255
  1891. data/spec/unit/provider/package/freebsd/pkg_spec.rb +0 -274
  1892. data/spec/unit/provider/user/dscl_spec.rb +0 -920
  1893. data/spec/unit/provider_resolver_spec.rb +0 -923
  1894. data/spec/unit/resource/timezone.rb +0 -39
  1895. data/spec/unit/util/powershell/cmdlet_spec.rb +0 -106
  1896. data/spec/unit/windows_service_spec.rb +0 -118
  1897. data/tasks/announce.rb +0 -51
  1898. data/tasks/bin/run_external_test +0 -29
  1899. data/tasks/dependencies.rb +0 -58
  1900. data/tasks/templates/release.md.erb +0 -34
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2016-2019, Chef Software Inc.
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,18 +16,22 @@
16
16
  #
17
17
 
18
18
  require "spec_helper"
19
- require "functional/resource/base"
20
19
  require "chef/mixin/shell_out"
21
20
 
22
- # run this test only for following platforms.
23
- exclude_test = !(%w{rhel fedora amazon}.include?(ohai[:platform_family]) && File.exist?("/usr/bin/dnf"))
24
- describe Chef::Resource::RpmPackage, :requires_root, external: exclude_test do
21
+ # test on any fedora-ish platform with dnf
22
+ exclude_test = !(%w{rhel amazon fedora}.include?(OHAI_SYSTEM[:platform_family]) && File.exist?("/usr/bin/dnf"))
23
+ describe Chef::Resource::DnfPackage, :requires_root, external: exclude_test do
24
+ include RecipeDSLHelper
25
25
  include Chef::Mixin::ShellOut
26
26
 
27
+ # NOTE: every single test here either needs to explicitly call flush_cache or needs to explicitly
28
+ # call preinstall (which explicitly calls flush_cache). It is your responsibility to do one or the
29
+ # other in order to minimize calling flush_cache a half dozen times per test.
30
+
27
31
  def flush_cache
28
32
  # needed on at least fc23/fc24 sometimes to deal with the dnf cache getting out of sync with the rpm db
29
33
  FileUtils.rm_f "/var/cache/dnf/@System.solv"
30
- Chef::Resource::DnfPackage.new("shouldnt-matter", run_context).run_action(:flush_cache)
34
+ Chef::Provider::Package::Dnf::PythonHelper.instance.reap
31
35
  end
32
36
 
33
37
  def preinstall(*rpms)
@@ -37,7 +41,17 @@ describe Chef::Resource::RpmPackage, :requires_root, external: exclude_test do
37
41
  flush_cache
38
42
  end
39
43
 
44
+ def expect_matching_installed_version(version)
45
+ expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(version)
46
+ end
47
+
48
+ before(:all) do
49
+ shell_out!("dnf -y install dnf-plugins-core")
50
+ end
51
+
40
52
  before(:each) do
53
+ # force errors to fail and not retry
54
+ ENV["DNF_HELPER_NO_RETRIES"] = "true"
41
55
  File.open("/etc/yum.repos.d/chef-dnf-localtesting.repo", "w+") do |f|
42
56
  f.write <<~EOF
43
57
  [chef-dnf-localtesting]
@@ -47,108 +61,303 @@ describe Chef::Resource::RpmPackage, :requires_root, external: exclude_test do
47
61
  gpgcheck=0
48
62
  EOF
49
63
  end
50
- shell_out!("rpm -qa | grep chef_rpm | xargs -r rpm -e")
64
+ # ensure we don't have any stray chef_rpms installed
65
+ shell_out!("rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | grep chef_rpm | xargs -r rpm -e")
66
+ # next line is useful cleanup if you happen to have been testing both yum + dnf func tests on the same box and
67
+ # have some yum garbage left around
68
+ FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
51
69
  end
52
70
 
53
71
  after(:all) do
54
- shell_out!("rpm -qa | grep chef_rpm | xargs -r rpm -e")
72
+ shell_out!("rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | grep chef_rpm | xargs -r rpm -e")
55
73
  FileUtils.rm_f "/etc/yum.repos.d/chef-dnf-localtesting.repo"
56
74
  end
57
75
 
58
- let(:package_name) { "chef_rpm" }
59
- let(:dnf_package) { Chef::Resource::DnfPackage.new(package_name, run_context) }
76
+ let(:default_options) { "--nogpgcheck --disablerepo=* --enablerepo=chef-dnf-localtesting" }
77
+
78
+ def pkg_arch
79
+ OHAI_SYSTEM[:kernel][:machine]
80
+ end
60
81
 
61
82
  describe ":install" do
62
83
  context "vanilla use case" do
63
- let(:package_name) { "chef_rpm" }
64
-
65
84
  it "installs if the package is not installed" do
66
85
  flush_cache
67
- dnf_package.run_action(:install)
68
- expect(dnf_package.updated_by_last_action?).to be true
69
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
86
+ dnf_package "chef_rpm" do
87
+ options default_options
88
+ action :install
89
+ end.should_be_updated
90
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
70
91
  end
71
92
 
72
93
  it "does not install if the package is installed" do
73
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
74
- dnf_package.run_action(:install)
75
- expect(dnf_package.updated_by_last_action?).to be false
76
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
94
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
95
+ dnf_package "chef_rpm" do
96
+ options default_options
97
+ action :install
98
+ end.should_not_be_updated
77
99
  end
78
100
 
79
101
  it "does not install twice" do
80
102
  flush_cache
81
- dnf_package.run_action(:install)
82
- expect(dnf_package.updated_by_last_action?).to be true
83
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
84
- dnf_package.run_action(:install)
85
- expect(dnf_package.updated_by_last_action?).to be false
86
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
103
+ dnf_package "chef_rpm" do
104
+ options default_options
105
+ action :install
106
+ end.should_be_updated
107
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
108
+ dnf_package "chef_rpm" do
109
+ options default_options
110
+ action :install
111
+ end.should_not_be_updated
112
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
87
113
  end
88
114
 
89
115
  it "does not install if the prior version package is installed" do
90
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
91
- dnf_package.run_action(:install)
92
- expect(dnf_package.updated_by_last_action?).to be false
93
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
116
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
117
+ dnf_package "chef_rpm" do
118
+ options default_options
119
+ action :install
120
+ end.should_not_be_updated
121
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
94
122
  end
95
123
 
96
- it "does not install if the i686 package is installed" do
97
- skip "FIXME: do nothing, or install the x86_64 version?"
124
+ it "does not install if the i686 package is installed", :intel_64bit do
125
+ skip "FIXME: do nothing, or install the #{pkg_arch} version?"
98
126
  preinstall("chef_rpm-1.10-1.i686.rpm")
99
- dnf_package.run_action(:install)
100
- expect(dnf_package.updated_by_last_action?).to be false
101
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.i686")
127
+ dnf_package "chef_rpm" do
128
+ options default_options
129
+ action :install
130
+ end.should_not_be_updated
131
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
102
132
  end
103
133
 
104
- it "does not install if the prior version i686 package is installed" do
105
- skip "FIXME: do nothing, or install the x86_64 version?"
134
+ it "does not install if the prior version i686 package is installed", :intel_64bit do
135
+ skip "FIXME: do nothing, or install the #{pkg_arch} version?"
106
136
  preinstall("chef_rpm-1.2-1.i686.rpm")
107
- dnf_package.run_action(:install)
108
- expect(dnf_package.updated_by_last_action?).to be false
109
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.i686")
137
+ dnf_package "chef_rpm" do
138
+ options default_options
139
+ action :install
140
+ end.should_not_be_updated
141
+ expect_matching_installed_version("^chef_rpm-1.2-1.i686$")
142
+ end
143
+ end
144
+
145
+ context "expanded idempotency checks with version variants" do
146
+ %w{1.10 1* 1.10-1 1*-1 1.10-* 1*-* 0:1.10 0:1* 0:1.10-1 0:1*-1 *:1.10-* *:1*-*}.each do |vstring|
147
+ it "installs the rpm when #{vstring} is in the package_name" do
148
+ flush_cache
149
+ dnf_package "chef_rpm-#{vstring}" do
150
+ options default_options
151
+ action :install
152
+ end.should_be_updated
153
+ end
154
+
155
+ it "is idempotent when #{vstring} is in the package_name" do
156
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
157
+ dnf_package "chef_rpm-#{vstring}" do
158
+ options default_options
159
+ action :install
160
+ end.should_not_be_updated
161
+ end
162
+
163
+ it "installs the rpm when #{vstring} is in the version property" do
164
+ flush_cache
165
+ dnf_package "chef_rpm" do
166
+ options default_options
167
+ version vstring
168
+ action :install
169
+ end.should_be_updated
170
+ end
171
+
172
+ it "is idempotent when #{vstring} is in the version property" do
173
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
174
+ dnf_package "chef_rpm" do
175
+ options default_options
176
+ version vstring
177
+ action :install
178
+ end.should_not_be_updated
179
+ end
180
+
181
+ it "upgrades the rpm when #{vstring} is in the package_name" do
182
+ flush_cache
183
+ dnf_package "chef_rpm-#{vstring}" do
184
+ options default_options
185
+ action :upgrade
186
+ end.should_be_updated
187
+ end
188
+
189
+ it "is idempotent when #{vstring} is in the package_name" do
190
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
191
+ dnf_package "chef_rpm-#{vstring}" do
192
+ options default_options
193
+ action :upgrade
194
+ end.should_not_be_updated
195
+ end
196
+
197
+ it "upgrades the rpm when #{vstring} is in the version property" do
198
+ flush_cache
199
+ dnf_package "chef_rpm" do
200
+ options default_options
201
+ version vstring
202
+ action :upgrade
203
+ end.should_be_updated
204
+ end
205
+
206
+ it "is idempotent when #{vstring} is in the version property" do
207
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
208
+ dnf_package "chef_rpm" do
209
+ options default_options
210
+ version vstring
211
+ action :upgrade
212
+ end.should_not_be_updated
213
+ end
214
+ end
215
+
216
+ %w{1.2 1* 1.2-1 1*-1 1.2-* 1*-* 0:1.2 0:1* 0:1.2-1 0:1*-1 *:1.2-* *:1*-*}.each do |vstring|
217
+ it "is idempotent when #{vstring} is in the version property and there is a candidate version" do
218
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
219
+ dnf_package "chef_rpm" do
220
+ options default_options
221
+ version vstring
222
+ action :install
223
+ end.should_not_be_updated
224
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
225
+ end
226
+ end
227
+
228
+ %w{1.2 1.2-1 1.2-* 0:1.2 0:1.2-1 *:1.2-*}.each do |vstring|
229
+ it "is idempotent when #{vstring} is in the version property on upgrade and it doesn't match the candidate version" do
230
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
231
+ dnf_package "chef_rpm" do
232
+ options default_options
233
+ version vstring
234
+ action :upgrade
235
+ end.should_not_be_updated
236
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
237
+ end
238
+ end
239
+
240
+ %w{1* 1*-1 1*-* 0:1* 0:1*-1 *:1*-*}.each do |vstring|
241
+ it "upgrades when #{vstring} is in the version property on upgrade and it matches the candidate version" do
242
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
243
+ dnf_package "chef_rpm" do
244
+ options default_options
245
+ version vstring
246
+ action :upgrade
247
+ end.should_be_updated
248
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
249
+ dnf_package "chef_rpm" do
250
+ options default_options
251
+ version vstring
252
+ action :upgrade
253
+ end.should_not_be_updated
254
+ end
110
255
  end
111
256
  end
112
257
 
113
258
  context "with versions or globs in the name" do
114
259
  it "works with a version" do
115
260
  flush_cache
116
- dnf_package.package_name("chef_rpm-1.10")
117
- dnf_package.run_action(:install)
118
- expect(dnf_package.updated_by_last_action?).to be true
119
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
261
+ dnf_package "chef_rpm-1.10" do
262
+ options default_options
263
+ action :install
264
+ end.should_be_updated
265
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
266
+ dnf_package "chef_rpm-1.10" do
267
+ options default_options
268
+ action :install
269
+ end.should_not_be_updated
120
270
  end
121
271
 
122
272
  it "works with an older version" do
123
273
  flush_cache
124
- dnf_package.package_name("chef_rpm-1.2")
125
- dnf_package.run_action(:install)
126
- expect(dnf_package.updated_by_last_action?).to be true
127
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
128
- end
129
-
130
- it "works with an evr" do
274
+ dnf_package "chef_rpm-1.2" do
275
+ options default_options
276
+ action :install
277
+ end.should_be_updated
278
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
279
+ dnf_package "chef_rpm-1.2" do
280
+ options default_options
281
+ action :install
282
+ end.should_not_be_updated
283
+ end
284
+
285
+ it "works with an evra" do
286
+ flush_cache
287
+ dnf_package "chef_rpm-0:1.2-1.#{pkg_arch}" do
288
+ options default_options
289
+ action :install
290
+ end.should_be_updated
291
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
292
+ dnf_package "chef_rpm-0:1.2-1.#{pkg_arch}" do
293
+ options default_options
294
+ action :install
295
+ end.should_not_be_updated
296
+ end
297
+
298
+ it "works with version and release" do
131
299
  flush_cache
132
- dnf_package.package_name("chef_rpm-0:1.2-1")
133
- dnf_package.run_action(:install)
134
- expect(dnf_package.updated_by_last_action?).to be true
135
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
300
+ dnf_package "chef_rpm-1.2-1" do
301
+ options default_options
302
+ action :install
303
+ end.should_be_updated
304
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
305
+ dnf_package "chef_rpm-1.2-1" do
306
+ options default_options
307
+ action :install
308
+ end.should_not_be_updated
136
309
  end
137
310
 
138
311
  it "works with a version glob" do
139
312
  flush_cache
140
- dnf_package.package_name("chef_rpm-1*")
141
- dnf_package.run_action(:install)
142
- expect(dnf_package.updated_by_last_action?).to be true
143
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
313
+ dnf_package "chef_rpm-1*" do
314
+ options default_options
315
+ action :install
316
+ end.should_be_updated
317
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
318
+ dnf_package "chef_rpm-1*" do
319
+ options default_options
320
+ action :install
321
+ end.should_not_be_updated
144
322
  end
145
323
 
146
324
  it "works with a name glob + version glob" do
147
325
  flush_cache
148
- dnf_package.package_name("chef_rp*-1*")
149
- dnf_package.run_action(:install)
150
- expect(dnf_package.updated_by_last_action?).to be true
151
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
326
+ dnf_package "chef_rp*-1*" do
327
+ options default_options
328
+ action :install
329
+ end.should_be_updated
330
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
331
+ dnf_package "chef_rp*-1*" do
332
+ options default_options
333
+ action :install
334
+ end.should_not_be_updated
335
+ end
336
+
337
+ it "upgrades when the installed version does not match the version string" do
338
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
339
+ dnf_package "chef_rpm-1.10" do
340
+ options default_options
341
+ action :install
342
+ end.should_be_updated
343
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}")
344
+ dnf_package "chef_rpm-1.10" do
345
+ options default_options
346
+ action :install
347
+ end.should_not_be_updated
348
+ end
349
+
350
+ it "downgrades when the installed version is higher than the package_name version" do
351
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
352
+ dnf_package "chef_rpm-1.2" do
353
+ options default_options
354
+ action :install
355
+ end.should_be_updated
356
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
357
+ dnf_package "chef_rpm-1.2" do
358
+ options default_options
359
+ action :install
360
+ end.should_not_be_updated
152
361
  end
153
362
  end
154
363
 
@@ -156,531 +365,1265 @@ describe Chef::Resource::RpmPackage, :requires_root, external: exclude_test do
156
365
  context "with version property" do
157
366
  it "matches the full version" do
158
367
  flush_cache
159
- dnf_package.package_name("chef_rpm")
160
- dnf_package.version("1.10")
161
- dnf_package.run_action(:install)
162
- expect(dnf_package.updated_by_last_action?).to be true
163
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
368
+ dnf_package "chef_rpm" do
369
+ options default_options
370
+ version "1.10"
371
+ action :install
372
+ end.should_be_updated
373
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
374
+ dnf_package "chef_rpm" do
375
+ options default_options
376
+ version "1.10"
377
+ action :install
378
+ end.should_not_be_updated
164
379
  end
165
380
 
166
381
  it "matches with a glob" do
167
382
  flush_cache
168
- dnf_package.package_name("chef_rpm")
169
- dnf_package.version("1*")
170
- dnf_package.run_action(:install)
171
- expect(dnf_package.updated_by_last_action?).to be true
172
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
383
+ dnf_package "chef_rpm" do
384
+ options default_options
385
+ version "1*"
386
+ action :install
387
+ end.should_be_updated
388
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
389
+ dnf_package "chef_rpm" do
390
+ options default_options
391
+ version "1*"
392
+ action :install
393
+ end.should_not_be_updated
173
394
  end
174
395
 
175
396
  it "matches the vr" do
176
397
  flush_cache
177
- dnf_package.package_name("chef_rpm")
178
- dnf_package.version("1.10-1")
179
- dnf_package.run_action(:install)
180
- expect(dnf_package.updated_by_last_action?).to be true
181
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
398
+ dnf_package "chef_rpm" do
399
+ options default_options
400
+ version "1.10-1"
401
+ action :install
402
+ end.should_be_updated
403
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
404
+ dnf_package "chef_rpm" do
405
+ options default_options
406
+ version "1.10-1"
407
+ action :install
408
+ end.should_not_be_updated
182
409
  end
183
410
 
184
411
  it "matches the evr" do
185
412
  flush_cache
186
- dnf_package.package_name("chef_rpm")
187
- dnf_package.version("0:1.10-1")
188
- dnf_package.run_action(:install)
189
- expect(dnf_package.updated_by_last_action?).to be true
190
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
413
+ dnf_package "chef_rpm" do
414
+ options default_options
415
+ version "0:1.10-1"
416
+ action :install
417
+ end.should_be_updated
418
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
419
+ dnf_package "chef_rpm" do
420
+ options default_options
421
+ version "0:1.10-1"
422
+ action :install
423
+ end.should_not_be_updated
191
424
  end
192
425
 
193
- # only works on rhel >= 8, was broken on old dnf
194
426
  it "matches with a vr glob", :rhel_gte_8 do
195
427
  flush_cache
196
- dnf_package.package_name("chef_rpm")
197
- dnf_package.version("1.10-1*")
198
- dnf_package.run_action(:install)
199
- expect(dnf_package.updated_by_last_action?).to be true
200
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
428
+ dnf_package "chef_rpm" do
429
+ options default_options
430
+ version "1.10-1*"
431
+ action :install
432
+ end.should_be_updated
433
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
434
+ dnf_package "chef_rpm" do
435
+ options default_options
436
+ version "1.10-1*"
437
+ action :install
438
+ end.should_not_be_updated
201
439
  end
202
440
 
203
- # only works on rhel >= 8, was broken on old dnf
204
441
  it "matches with an evr glob", :rhel_gte_8 do
205
442
  flush_cache
206
- dnf_package.package_name("chef_rpm")
207
- dnf_package.version("0:1.10-1*")
208
- dnf_package.run_action(:install)
209
- expect(dnf_package.updated_by_last_action?).to be true
210
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
443
+ dnf_package "chef_rpm" do
444
+ options default_options
445
+ version "0:1.10-1*"
446
+ action :install
447
+ end.should_be_updated
448
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
449
+ dnf_package "chef_rpm" do
450
+ options default_options
451
+ version "0:1.10-1*"
452
+ action :install
453
+ end.should_not_be_updated
211
454
  end
212
455
  end
213
456
 
214
457
  context "downgrades" do
215
- it "just work with DNF" do
216
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
217
- dnf_package.version("1.2")
218
- dnf_package.run_action(:install)
219
- expect(dnf_package.updated_by_last_action?).to be true
220
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
221
- end
222
-
223
- it "throws a deprecation warning with allow_downgrade" do
224
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
225
- expect(Chef).to receive(:deprecated).with(:dnf_package_allow_downgrade, /^the allow_downgrade property on the dnf_package provider is not used/)
226
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
227
- dnf_package.version("1.2")
228
- dnf_package.run_action(:install)
229
- dnf_package.allow_downgrade true
230
- expect(dnf_package.updated_by_last_action?).to be true
231
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
458
+ it "downgrades the package when allow_downgrade is true" do
459
+ flush_cache
460
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
461
+ dnf_package "chef_rpm" do
462
+ options default_options
463
+ version "1.2-1"
464
+ action :install
465
+ end.should_be_updated
466
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
467
+ dnf_package "chef_rpm" do
468
+ options default_options
469
+ version "1.2-1"
470
+ action :install
471
+ end.should_not_be_updated
472
+ end
473
+
474
+ it "does not downgrade the package when allow_downgrade is false" do
475
+ flush_cache
476
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
477
+ dnf_package "chef_rpm" do
478
+ options default_options
479
+ allow_downgrade false
480
+ version "1.2-1"
481
+ action :install
482
+ end.should_not_be_updated
483
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
232
484
  end
233
485
  end
234
486
 
235
- context "with arches" do
487
+ context "with arches", :intel_64bit do
236
488
  it "installs with 64-bit arch in the name" do
237
489
  flush_cache
238
- dnf_package.package_name("chef_rpm.x86_64")
239
- dnf_package.run_action(:install)
240
- expect(dnf_package.updated_by_last_action?).to be true
241
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
490
+ dnf_package "chef_rpm.#{pkg_arch}" do
491
+ options default_options
492
+ action :install
493
+ end.should_be_updated
494
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
495
+ dnf_package "chef_rpm.#{pkg_arch}" do
496
+ options default_options
497
+ action :install
498
+ end.should_not_be_updated
242
499
  end
243
500
 
244
501
  it "installs with 32-bit arch in the name" do
245
502
  flush_cache
246
- dnf_package.package_name("chef_rpm.i686")
247
- dnf_package.run_action(:install)
248
- expect(dnf_package.updated_by_last_action?).to be true
249
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.i686")
503
+ dnf_package "chef_rpm.i686" do
504
+ options default_options
505
+ action :install
506
+ end.should_be_updated
507
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
508
+ dnf_package "chef_rpm.i686" do
509
+ options default_options
510
+ action :install
511
+ end.should_not_be_updated
250
512
  end
251
513
 
252
514
  it "installs with 64-bit arch in the property" do
253
515
  flush_cache
254
- dnf_package.package_name("chef_rpm")
255
- dnf_package.arch("x86_64")
256
- dnf_package.run_action(:install)
257
- expect(dnf_package.updated_by_last_action?).to be true
258
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
516
+ dnf_package "chef_rpm" do
517
+ options default_options
518
+ arch pkg_arch
519
+ action :install
520
+ end.should_be_updated
521
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
522
+ dnf_package "chef_rpm" do
523
+ options default_options
524
+ arch pkg_arch
525
+ action :install
526
+ end.should_not_be_updated
259
527
  end
260
528
 
261
529
  it "installs with 32-bit arch in the property" do
262
530
  flush_cache
263
- dnf_package.package_name("chef_rpm")
264
- dnf_package.arch("i686")
265
- dnf_package.run_action(:install)
266
- expect(dnf_package.updated_by_last_action?).to be true
267
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.i686")
531
+ dnf_package "chef_rpm" do
532
+ options default_options
533
+ arch "i686"
534
+ action :install
535
+ end.should_be_updated
536
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
537
+ dnf_package "chef_rpm" do
538
+ options default_options
539
+ arch "i686"
540
+ action :install
541
+ end.should_not_be_updated
542
+ end
543
+
544
+ it "installs when the 32-bit arch is in the name and the version is in the property" do
545
+ flush_cache
546
+ dnf_package "chef_rpm.i686" do
547
+ options default_options
548
+ version "1.10-1"
549
+ action :install
550
+ end.should_be_updated
551
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
552
+ dnf_package "chef_rpm.i686" do
553
+ options default_options
554
+ version "1.10-1"
555
+ action :install
556
+ end.should_not_be_updated
557
+ end
558
+
559
+ it "installs when the 64-bit arch is in the name and the version is in the property" do
560
+ flush_cache
561
+ dnf_package "chef_rpm.#{pkg_arch}" do
562
+ options default_options
563
+ version "1.10-1"
564
+ action :install
565
+ end.should_be_updated
566
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
567
+ dnf_package "chef_rpm.#{pkg_arch}" do
568
+ options default_options
569
+ version "1.10-1"
570
+ action :install
571
+ end.should_not_be_updated
268
572
  end
269
573
  end
270
574
 
271
575
  context "with constraints" do
272
576
  it "with nothing installed, it installs the latest version" do
273
577
  flush_cache
274
- dnf_package.package_name("chef_rpm >= 1.2")
275
- dnf_package.run_action(:install)
276
- expect(dnf_package.updated_by_last_action?).to be true
277
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
578
+ dnf_package "chef_rpm >= 1.2" do
579
+ options default_options
580
+ action :install
581
+ end.should_be_updated
582
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
583
+ dnf_package "chef_rpm >= 1.2" do
584
+ options default_options
585
+ action :install
586
+ end.should_not_be_updated
278
587
  end
279
588
 
280
589
  it "when it is met, it does nothing" do
281
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
282
- dnf_package.package_name("chef_rpm >= 1.2")
283
- dnf_package.run_action(:install)
284
- expect(dnf_package.updated_by_last_action?).to be false
285
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
590
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
591
+ dnf_package "chef_rpm >= 1.2" do
592
+ options default_options
593
+ action :install
594
+ end.should_not_be_updated
595
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
286
596
  end
287
597
 
288
598
  it "when it is met, it does nothing" do
289
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
290
- dnf_package.package_name("chef_rpm >= 1.2")
291
- dnf_package.run_action(:install)
292
- expect(dnf_package.updated_by_last_action?).to be false
293
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
599
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
600
+ dnf_package "chef_rpm >= 1.2" do
601
+ options default_options
602
+ action :install
603
+ end.should_not_be_updated
604
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
294
605
  end
295
606
 
296
- it "with nothing intalled, it installs the latest version" do
607
+ it "with nothing installed, it installs the latest version" do
297
608
  flush_cache
298
- dnf_package.package_name("chef_rpm > 1.2")
299
- dnf_package.run_action(:install)
300
- expect(dnf_package.updated_by_last_action?).to be true
301
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
609
+ dnf_package "chef_rpm > 1.2" do
610
+ options default_options
611
+ action :install
612
+ end.should_be_updated
613
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
614
+ dnf_package "chef_rpm > 1.2" do
615
+ options default_options
616
+ action :install
617
+ end.should_not_be_updated
302
618
  end
303
619
 
304
620
  it "when it is not met by an installed rpm, it upgrades" do
305
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
306
- dnf_package.package_name("chef_rpm > 1.2")
307
- dnf_package.run_action(:install)
308
- expect(dnf_package.updated_by_last_action?).to be true
309
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
621
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
622
+ dnf_package "chef_rpm > 1.2" do
623
+ options default_options
624
+ action :install
625
+ end.should_be_updated
626
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
627
+ dnf_package "chef_rpm > 1.2" do
628
+ options default_options
629
+ action :install
630
+ end.should_not_be_updated
631
+ end
632
+
633
+ it "with an equality constraint, when it is not met by an installed rpm, it upgrades" do
634
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
635
+ dnf_package "chef_rpm = 1.10" do
636
+ options default_options
637
+ action :install
638
+ end.should_be_updated
639
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
640
+ dnf_package "chef_rpm = 1.10" do
641
+ options default_options
642
+ action :install
643
+ end.should_not_be_updated
644
+ end
645
+
646
+ it "with an equality constraint, when it is met by an installed rpm, it does nothing" do
647
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
648
+ dnf_package "chef_rpm = 1.2" do
649
+ options default_options
650
+ action :install
651
+ end.should_not_be_updated
652
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
310
653
  end
311
654
 
312
655
  it "when it is met by an installed rpm, it does nothing" do
313
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
314
- dnf_package.package_name("chef_rpm > 1.2")
315
- dnf_package.run_action(:install)
316
- expect(dnf_package.updated_by_last_action?).to be false
317
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
656
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
657
+ dnf_package "chef_rpm > 1.2" do
658
+ options default_options
659
+ action :install
660
+ end.should_not_be_updated
661
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
318
662
  end
319
663
 
320
664
  it "when there is no solution to the contraint" do
321
665
  flush_cache
322
- dnf_package.package_name("chef_rpm > 2.0")
323
- expect { dnf_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
666
+ expect {
667
+ dnf_package "chef_rpm > 2.0"
668
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
324
669
  end
325
670
 
326
671
  it "when there is no solution to the contraint but an rpm is preinstalled" do
327
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
328
- dnf_package.package_name("chef_rpm > 2.0")
329
- expect { dnf_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
672
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
673
+ expect {
674
+ dnf_package "chef_rpm > 2.0"
675
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
676
+ end
677
+
678
+ it "with a less than constraint, when nothing is installed, it installs" do
679
+ flush_cache
680
+ dnf_package "chef_rpm < 1.10" do
681
+ options default_options
682
+ action :install
683
+ end.should_be_updated
684
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
685
+ dnf_package "chef_rpm < 1.10" do
686
+ options default_options
687
+ action :install
688
+ end.should_not_be_updated
689
+ end
690
+
691
+ it "with a less than constraint, when the install version matches, it does nothing" do
692
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
693
+ dnf_package "chef_rpm < 1.10" do
694
+ options default_options
695
+ action :install
696
+ end.should_not_be_updated
697
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
698
+ end
699
+
700
+ it "with a less than constraint, when the install version fails, it should downgrade" do
701
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
702
+ dnf_package "chef_rpm < 1.10" do
703
+ options default_options
704
+ action :install
705
+ end.should_be_updated
706
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
707
+ dnf_package "chef_rpm < 1.10" do
708
+ options default_options
709
+ action :install
710
+ end.should_not_be_updated
711
+ end
712
+
713
+ it "works with constraints in the version property" do
714
+ flush_cache
715
+ dnf_package "chef_rpm" do
716
+ version ">= 1.10"
717
+ options default_options
718
+ action :install
719
+ end.should_be_updated
720
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
721
+ dnf_package "chef_rpm" do
722
+ version ">= 1.10"
723
+ options default_options
724
+ action :install
725
+ end.should_not_be_updated
330
726
  end
331
727
  end
332
728
 
333
729
  context "with source arguments" do
334
730
  it "raises an exception when the package does not exist" do
335
731
  flush_cache
336
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm")
337
- expect { dnf_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
732
+ expect {
733
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm"
734
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
338
735
  end
339
736
 
340
737
  it "does not raise a hard exception in why-run mode when the package does not exist" do
341
738
  Chef::Config[:why_run] = true
342
739
  flush_cache
343
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm")
344
- dnf_package.run_action(:install)
345
- expect { dnf_package.run_action(:install) }.not_to raise_error
740
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm" do
741
+ options default_options
742
+ action :install
743
+ end
346
744
  end
347
745
 
348
746
  it "installs the package when using the source argument" do
349
747
  flush_cache
350
- dnf_package.name "something"
351
- dnf_package.package_name "somethingelse"
352
- dnf_package.source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
353
- dnf_package.run_action(:install)
354
- expect(dnf_package.updated_by_last_action?).to be true
355
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
748
+ dnf_package "something" do
749
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
750
+ options default_options
751
+ package_name "somethingelse"
752
+ name "something"
753
+ action :install
754
+ end.should_be_updated
755
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
756
+ dnf_package "something" do
757
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
758
+ options default_options
759
+ package_name "somethingelse"
760
+ name "something"
761
+ action :install
762
+ end.should_not_be_updated
356
763
  end
357
764
 
358
765
  it "installs the package when the name is a path to a file" do
359
766
  flush_cache
360
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
361
- dnf_package.run_action(:install)
362
- expect(dnf_package.updated_by_last_action?).to be true
363
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
767
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
768
+ options default_options
769
+ action :install
770
+ end.should_be_updated
771
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
772
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
773
+ options default_options
774
+ action :install
775
+ end.should_not_be_updated
776
+ end
777
+
778
+ it "downgrade on a local file with allow_downgrade true works" do
779
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
780
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
781
+ options default_options
782
+ version "1.2-1"
783
+ action :install
784
+ end.should_be_updated
785
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
786
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
787
+ options default_options
788
+ version "1.2-1"
789
+ action :install
790
+ end.should_not_be_updated
791
+ end
792
+
793
+ it "downgrade on a local file with allow_downgrade false does not downgrade" do
794
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
795
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
796
+ options default_options
797
+ allow_downgrade false
798
+ version "1.2-1"
799
+ action :install
800
+ end.should_not_be_updated
801
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
364
802
  end
365
803
 
366
804
  it "does not downgrade the package with :install" do
367
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
368
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
369
- dnf_package.run_action(:install)
370
- expect(dnf_package.updated_by_last_action?).to be false
371
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
805
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
806
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
807
+ options default_options
808
+ action :install
809
+ end.should_not_be_updated
810
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
372
811
  end
373
812
 
374
813
  it "does not upgrade the package with :install" do
375
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
376
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.x86_64.rpm")
377
- dnf_package.run_action(:install)
378
- expect(dnf_package.updated_by_last_action?).to be false
379
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
814
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
815
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm" do
816
+ options default_options
817
+ action :install
818
+ end.should_not_be_updated
819
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
380
820
  end
381
821
 
382
822
  it "is idempotent when the package is already installed" do
383
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
384
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
385
- dnf_package.run_action(:install)
386
- expect(dnf_package.updated_by_last_action?).to be false
387
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
823
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
824
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
825
+ options default_options
826
+ action :install
827
+ end.should_not_be_updated
828
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
829
+ end
830
+
831
+ it "is idempotent when the package is already installed and there is a version string" do
832
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
833
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
834
+ options default_options
835
+ version "1.2-1"
836
+ action :install
837
+ end.should_not_be_updated
838
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
388
839
  end
389
840
  end
390
841
 
391
842
  context "with no available version" do
392
843
  it "works when a package is installed" do
393
844
  FileUtils.rm_f "/etc/yum.repos.d/chef-dnf-localtesting.repo"
394
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
395
- dnf_package.run_action(:install)
396
- expect(dnf_package.updated_by_last_action?).to be false
397
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
845
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
846
+ dnf_package "chef_rpm" do
847
+ options "--nogpgcheck --disablerepo=*"
848
+ action :install
849
+ end.should_not_be_updated
850
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
398
851
  end
399
852
 
400
853
  it "works with a local source" do
401
854
  FileUtils.rm_f "/etc/yum.repos.d/chef-dnf-localtesting.repo"
402
855
  flush_cache
403
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
404
- dnf_package.run_action(:install)
405
- expect(dnf_package.updated_by_last_action?).to be true
406
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
856
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
857
+ options "--nogpgcheck --disablerepo=*"
858
+ action :install
859
+ end.should_be_updated
860
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
861
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
862
+ options "--nogpgcheck --disablerepo=*"
863
+ action :install
864
+ end.should_not_be_updated
407
865
  end
408
866
  end
409
867
 
410
- context "multipackage with arches" do
868
+ context "multipackage with arches", :intel_64bit do
411
869
  it "installs two rpms" do
412
870
  flush_cache
413
- dnf_package.package_name([ "chef_rpm.x86_64", "chef_rpm.i686" ] )
414
- dnf_package.run_action(:install)
415
- expect(dnf_package.updated_by_last_action?).to be true
416
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.x86_64/)
417
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.i686/)
871
+ dnf_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
872
+ options default_options
873
+ action :install
874
+ end.should_be_updated
875
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
876
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
877
+ dnf_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
878
+ options default_options
879
+ action :install
880
+ end.should_not_be_updated
418
881
  end
419
882
 
420
883
  it "does nothing if both are installed" do
421
- preinstall("chef_rpm-1.10-1.x86_64.rpm", "chef_rpm-1.10-1.i686.rpm")
884
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
422
885
  flush_cache
423
- dnf_package.package_name([ "chef_rpm.x86_64", "chef_rpm.i686" ] )
424
- dnf_package.run_action(:install)
425
- expect(dnf_package.updated_by_last_action?).to be false
886
+ dnf_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
887
+ options default_options
888
+ action :install
889
+ end.should_not_be_updated
426
890
  end
427
891
 
428
892
  it "installs the second rpm if the first is installed" do
429
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
430
- dnf_package.package_name([ "chef_rpm.x86_64", "chef_rpm.i686" ] )
431
- dnf_package.run_action(:install)
432
- expect(dnf_package.updated_by_last_action?).to be true
433
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.x86_64/)
434
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.i686/)
893
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
894
+ dnf_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
895
+ options default_options
896
+ action :install
897
+ end.should_be_updated
898
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
899
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
900
+ dnf_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
901
+ options default_options
902
+ action :install
903
+ end.should_not_be_updated
435
904
  end
436
905
 
437
906
  it "installs the first rpm if the second is installed" do
438
907
  preinstall("chef_rpm-1.10-1.i686.rpm")
439
- dnf_package.package_name([ "chef_rpm.x86_64", "chef_rpm.i686" ] )
440
- dnf_package.run_action(:install)
441
- expect(dnf_package.updated_by_last_action?).to be true
442
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.x86_64/)
443
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.i686/)
908
+ dnf_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
909
+ options default_options
910
+ action :install
911
+ end.should_be_updated
912
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
913
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
914
+ dnf_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
915
+ options default_options
916
+ action :install
917
+ end.should_not_be_updated
444
918
  end
445
919
 
446
920
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
447
921
  it "installs two rpms with multi-arch" do
448
922
  flush_cache
449
- dnf_package.package_name(%w{chef_rpm chef_rpm} )
450
- dnf_package.arch(%w{x86_64 i686})
451
- dnf_package.run_action(:install)
452
- expect(dnf_package.updated_by_last_action?).to be true
453
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.x86_64/)
454
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.i686/)
923
+ dnf_package %w{chef_rpm chef_rpm} do
924
+ options default_options
925
+ arch [pkg_arch, "i686"]
926
+ action :install
927
+ end.should_be_updated
928
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
929
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
930
+ dnf_package %w{chef_rpm chef_rpm} do
931
+ options default_options
932
+ arch [pkg_arch, "i686"]
933
+ action :install
934
+ end.should_not_be_updated
455
935
  end
456
936
 
457
937
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
458
938
  it "installs the second rpm if the first is installed (muti-arch)" do
459
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
460
- dnf_package.package_name(%w{chef_rpm chef_rpm} )
461
- dnf_package.arch(%w{x86_64 i686})
462
- dnf_package.run_action(:install)
463
- expect(dnf_package.updated_by_last_action?).to be true
464
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.x86_64/)
465
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.i686/)
939
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
940
+ dnf_package %w{chef_rpm chef_rpm} do
941
+ options default_options
942
+ arch [pkg_arch, "i686"]
943
+ action :install
944
+ end.should_be_updated
945
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
946
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
947
+ dnf_package %w{chef_rpm chef_rpm} do
948
+ options default_options
949
+ action :install
950
+ end.should_not_be_updated
466
951
  end
467
952
 
468
953
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
469
954
  it "installs the first rpm if the second is installed (muti-arch)" do
470
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
471
- dnf_package.package_name(%w{chef_rpm chef_rpm} )
472
- dnf_package.arch(%w{x86_64 i686})
473
- dnf_package.run_action(:install)
474
- expect(dnf_package.updated_by_last_action?).to be true
475
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.x86_64/)
476
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match(/chef_rpm-1.10-1.i686/)
955
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
956
+ dnf_package %w{chef_rpm chef_rpm} do
957
+ options default_options
958
+ arch [pkg_arch, "i686"]
959
+ action :install
960
+ end.should_be_updated
961
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
962
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
963
+ dnf_package %w{chef_rpm chef_rpm} do
964
+ options default_options
965
+ action :install
966
+ end.should_not_be_updated
477
967
  end
478
968
 
479
969
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
480
970
  it "does nothing if both are installed (muti-arch)" do
481
- preinstall("chef_rpm-1.10-1.x86_64.rpm", "chef_rpm-1.10-1.i686.rpm")
482
- dnf_package.package_name(%w{chef_rpm chef_rpm} )
483
- dnf_package.arch(%w{x86_64 i686})
484
- dnf_package.run_action(:install)
485
- expect(dnf_package.updated_by_last_action?).to be false
971
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
972
+ dnf_package %w{chef_rpm chef_rpm} do
973
+ options default_options
974
+ arch [pkg_arch, "i686"]
975
+ action :install
976
+ end.should_not_be_updated
977
+ end
978
+ end
979
+
980
+ context "repo controls" do
981
+ it "should fail with the repo disabled" do
982
+ flush_cache
983
+ expect {
984
+ dnf_package "chef_rpm" do
985
+ options "--nogpgcheck --disablerepo=chef-dnf-localtesting"
986
+ action :install
987
+ end
988
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
989
+ end
990
+
991
+ it "should work with disablerepo first" do
992
+ flush_cache
993
+ dnf_package "chef_rpm" do
994
+ options ["--nogpgcheck", "--disablerepo=*", "--enablerepo=chef-dnf-localtesting"]
995
+ action :install
996
+ end.should_be_updated
997
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
998
+ dnf_package "chef_rpm" do
999
+ options ["--nogpgcheck", "--disablerepo=*", "--enablerepo=chef-dnf-localtesting"]
1000
+ action :install
1001
+ end.should_not_be_updated
1002
+ end
1003
+
1004
+ it "should work to enable a disabled repo" do
1005
+ shell_out!("dnf config-manager --set-disabled chef-dnf-localtesting")
1006
+ flush_cache
1007
+ expect {
1008
+ dnf_package "chef_rpm" do
1009
+ options "--nogpgcheck"
1010
+ action :install
1011
+ end
1012
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
1013
+ flush_cache
1014
+ dnf_package "chef_rpm" do
1015
+ options "--nogpgcheck --enablerepo=chef-dnf-localtesting"
1016
+ action :install
1017
+ end.should_be_updated
1018
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1019
+ dnf_package "chef_rpm" do
1020
+ options "--nogpgcheck --enablerepo=chef-dnf-localtesting"
1021
+ action :install
1022
+ end.should_not_be_updated
1023
+ end
1024
+
1025
+ it "when an idempotent install action is run, does not leave repos disabled" do
1026
+ flush_cache
1027
+ # this is a bit tricky -- we need this action to be idempotent, so that it doesn't recycle any
1028
+ # caches, but need it to hit whatavailable with the repo disabled. using :upgrade like this
1029
+ # accomplishes both those goals (it would be easier if we had other rpms in this repo, but with
1030
+ # one rpm we need to do this).
1031
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1032
+ dnf_package "chef_rpm" do
1033
+ options "--nogpgcheck --disablerepo=chef-dnf-localtesting"
1034
+ action :upgrade
1035
+ end.should_not_be_updated
1036
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1037
+ # now we're still using the same cache in the dnf_helper.py cache and we test to see if the
1038
+ # repo that we temporarily disabled is enabled on this pass.
1039
+ dnf_package "chef_rpm-1.10-1.#{pkg_arch}" do
1040
+ options "--nogpgcheck"
1041
+ action :install
1042
+ end.should_be_updated
1043
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1044
+ dnf_package "chef_rpm-1.10-1.#{pkg_arch}" do
1045
+ options "--nogpgcheck"
1046
+ action :install
1047
+ end.should_not_be_updated
486
1048
  end
487
1049
  end
488
1050
  end
489
1051
 
490
1052
  describe ":upgrade" do
491
1053
  context "downgrades" do
492
- it "just work with DNF" do
493
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
494
- dnf_package.version("1.2")
495
- dnf_package.run_action(:install)
496
- expect(dnf_package.updated_by_last_action?).to be true
497
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
498
- end
499
-
500
- it "throws a deprecation warning with allow_downgrade" do
501
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
502
- expect(Chef).to receive(:deprecated).with(:dnf_package_allow_downgrade, /^the allow_downgrade property on the dnf_package provider is not used/)
503
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
504
- dnf_package.version("1.2")
505
- dnf_package.run_action(:install)
506
- dnf_package.allow_downgrade true
507
- expect(dnf_package.updated_by_last_action?).to be true
508
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
1054
+ it "just works by default" do
1055
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1056
+ dnf_package "chef_rpm" do
1057
+ options default_options
1058
+ version "1.2"
1059
+ action :install
1060
+ end.should_be_updated
1061
+ expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}")
1062
+ dnf_package "chef_rpm" do
1063
+ options default_options
1064
+ version "1.2"
1065
+ action :install
1066
+ end.should_not_be_updated
509
1067
  end
510
1068
  end
511
1069
 
512
1070
  context "with source arguments" do
513
1071
  it "installs the package when using the source argument" do
514
1072
  flush_cache
515
- dnf_package.name "something"
516
- dnf_package.package_name "somethingelse"
517
- dnf_package.source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
518
- dnf_package.run_action(:upgrade)
519
- expect(dnf_package.updated_by_last_action?).to be true
520
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
1073
+ dnf_package "something" do
1074
+ options default_options
1075
+ package_name "somethingelse"
1076
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
1077
+ action :upgrade
1078
+ end.should_be_updated
1079
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1080
+ dnf_package "something" do
1081
+ options default_options
1082
+ package_name "somethingelse"
1083
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
1084
+ action :upgrade
1085
+ end.should_not_be_updated
521
1086
  end
522
1087
 
523
1088
  it "installs the package when the name is a path to a file" do
524
1089
  flush_cache
525
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
526
- dnf_package.run_action(:upgrade)
527
- expect(dnf_package.updated_by_last_action?).to be true
528
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
529
- end
530
-
531
- it "downgrades the package" do
532
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
533
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
534
- dnf_package.run_action(:upgrade)
535
- expect(dnf_package.updated_by_last_action?).to be true
536
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
1090
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1091
+ options default_options
1092
+ action :upgrade
1093
+ end.should_be_updated
1094
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1095
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1096
+ options default_options
1097
+ action :upgrade
1098
+ end.should_not_be_updated
1099
+ end
1100
+
1101
+ it "downgrades the package when allow_downgrade is true" do
1102
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1103
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1104
+ options default_options
1105
+ action :upgrade
1106
+ end.should_be_updated
1107
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1108
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1109
+ options default_options
1110
+ action :upgrade
1111
+ end.should_not_be_updated
1112
+ end
1113
+
1114
+ it "does not downgrade the package when allow_downgrade is false" do
1115
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1116
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1117
+ options default_options
1118
+ allow_downgrade false
1119
+ action :upgrade
1120
+ end.should_not_be_updated
1121
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
537
1122
  end
538
1123
 
539
1124
  it "upgrades the package" do
540
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
541
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.x86_64.rpm")
542
- dnf_package.run_action(:upgrade)
543
- expect(dnf_package.updated_by_last_action?).to be true
544
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
1125
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1126
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm" do
1127
+ options default_options
1128
+ action :upgrade
1129
+ end.should_be_updated
1130
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1131
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm" do
1132
+ options default_options
1133
+ action :upgrade
1134
+ end.should_not_be_updated
545
1135
  end
546
1136
 
547
1137
  it "is idempotent when the package is already installed" do
548
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
549
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
550
- dnf_package.run_action(:upgrade)
551
- expect(dnf_package.updated_by_last_action?).to be false
552
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
1138
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1139
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1140
+ options default_options
1141
+ action :upgrade
1142
+ end.should_not_be_updated
1143
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
553
1144
  end
554
1145
  end
555
1146
 
556
1147
  context "with no available version" do
557
1148
  it "works when a package is installed" do
558
1149
  FileUtils.rm_f "/etc/yum.repos.d/chef-dnf-localtesting.repo"
559
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
560
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
561
- dnf_package.run_action(:upgrade)
562
- expect(dnf_package.updated_by_last_action?).to be false
563
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
1150
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1151
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1152
+ options "--nogpgcheck --disablerepo=*"
1153
+ action :upgrade
1154
+ end.should_not_be_updated
1155
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
564
1156
  end
565
1157
 
566
1158
  it "works with a local source" do
567
1159
  FileUtils.rm_f "/etc/yum.repos.d/chef-dnf-localtesting.repo"
568
1160
  flush_cache
569
- dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.x86_64.rpm")
570
- dnf_package.run_action(:upgrade)
571
- expect(dnf_package.updated_by_last_action?).to be true
572
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.x86_64")
1161
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1162
+ options "--nogpgcheck --disablerepo=*"
1163
+ action :upgrade
1164
+ end.should_be_updated
1165
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1166
+ dnf_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1167
+ options default_options
1168
+ action :upgrade
1169
+ end.should_not_be_updated
1170
+ end
1171
+ end
1172
+
1173
+ context "version pinning" do
1174
+ it "with a full version pin it installs a later package" do
1175
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1176
+ dnf_package "chef_rpm" do
1177
+ options default_options
1178
+ version "1.10-1"
1179
+ action :upgrade
1180
+ end.should_be_updated
1181
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1182
+ dnf_package "chef_rpm" do
1183
+ options default_options
1184
+ version "1.10-1"
1185
+ action :upgrade
1186
+ end.should_not_be_updated
1187
+ end
1188
+
1189
+ it "with a full version pin in the name it downgrades the package" do
1190
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1191
+ dnf_package "chef_rpm" do
1192
+ options default_options
1193
+ version "1.2-1"
1194
+ action :upgrade
1195
+ end.should_be_updated
1196
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1197
+ dnf_package "chef_rpm" do
1198
+ options default_options
1199
+ version "1.2-1"
1200
+ action :upgrade
1201
+ end.should_not_be_updated
1202
+ end
1203
+
1204
+ it "with a partial (no release) version pin it installs a later package" do
1205
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1206
+ dnf_package "chef_rpm" do
1207
+ options default_options
1208
+ version "1.10"
1209
+ action :upgrade
1210
+ end.should_be_updated
1211
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1212
+ dnf_package "chef_rpm" do
1213
+ options default_options
1214
+ version "1.10"
1215
+ action :upgrade
1216
+ end.should_not_be_updated
1217
+ end
1218
+
1219
+ it "with a partial (no release) version pin in the name it downgrades the package" do
1220
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1221
+ dnf_package "chef_rpm" do
1222
+ options default_options
1223
+ version("1.2")
1224
+ action :upgrade
1225
+ end.should_be_updated
1226
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1227
+ dnf_package "chef_rpm" do
1228
+ options default_options
1229
+ version("1.2")
1230
+ action :upgrade
1231
+ end.should_not_be_updated
1232
+ end
1233
+
1234
+ it "with a full version pin it installs a later package" do
1235
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1236
+ dnf_package "chef_rpm-1.10-1" do
1237
+ options default_options
1238
+ action :upgrade
1239
+ end.should_be_updated
1240
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1241
+ dnf_package "chef_rpm-1.10-1" do
1242
+ options default_options
1243
+ action :upgrade
1244
+ end.should_not_be_updated
1245
+ end
1246
+
1247
+ it "with a full version pin in the name it downgrades the package" do
1248
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1249
+ dnf_package "chef_rpm-1.2-1" do
1250
+ options default_options
1251
+ action :upgrade
1252
+ end.should_be_updated
1253
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1254
+ dnf_package "chef_rpm-1.2-1" do
1255
+ options default_options
1256
+ action :upgrade
1257
+ end.should_not_be_updated
1258
+ end
1259
+
1260
+ it "with a partial (no release) version pin it installs a later package" do
1261
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1262
+ dnf_package "chef_rpm-1.10" do
1263
+ options default_options
1264
+ action :upgrade
1265
+ end.should_be_updated
1266
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1267
+ dnf_package "chef_rpm-1.10" do
1268
+ options default_options
1269
+ action :upgrade
1270
+ end.should_not_be_updated
1271
+ end
1272
+
1273
+ it "with a partial (no release) version pin in the name it downgrades the package" do
1274
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1275
+ dnf_package "chef_rpm-1.2" do
1276
+ options default_options
1277
+ action :upgrade
1278
+ end.should_be_updated
1279
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1280
+ dnf_package "chef_rpm-1.2" do
1281
+ options default_options
1282
+ action :upgrade
1283
+ end.should_not_be_updated
1284
+ end
1285
+
1286
+ it "with a prco equality pin in the name it upgrades a prior package" do
1287
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1288
+ dnf_package "chef_rpm = 1.10" do
1289
+ options default_options
1290
+ action :upgrade
1291
+ end.should_be_updated
1292
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1293
+ dnf_package "chef_rpm = 1.10" do
1294
+ options default_options
1295
+ action :upgrade
1296
+ end.should_not_be_updated
1297
+ end
1298
+
1299
+ it "with a prco equality pin in the name it downgrades a later package" do
1300
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1301
+ dnf_package "chef_rpm = 1.2" do
1302
+ options default_options
1303
+ action :upgrade
1304
+ end.should_be_updated
1305
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1306
+ dnf_package "chef_rpm = 1.2" do
1307
+ options default_options
1308
+ action :upgrade
1309
+ end.should_not_be_updated
1310
+ end
1311
+
1312
+ it "with a > pin in the name and no rpm installed it installs" do
1313
+ flush_cache
1314
+ dnf_package "chef_rpm > 1.2" do
1315
+ options default_options
1316
+ action :upgrade
1317
+ end.should_be_updated
1318
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1319
+ dnf_package "chef_rpm > 1.2" do
1320
+ options default_options
1321
+ action :upgrade
1322
+ end.should_not_be_updated
1323
+ end
1324
+
1325
+ it "with a < pin in the name and no rpm installed it installs" do
1326
+ flush_cache
1327
+ dnf_package "chef_rpm < 1.10" do
1328
+ options default_options
1329
+ action :upgrade
1330
+ end.should_be_updated
1331
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1332
+ dnf_package "chef_rpm < 1.10" do
1333
+ options default_options
1334
+ action :upgrade
1335
+ end.should_not_be_updated
1336
+ end
1337
+
1338
+ it "with a > pin in the name and matching rpm installed it does nothing" do
1339
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1340
+ dnf_package "chef_rpm > 1.2" do
1341
+ options default_options
1342
+ action :upgrade
1343
+ end.should_not_be_updated
1344
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1345
+ end
1346
+
1347
+ it "with a < pin in the name and no rpm installed it installs" do
1348
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1349
+ dnf_package "chef_rpm < 1.10" do
1350
+ options default_options
1351
+ action :upgrade
1352
+ end.should_not_be_updated
1353
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1354
+ end
1355
+
1356
+ it "with a > pin in the name and non-matching rpm installed it upgrades" do
1357
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1358
+ dnf_package "chef_rpm > 1.2" do
1359
+ options default_options
1360
+ action :upgrade
1361
+ end.should_be_updated
1362
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1363
+ dnf_package "chef_rpm > 1.2" do
1364
+ options default_options
1365
+ action :upgrade
1366
+ end.should_not_be_updated
1367
+ end
1368
+
1369
+ it "with a < pin in the name and non-matching rpm installed it downgrades" do
1370
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1371
+ dnf_package "chef_rpm < 1.10" do
1372
+ options default_options
1373
+ action :upgrade
1374
+ end.should_be_updated
1375
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1376
+ dnf_package "chef_rpm < 1.10" do
1377
+ options default_options
1378
+ action :upgrade
1379
+ end.should_not_be_updated
573
1380
  end
574
1381
  end
575
1382
  end
576
1383
 
577
1384
  describe ":remove" do
578
1385
  context "vanilla use case" do
579
- let(:package_name) { "chef_rpm" }
580
1386
  it "does nothing if the package is not installed" do
581
1387
  flush_cache
582
- dnf_package.run_action(:remove)
583
- expect(dnf_package.updated_by_last_action?).to be false
584
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
1388
+ dnf_package "chef_rpm" do
1389
+ options default_options
1390
+ action :remove
1391
+ end.should_not_be_updated
1392
+ expect_matching_installed_version("^package chef_rpm is not installed$")
585
1393
  end
586
1394
 
587
1395
  it "removes the package if the package is installed" do
588
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
589
- dnf_package.run_action(:remove)
590
- expect(dnf_package.updated_by_last_action?).to be true
591
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
1396
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1397
+ dnf_package "chef_rpm" do
1398
+ options default_options
1399
+ action :remove
1400
+ end.should_be_updated
1401
+ expect_matching_installed_version("^package chef_rpm is not installed$")
592
1402
  end
593
1403
 
594
1404
  it "does not remove the package twice" do
595
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
596
- dnf_package.run_action(:remove)
597
- expect(dnf_package.updated_by_last_action?).to be true
598
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
599
- dnf_package.run_action(:remove)
600
- expect(dnf_package.updated_by_last_action?).to be false
601
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
1405
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1406
+ dnf_package "chef_rpm" do
1407
+ options default_options
1408
+ action :remove
1409
+ end.should_be_updated
1410
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1411
+ dnf_package "chef_rpm" do
1412
+ options default_options
1413
+ action :remove
1414
+ end.should_not_be_updated
1415
+ expect_matching_installed_version("^package chef_rpm is not installed$")
602
1416
  end
603
1417
 
604
1418
  it "removes the package if the prior version package is installed" do
605
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
606
- dnf_package.run_action(:remove)
607
- expect(dnf_package.updated_by_last_action?).to be true
608
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
609
- end
610
-
611
- it "removes the package if the i686 package is installed" do
1419
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1420
+ dnf_package "chef_rpm" do
1421
+ options default_options
1422
+ action :remove
1423
+ end.should_be_updated
1424
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1425
+ dnf_package "chef_rpm" do
1426
+ options default_options
1427
+ action :remove
1428
+ end.should_not_be_updated
1429
+ end
1430
+
1431
+ it "removes the package if the i686 package is installed", :intel_64bit do
612
1432
  skip "FIXME: should this be fixed or is the current behavior correct?"
613
1433
  preinstall("chef_rpm-1.10-1.i686.rpm")
614
- dnf_package.run_action(:remove)
615
- expect(dnf_package.updated_by_last_action?).to be true
616
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
617
- end
618
-
619
- it "removes the package if the prior version i686 package is installed" do
1434
+ dnf_package "chef_rpm" do
1435
+ options default_options
1436
+ action :remove
1437
+ end.should_be_updated
1438
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1439
+ dnf_package "chef_rpm" do
1440
+ options default_options
1441
+ action :remove
1442
+ end.should_not_be_updated
1443
+ end
1444
+
1445
+ it "removes the package if the prior version i686 package is installed", :intel_64bit do
620
1446
  skip "FIXME: should this be fixed or is the current behavior correct?"
621
1447
  preinstall("chef_rpm-1.2-1.i686.rpm")
622
- dnf_package.run_action(:remove)
623
- expect(dnf_package.updated_by_last_action?).to be true
624
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
1448
+ dnf_package "chef_rpm" do
1449
+ options default_options
1450
+ action :remove
1451
+ end.should_be_updated
1452
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1453
+ dnf_package "chef_rpm" do
1454
+ options default_options
1455
+ action :remove
1456
+ end.should_not_be_updated
625
1457
  end
626
1458
  end
627
1459
 
628
- context "with 64-bit arch" do
629
- let(:package_name) { "chef_rpm.x86_64" }
1460
+ context "with 64-bit arch", :intel_64bit do
630
1461
  it "does nothing if the package is not installed" do
631
1462
  flush_cache
632
- dnf_package.run_action(:remove)
633
- expect(dnf_package.updated_by_last_action?).to be false
634
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
1463
+ dnf_package "chef_rpm.#{pkg_arch}" do
1464
+ options default_options
1465
+ action :remove
1466
+ end.should_not_be_updated
1467
+ expect_matching_installed_version("^package chef_rpm is not installed$")
635
1468
  end
636
1469
 
637
1470
  it "removes the package if the package is installed" do
638
- preinstall("chef_rpm-1.10-1.x86_64.rpm")
639
- dnf_package.run_action(:remove)
640
- expect(dnf_package.updated_by_last_action?).to be true
641
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
1471
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1472
+ dnf_package "chef_rpm.#{pkg_arch}" do
1473
+ options default_options
1474
+ action :remove
1475
+ end.should_be_updated
1476
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1477
+ dnf_package "chef_rpm.#{pkg_arch}" do
1478
+ options default_options
1479
+ action :remove
1480
+ end.should_not_be_updated
642
1481
  end
643
1482
 
644
1483
  it "removes the package if the prior version package is installed" do
645
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
646
- dnf_package.run_action(:remove)
647
- expect(dnf_package.updated_by_last_action?).to be true
648
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
1484
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1485
+ dnf_package "chef_rpm.#{pkg_arch}" do
1486
+ options default_options
1487
+ action :remove
1488
+ end.should_be_updated
1489
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1490
+ dnf_package "chef_rpm.#{pkg_arch}" do
1491
+ options default_options
1492
+ action :remove
1493
+ end.should_not_be_updated
649
1494
  end
650
1495
 
651
1496
  it "does nothing if the i686 package is installed" do
652
1497
  preinstall("chef_rpm-1.10-1.i686.rpm")
653
- dnf_package.run_action(:remove)
654
- expect(dnf_package.updated_by_last_action?).to be false
655
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.i686")
1498
+ dnf_package "chef_rpm.#{pkg_arch}" do
1499
+ options default_options
1500
+ action :remove
1501
+ end.should_not_be_updated
1502
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
656
1503
  end
657
1504
 
658
1505
  it "does nothing if the prior version i686 package is installed" do
659
1506
  preinstall("chef_rpm-1.2-1.i686.rpm")
660
- dnf_package.run_action(:remove)
661
- expect(dnf_package.updated_by_last_action?).to be false
662
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.2-1.i686")
1507
+ dnf_package "chef_rpm.#{pkg_arch}" do
1508
+ options default_options
1509
+ action :remove
1510
+ end.should_not_be_updated
1511
+ expect_matching_installed_version("^chef_rpm-1.2-1.i686$")
663
1512
  end
664
1513
  end
665
1514
 
666
- context "with 32-bit arch" do
667
- let(:package_name) { "chef_rpm.i686" }
1515
+ context "with 32-bit arch", :intel_64bit do
668
1516
  it "removes only the 32-bit arch if both are installed" do
669
- preinstall("chef_rpm-1.10-1.x86_64.rpm", "chef_rpm-1.10-1.i686.rpm")
670
- dnf_package.run_action(:remove)
671
- expect(dnf_package.updated_by_last_action?).to be true
672
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("chef_rpm-1.10-1.x86_64")
1517
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
1518
+ dnf_package "chef_rpm.i686" do
1519
+ options default_options
1520
+ action :remove
1521
+ end.should_be_updated
1522
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1523
+ dnf_package "chef_rpm.i686" do
1524
+ options default_options
1525
+ action :remove
1526
+ end.should_not_be_updated
673
1527
  end
674
1528
  end
675
1529
 
676
1530
  context "with no available version" do
677
1531
  it "works when a package is installed" do
678
1532
  FileUtils.rm_f "/etc/yum.repos.d/chef-dnf-localtesting.repo"
679
- preinstall("chef_rpm-1.2-1.x86_64.rpm")
680
- dnf_package.run_action(:remove)
681
- expect(dnf_package.updated_by_last_action?).to be true
682
- expect(shell_out("rpm -q chef_rpm").stdout.chomp).to eql("package chef_rpm is not installed")
1533
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1534
+ dnf_package "chef_rpm" do
1535
+ options "--nogpgcheck --disablerepo=*"
1536
+ action :remove
1537
+ end.should_be_updated
1538
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1539
+ dnf_package "chef_rpm" do
1540
+ options "--nogpgcheck --disablerepo=*"
1541
+ action :remove
1542
+ end.should_not_be_updated
683
1543
  end
684
1544
  end
685
1545
  end
1546
+
1547
+ describe ":lock and :unlock" do
1548
+ before(:all) do
1549
+ shell_out("dnf -y install python3-dnf-plugin-versionlock")
1550
+ end
1551
+
1552
+ before(:each) do
1553
+ shell_out("dnf versionlock delete 'chef_rpm-*'") # will exit with error when nothing is locked, we don't care
1554
+ end
1555
+
1556
+ it "locks an rpm" do
1557
+ flush_cache
1558
+ dnf_package "chef_rpm" do
1559
+ options default_options
1560
+ action :lock
1561
+ end.should_be_updated
1562
+ expect(shell_out("dnf versionlock list").stdout.chomp).to match("^chef_rpm-0:")
1563
+ dnf_package "chef_rpm" do
1564
+ options default_options
1565
+ action :lock
1566
+ end.should_not_be_updated
1567
+ end
1568
+
1569
+ it "does not lock if its already locked" do
1570
+ flush_cache
1571
+ shell_out!("dnf versionlock add chef_rpm")
1572
+ dnf_package "chef_rpm" do
1573
+ options default_options
1574
+ action :lock
1575
+ end.should_not_be_updated
1576
+ expect(shell_out("dnf versionlock list").stdout.chomp).to match("^chef_rpm-0:")
1577
+ end
1578
+
1579
+ it "unlocks an rpm" do
1580
+ flush_cache
1581
+ shell_out!("dnf versionlock add chef_rpm")
1582
+ dnf_package "chef_rpm" do
1583
+ options default_options
1584
+ action :unlock
1585
+ end.should_be_updated
1586
+ expect(shell_out("dnf versionlock list").stdout.chomp).not_to match("^chef_rpm-0:")
1587
+ dnf_package "chef_rpm" do
1588
+ options default_options
1589
+ action :unlock
1590
+ end.should_not_be_updated
1591
+ end
1592
+
1593
+ it "does not unlock an already locked rpm" do
1594
+ flush_cache
1595
+ dnf_package "chef_rpm" do
1596
+ options default_options
1597
+ action :unlock
1598
+ end.should_not_be_updated
1599
+ expect(shell_out("dnf versionlock list").stdout.chomp).not_to match("^chef_rpm-0:")
1600
+ end
1601
+
1602
+ it "check that we can lock based on provides" do
1603
+ flush_cache
1604
+ dnf_package "chef_rpm_provides" do
1605
+ options default_options
1606
+ action :lock
1607
+ end.should_be_updated
1608
+ expect(shell_out("dnf versionlock list").stdout.chomp).to match("^chef_rpm-0:")
1609
+ dnf_package "chef_rpm_provides" do
1610
+ options default_options
1611
+ action :lock
1612
+ end.should_not_be_updated
1613
+ end
1614
+
1615
+ it "check that we can unlock based on provides" do
1616
+ flush_cache
1617
+ shell_out!("dnf versionlock add chef_rpm")
1618
+ dnf_package "chef_rpm_provides" do
1619
+ options default_options
1620
+ action :unlock
1621
+ end.should_be_updated
1622
+ expect(shell_out("dnf versionlock list").stdout.chomp).not_to match("^chef_rpm-0:")
1623
+ dnf_package "chef_rpm_provides" do
1624
+ options default_options
1625
+ action :unlock
1626
+ end.should_not_be_updated
1627
+ end
1628
+ end
686
1629
  end