chef 16.14.1 → 17.0.242

Sign up to get free protection for your applications and to get access to all the features.
Files changed (615) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -13
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +6 -8
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/applications.rb +0 -1
  9. data/lib/chef/chef_fs/command_line.rb +5 -2
  10. data/lib/chef/chef_fs/file_system.rb +9 -10
  11. data/lib/chef/client.rb +2 -2
  12. data/lib/chef/compliance/default_attributes.rb +4 -3
  13. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  14. data/lib/chef/compliance/reporter/automate.rb +17 -7
  15. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  16. data/lib/chef/compliance/reporter/cli.rb +77 -0
  17. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  18. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  19. data/lib/chef/compliance/runner.rb +65 -27
  20. data/lib/chef/cookbook/gem_installer.rb +1 -5
  21. data/lib/chef/cookbook/synchronizer.rb +3 -5
  22. data/lib/chef/cookbook_loader.rb +2 -4
  23. data/lib/chef/cookbook_uploader.rb +0 -1
  24. data/lib/chef/data_bag_item.rb +11 -2
  25. data/lib/chef/delayed_evaluator.rb +4 -0
  26. data/lib/chef/deprecated.rb +4 -0
  27. data/lib/chef/dsl/chef_vault.rb +6 -6
  28. data/lib/chef/dsl/reboot_pending.rb +1 -2
  29. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  30. data/lib/chef/group.rb +75 -0
  31. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  32. data/lib/chef/node/attribute.rb +6 -4
  33. data/lib/chef/node/immutable_collections.rb +13 -0
  34. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  35. data/lib/chef/org.rb +3 -2
  36. data/lib/chef/property.rb +18 -0
  37. data/lib/chef/provider.rb +1 -1
  38. data/lib/chef/provider/cron.rb +1 -1
  39. data/lib/chef/provider/execute.rb +2 -1
  40. data/lib/chef/provider/file.rb +1 -1
  41. data/lib/chef/provider/git.rb +5 -7
  42. data/lib/chef/provider/group/groupadd.rb +3 -3
  43. data/lib/chef/provider/group/groupmod.rb +3 -3
  44. data/lib/chef/provider/group/pw.rb +3 -3
  45. data/lib/chef/provider/ifconfig.rb +2 -2
  46. data/lib/chef/provider/link.rb +2 -2
  47. data/lib/chef/provider/mount.rb +5 -5
  48. data/lib/chef/provider/mount/aix.rb +3 -3
  49. data/lib/chef/provider/mount/mount.rb +5 -5
  50. data/lib/chef/provider/mount/windows.rb +1 -1
  51. data/lib/chef/provider/package.rb +17 -21
  52. data/lib/chef/provider/package/apt.rb +27 -1
  53. data/lib/chef/provider/package/deb.rb +3 -3
  54. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  55. data/lib/chef/provider/package/portage.rb +2 -2
  56. data/lib/chef/provider/package/rubygems.rb +9 -15
  57. data/lib/chef/provider/package/windows.rb +2 -4
  58. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  59. data/lib/chef/provider/route.rb +2 -2
  60. data/lib/chef/provider/service.rb +6 -6
  61. data/lib/chef/provider/service/aixinit.rb +1 -1
  62. data/lib/chef/provider/service/debian.rb +1 -1
  63. data/lib/chef/provider/service/freebsd.rb +15 -21
  64. data/lib/chef/provider/service/macosx.rb +4 -4
  65. data/lib/chef/provider/service/systemd.rb +43 -14
  66. data/lib/chef/provider/service/upstart.rb +2 -13
  67. data/lib/chef/provider/service/windows.rb +12 -12
  68. data/lib/chef/provider/subversion.rb +10 -12
  69. data/lib/chef/provider/systemd_unit.rb +36 -10
  70. data/lib/chef/provider/template/content.rb +2 -6
  71. data/lib/chef/provider/user.rb +2 -2
  72. data/lib/chef/provider/user/dscl.rb +1 -1
  73. data/lib/chef/provider/user/mac.rb +17 -20
  74. data/lib/chef/provider/user/pw.rb +1 -1
  75. data/lib/chef/provider/user/windows.rb +1 -1
  76. data/lib/chef/provider/zypper_repository.rb +2 -2
  77. data/lib/chef/providers.rb +0 -1
  78. data/lib/chef/resource/alternatives.rb +6 -6
  79. data/lib/chef/resource/apt_package.rb +1 -1
  80. data/lib/chef/resource/apt_preference.rb +2 -2
  81. data/lib/chef/resource/apt_repository.rb +6 -6
  82. data/lib/chef/resource/apt_update.rb +3 -2
  83. data/lib/chef/resource/archive_file.rb +2 -3
  84. data/lib/chef/resource/breakpoint.rb +1 -1
  85. data/lib/chef/resource/build_essential.rb +2 -6
  86. data/lib/chef/resource/chef_client_config.rb +2 -2
  87. data/lib/chef/resource/chef_client_cron.rb +4 -4
  88. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  89. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  90. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  91. data/lib/chef/resource/chef_handler.rb +3 -7
  92. data/lib/chef/resource/chef_sleep.rb +1 -1
  93. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  94. data/lib/chef/resource/chocolatey_config.rb +2 -6
  95. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  96. data/lib/chef/resource/chocolatey_source.rb +4 -10
  97. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  98. data/lib/chef/resource/cron_access.rb +2 -4
  99. data/lib/chef/resource/dmg_package.rb +6 -10
  100. data/lib/chef/resource/dpkg_package.rb +1 -1
  101. data/lib/chef/resource/execute.rb +6 -1
  102. data/lib/chef/resource/file.rb +1 -1
  103. data/lib/chef/resource/group.rb +2 -2
  104. data/lib/chef/resource/homebrew_cask.rb +2 -6
  105. data/lib/chef/resource/homebrew_tap.rb +2 -6
  106. data/lib/chef/resource/hostname.rb +21 -17
  107. data/lib/chef/resource/http_request.rb +1 -1
  108. data/lib/chef/resource/kernel_module.rb +6 -17
  109. data/lib/chef/resource/locale.rb +2 -3
  110. data/lib/chef/resource/lwrp_base.rb +4 -0
  111. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  112. data/lib/chef/resource/mdadm.rb +53 -7
  113. data/lib/chef/resource/mount.rb +2 -1
  114. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  115. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  116. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  117. data/lib/chef/resource/plist.rb +7 -7
  118. data/lib/chef/resource/powershell_script.rb +1 -1
  119. data/lib/chef/resource/remote_file.rb +1 -1
  120. data/lib/chef/resource/rhsm_errata.rb +16 -1
  121. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  122. data/lib/chef/resource/rhsm_register.rb +12 -6
  123. data/lib/chef/resource/rhsm_repo.rb +2 -6
  124. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  125. data/lib/chef/resource/scm/git.rb +1 -1
  126. data/lib/chef/resource/sudo.rb +6 -6
  127. data/lib/chef/resource/sysctl.rb +2 -6
  128. data/lib/chef/resource/systemd_unit.rb +2 -2
  129. data/lib/chef/resource/template.rb +1 -1
  130. data/lib/chef/resource/timezone.rb +1 -3
  131. data/lib/chef/resource/user/mac_user.rb +1 -1
  132. data/lib/chef/resource/user_ulimit.rb +2 -2
  133. data/lib/chef/resource/windows_ad_join.rb +2 -6
  134. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  135. data/lib/chef/resource/windows_auto_run.rb +2 -5
  136. data/lib/chef/resource/windows_certificate.rb +207 -73
  137. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  138. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  139. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  140. data/lib/chef/resource/windows_dns_record.rb +2 -6
  141. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  142. data/lib/chef/resource/windows_env.rb +5 -4
  143. data/lib/chef/resource/windows_feature.rb +3 -9
  144. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  145. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  146. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  147. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  148. data/lib/chef/resource/windows_font.rb +2 -4
  149. data/lib/chef/resource/windows_pagefile.rb +2 -6
  150. data/lib/chef/resource/windows_path.rb +2 -2
  151. data/lib/chef/resource/windows_printer.rb +4 -4
  152. data/lib/chef/resource/windows_printer_port.rb +6 -6
  153. data/lib/chef/resource/windows_security_policy.rb +53 -40
  154. data/lib/chef/resource/windows_share.rb +14 -21
  155. data/lib/chef/resource/windows_shortcut.rb +4 -6
  156. data/lib/chef/resource/windows_task.rb +17 -5
  157. data/lib/chef/resource/windows_uac.rb +1 -1
  158. data/lib/chef/resource/windows_user_privilege.rb +4 -4
  159. data/lib/chef/resource/windows_workgroup.rb +1 -2
  160. data/lib/chef/resources.rb +0 -1
  161. data/lib/chef/user.rb +0 -1
  162. data/lib/chef/user_v1.rb +3 -4
  163. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  164. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  165. data/lib/chef/version.rb +1 -1
  166. data/lib/chef/win32/registry.rb +4 -2
  167. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  168. data/spec/data/lwrp/resources/bar.rb +2 -0
  169. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  170. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  171. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  172. data/spec/data/lwrp/resources/foo.rb +2 -0
  173. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  174. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  175. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  176. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  177. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  178. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  179. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  180. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  181. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  182. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  183. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  184. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  185. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  186. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  187. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  188. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  189. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  190. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  191. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  192. data/spec/functional/resource/apt_package_spec.rb +1 -1
  193. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  194. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  195. data/spec/functional/resource/registry_spec.rb +8 -8
  196. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  197. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  198. data/spec/functional/version_spec.rb +1 -1
  199. data/spec/functional/win32/registry_spec.rb +1 -1
  200. data/spec/integration/client/client_spec.rb +5 -2
  201. data/spec/integration/client/exit_code_spec.rb +1 -1
  202. data/spec/integration/client/ipv6_spec.rb +1 -1
  203. data/spec/integration/compliance/compliance_spec.rb +1 -1
  204. data/spec/integration/ohai/ohai_spec.rb +7 -6
  205. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  206. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  207. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  208. data/spec/integration/recipes/notifies_spec.rb +15 -1
  209. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  210. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  211. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  212. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  213. data/spec/spec_helper.rb +10 -13
  214. data/spec/support/chef_helpers.rb +0 -16
  215. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  216. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  217. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  218. data/spec/support/matchers/leak.rb +7 -9
  219. data/spec/support/platform_helpers.rb +1 -8
  220. data/spec/support/shared/integration/integration_helper.rb +0 -1
  221. data/spec/support/shared/unit/script_resource.rb +2 -2
  222. data/spec/unit/application/solo_spec.rb +2 -2
  223. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  224. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  225. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  226. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  227. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  228. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  229. data/spec/unit/compliance/runner_spec.rb +30 -4
  230. data/spec/unit/data_bag_item_spec.rb +1 -6
  231. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  232. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  233. data/spec/unit/lwrp_spec.rb +1 -1
  234. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  235. data/spec/unit/node/attribute_spec.rb +1 -1
  236. data/spec/unit/node_spec.rb +78 -0
  237. data/spec/unit/org_group_spec.rb +45 -0
  238. data/spec/unit/property_spec.rb +23 -22
  239. data/spec/unit/provider/cron_spec.rb +1 -1
  240. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  241. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  242. data/spec/unit/provider/group/pw_spec.rb +2 -2
  243. data/spec/unit/provider/group_spec.rb +1 -1
  244. data/spec/unit/provider/package/apt_spec.rb +84 -18
  245. data/spec/unit/provider/package/deb_spec.rb +3 -3
  246. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  247. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  248. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  249. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  250. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  251. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  252. data/spec/unit/provider/service/windows_spec.rb +2 -2
  253. data/spec/unit/provider/subversion_spec.rb +2 -2
  254. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  255. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  256. data/spec/unit/provider_spec.rb +0 -8
  257. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  258. data/spec/unit/resource/windows_task_spec.rb +1 -1
  259. data/spec/unit/user_spec.rb +1 -1
  260. data/spec/unit/user_v1_spec.rb +6 -4
  261. data/tasks/rspec.rb +15 -7
  262. metadata +17 -380
  263. data/bin/knife +0 -24
  264. data/lib/chef/application/knife.rb +0 -234
  265. data/lib/chef/application/windows_service.rb +0 -338
  266. data/lib/chef/application/windows_service_manager.rb +0 -205
  267. data/lib/chef/chef_fs/knife.rb +0 -160
  268. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  269. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  270. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  271. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  272. data/lib/chef/knife.rb +0 -665
  273. data/lib/chef/knife/acl_add.rb +0 -57
  274. data/lib/chef/knife/acl_base.rb +0 -183
  275. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  276. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  277. data/lib/chef/knife/acl_remove.rb +0 -62
  278. data/lib/chef/knife/acl_show.rb +0 -56
  279. data/lib/chef/knife/bootstrap.rb +0 -1192
  280. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  281. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  282. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  283. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  284. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  285. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  286. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  287. data/lib/chef/knife/client_create.rb +0 -101
  288. data/lib/chef/knife/client_delete.rb +0 -62
  289. data/lib/chef/knife/client_edit.rb +0 -52
  290. data/lib/chef/knife/client_key_create.rb +0 -73
  291. data/lib/chef/knife/client_key_delete.rb +0 -80
  292. data/lib/chef/knife/client_key_edit.rb +0 -83
  293. data/lib/chef/knife/client_key_list.rb +0 -73
  294. data/lib/chef/knife/client_key_show.rb +0 -80
  295. data/lib/chef/knife/client_list.rb +0 -41
  296. data/lib/chef/knife/client_reregister.rb +0 -58
  297. data/lib/chef/knife/client_show.rb +0 -48
  298. data/lib/chef/knife/config_get.rb +0 -39
  299. data/lib/chef/knife/config_get_profile.rb +0 -37
  300. data/lib/chef/knife/config_list.rb +0 -139
  301. data/lib/chef/knife/config_list_profiles.rb +0 -37
  302. data/lib/chef/knife/config_show.rb +0 -127
  303. data/lib/chef/knife/config_use.rb +0 -61
  304. data/lib/chef/knife/config_use_profile.rb +0 -47
  305. data/lib/chef/knife/configure.rb +0 -150
  306. data/lib/chef/knife/configure_client.rb +0 -48
  307. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  308. data/lib/chef/knife/cookbook_delete.rb +0 -151
  309. data/lib/chef/knife/cookbook_download.rb +0 -142
  310. data/lib/chef/knife/cookbook_list.rb +0 -47
  311. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  312. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  313. data/lib/chef/knife/cookbook_show.rb +0 -98
  314. data/lib/chef/knife/cookbook_upload.rb +0 -292
  315. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  316. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  317. data/lib/chef/knife/core/formatting_options.rb +0 -49
  318. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  319. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  320. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  321. data/lib/chef/knife/core/node_editor.rb +0 -130
  322. data/lib/chef/knife/core/node_presenter.rb +0 -133
  323. data/lib/chef/knife/core/object_loader.rb +0 -115
  324. data/lib/chef/knife/core/status_presenter.rb +0 -147
  325. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  326. data/lib/chef/knife/core/text_formatter.rb +0 -85
  327. data/lib/chef/knife/core/ui.rb +0 -338
  328. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  329. data/lib/chef/knife/data_bag_create.rb +0 -81
  330. data/lib/chef/knife/data_bag_delete.rb +0 -49
  331. data/lib/chef/knife/data_bag_edit.rb +0 -74
  332. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  333. data/lib/chef/knife/data_bag_list.rb +0 -42
  334. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  335. data/lib/chef/knife/data_bag_show.rb +0 -69
  336. data/lib/chef/knife/delete.rb +0 -125
  337. data/lib/chef/knife/deps.rb +0 -156
  338. data/lib/chef/knife/diff.rb +0 -83
  339. data/lib/chef/knife/download.rb +0 -84
  340. data/lib/chef/knife/edit.rb +0 -88
  341. data/lib/chef/knife/environment_compare.rb +0 -128
  342. data/lib/chef/knife/environment_create.rb +0 -52
  343. data/lib/chef/knife/environment_delete.rb +0 -44
  344. data/lib/chef/knife/environment_edit.rb +0 -44
  345. data/lib/chef/knife/environment_from_file.rb +0 -84
  346. data/lib/chef/knife/environment_list.rb +0 -41
  347. data/lib/chef/knife/environment_show.rb +0 -47
  348. data/lib/chef/knife/exec.rb +0 -99
  349. data/lib/chef/knife/group_add.rb +0 -55
  350. data/lib/chef/knife/group_create.rb +0 -49
  351. data/lib/chef/knife/group_destroy.rb +0 -53
  352. data/lib/chef/knife/group_list.rb +0 -43
  353. data/lib/chef/knife/group_remove.rb +0 -56
  354. data/lib/chef/knife/group_show.rb +0 -49
  355. data/lib/chef/knife/key_create.rb +0 -112
  356. data/lib/chef/knife/key_create_base.rb +0 -50
  357. data/lib/chef/knife/key_delete.rb +0 -55
  358. data/lib/chef/knife/key_edit.rb +0 -118
  359. data/lib/chef/knife/key_edit_base.rb +0 -55
  360. data/lib/chef/knife/key_list.rb +0 -90
  361. data/lib/chef/knife/key_list_base.rb +0 -45
  362. data/lib/chef/knife/key_show.rb +0 -53
  363. data/lib/chef/knife/list.rb +0 -177
  364. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  365. data/lib/chef/knife/node_create.rb +0 -47
  366. data/lib/chef/knife/node_delete.rb +0 -46
  367. data/lib/chef/knife/node_edit.rb +0 -70
  368. data/lib/chef/knife/node_environment_set.rb +0 -53
  369. data/lib/chef/knife/node_from_file.rb +0 -51
  370. data/lib/chef/knife/node_list.rb +0 -44
  371. data/lib/chef/knife/node_policy_set.rb +0 -79
  372. data/lib/chef/knife/node_run_list_add.rb +0 -104
  373. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  374. data/lib/chef/knife/node_run_list_set.rb +0 -66
  375. data/lib/chef/knife/node_show.rb +0 -63
  376. data/lib/chef/knife/null.rb +0 -12
  377. data/lib/chef/knife/raw.rb +0 -123
  378. data/lib/chef/knife/recipe_list.rb +0 -32
  379. data/lib/chef/knife/rehash.rb +0 -50
  380. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  381. data/lib/chef/knife/role_create.rb +0 -53
  382. data/lib/chef/knife/role_delete.rb +0 -46
  383. data/lib/chef/knife/role_edit.rb +0 -45
  384. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  385. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  386. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  387. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  388. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  389. data/lib/chef/knife/role_from_file.rb +0 -51
  390. data/lib/chef/knife/role_list.rb +0 -42
  391. data/lib/chef/knife/role_run_list_add.rb +0 -87
  392. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  393. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  394. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  395. data/lib/chef/knife/role_run_list_set.rb +0 -69
  396. data/lib/chef/knife/role_show.rb +0 -48
  397. data/lib/chef/knife/search.rb +0 -194
  398. data/lib/chef/knife/serve.rb +0 -65
  399. data/lib/chef/knife/show.rb +0 -72
  400. data/lib/chef/knife/ssh.rb +0 -645
  401. data/lib/chef/knife/ssl_check.rb +0 -284
  402. data/lib/chef/knife/ssl_fetch.rb +0 -161
  403. data/lib/chef/knife/status.rb +0 -95
  404. data/lib/chef/knife/supermarket_download.rb +0 -121
  405. data/lib/chef/knife/supermarket_install.rb +0 -192
  406. data/lib/chef/knife/supermarket_list.rb +0 -76
  407. data/lib/chef/knife/supermarket_search.rb +0 -53
  408. data/lib/chef/knife/supermarket_share.rb +0 -166
  409. data/lib/chef/knife/supermarket_show.rb +0 -66
  410. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  411. data/lib/chef/knife/tag_create.rb +0 -52
  412. data/lib/chef/knife/tag_delete.rb +0 -60
  413. data/lib/chef/knife/tag_list.rb +0 -47
  414. data/lib/chef/knife/upload.rb +0 -86
  415. data/lib/chef/knife/user_create.rb +0 -107
  416. data/lib/chef/knife/user_delete.rb +0 -44
  417. data/lib/chef/knife/user_dissociate.rb +0 -42
  418. data/lib/chef/knife/user_edit.rb +0 -52
  419. data/lib/chef/knife/user_invite_add.rb +0 -43
  420. data/lib/chef/knife/user_invite_list.rb +0 -34
  421. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  422. data/lib/chef/knife/user_key_create.rb +0 -73
  423. data/lib/chef/knife/user_key_delete.rb +0 -80
  424. data/lib/chef/knife/user_key_edit.rb +0 -83
  425. data/lib/chef/knife/user_key_list.rb +0 -73
  426. data/lib/chef/knife/user_key_show.rb +0 -80
  427. data/lib/chef/knife/user_list.rb +0 -42
  428. data/lib/chef/knife/user_reregister.rb +0 -59
  429. data/lib/chef/knife/user_show.rb +0 -48
  430. data/lib/chef/knife/xargs.rb +0 -282
  431. data/lib/chef/knife/yaml_convert.rb +0 -91
  432. data/lib/chef/resource/user/dscl_user.rb +0 -35
  433. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  434. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  435. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  436. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  437. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  438. data/spec/functional/knife/configure_spec.rb +0 -33
  439. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  440. data/spec/functional/knife/exec_spec.rb +0 -55
  441. data/spec/functional/knife/rehash_spec.rb +0 -39
  442. data/spec/functional/knife/smoke_test.rb +0 -42
  443. data/spec/functional/knife/ssh_spec.rb +0 -352
  444. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  445. data/spec/functional/resource/windows_service_spec.rb +0 -105
  446. data/spec/functional/win32/service_manager_spec.rb +0 -220
  447. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  448. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  449. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  450. data/spec/integration/knife/chefignore_spec.rb +0 -301
  451. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  452. data/spec/integration/knife/client_create_spec.rb +0 -70
  453. data/spec/integration/knife/client_delete_spec.rb +0 -64
  454. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  455. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  456. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  457. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  458. data/spec/integration/knife/client_list_spec.rb +0 -49
  459. data/spec/integration/knife/client_show_spec.rb +0 -37
  460. data/spec/integration/knife/common_options_spec.rb +0 -174
  461. data/spec/integration/knife/config_list_spec.rb +0 -220
  462. data/spec/integration/knife/config_show_spec.rb +0 -192
  463. data/spec/integration/knife/config_use_spec.rb +0 -198
  464. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  465. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  466. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  467. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  468. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  469. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  470. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  471. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  472. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  473. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  474. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  475. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  476. data/spec/integration/knife/delete_spec.rb +0 -1018
  477. data/spec/integration/knife/deps_spec.rb +0 -703
  478. data/spec/integration/knife/diff_spec.rb +0 -605
  479. data/spec/integration/knife/download_spec.rb +0 -1336
  480. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  481. data/spec/integration/knife/environment_create_spec.rb +0 -41
  482. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  483. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  484. data/spec/integration/knife/environment_list_spec.rb +0 -42
  485. data/spec/integration/knife/environment_show_spec.rb +0 -77
  486. data/spec/integration/knife/list_spec.rb +0 -1060
  487. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  488. data/spec/integration/knife/node_create_spec.rb +0 -47
  489. data/spec/integration/knife/node_delete_spec.rb +0 -48
  490. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  491. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  492. data/spec/integration/knife/node_list_spec.rb +0 -45
  493. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  494. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  495. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  496. data/spec/integration/knife/node_show_spec.rb +0 -36
  497. data/spec/integration/knife/raw_spec.rb +0 -297
  498. data/spec/integration/knife/redirection_spec.rb +0 -64
  499. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  500. data/spec/integration/knife/role_create_spec.rb +0 -41
  501. data/spec/integration/knife/role_delete_spec.rb +0 -48
  502. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  503. data/spec/integration/knife/role_list_spec.rb +0 -45
  504. data/spec/integration/knife/role_show_spec.rb +0 -51
  505. data/spec/integration/knife/search_node_spec.rb +0 -40
  506. data/spec/integration/knife/serve_spec.rb +0 -92
  507. data/spec/integration/knife/show_spec.rb +0 -197
  508. data/spec/integration/knife/upload_spec.rb +0 -1617
  509. data/spec/support/shared/functional/knife.rb +0 -37
  510. data/spec/support/shared/functional/win32_service.rb +0 -57
  511. data/spec/support/shared/integration/knife_support.rb +0 -192
  512. data/spec/support/shared/unit/knife_shared.rb +0 -39
  513. data/spec/unit/application/knife_spec.rb +0 -241
  514. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  515. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  516. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  517. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  518. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  519. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  520. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  521. data/spec/unit/knife/client_create_spec.rb +0 -169
  522. data/spec/unit/knife/client_delete_spec.rb +0 -99
  523. data/spec/unit/knife/client_edit_spec.rb +0 -53
  524. data/spec/unit/knife/client_list_spec.rb +0 -34
  525. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  526. data/spec/unit/knife/client_show_spec.rb +0 -52
  527. data/spec/unit/knife/configure_client_spec.rb +0 -81
  528. data/spec/unit/knife/configure_spec.rb +0 -190
  529. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  530. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  531. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  532. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  533. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  534. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  535. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  536. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  537. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  538. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  539. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  540. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  541. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  542. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  543. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  544. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  545. data/spec/unit/knife/core/ui_spec.rb +0 -656
  546. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  547. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  548. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  549. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  550. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  551. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  552. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  553. data/spec/unit/knife/environment_create_spec.rb +0 -91
  554. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  555. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  556. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  557. data/spec/unit/knife/environment_list_spec.rb +0 -54
  558. data/spec/unit/knife/environment_show_spec.rb +0 -52
  559. data/spec/unit/knife/key_create_spec.rb +0 -223
  560. data/spec/unit/knife/key_delete_spec.rb +0 -133
  561. data/spec/unit/knife/key_edit_spec.rb +0 -264
  562. data/spec/unit/knife/key_helper.rb +0 -74
  563. data/spec/unit/knife/key_list_spec.rb +0 -216
  564. data/spec/unit/knife/key_show_spec.rb +0 -126
  565. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  566. data/spec/unit/knife/node_delete_spec.rb +0 -77
  567. data/spec/unit/knife/node_edit_spec.rb +0 -116
  568. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  569. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  570. data/spec/unit/knife/node_list_spec.rb +0 -62
  571. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  572. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  573. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  574. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  575. data/spec/unit/knife/node_show_spec.rb +0 -65
  576. data/spec/unit/knife/raw_spec.rb +0 -43
  577. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  578. data/spec/unit/knife/role_create_spec.rb +0 -80
  579. data/spec/unit/knife/role_delete_spec.rb +0 -67
  580. data/spec/unit/knife/role_edit_spec.rb +0 -77
  581. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  582. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  583. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  584. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  585. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  586. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  587. data/spec/unit/knife/role_list_spec.rb +0 -54
  588. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  589. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  590. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  591. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  592. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  593. data/spec/unit/knife/role_show_spec.rb +0 -59
  594. data/spec/unit/knife/ssh_spec.rb +0 -403
  595. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  596. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  597. data/spec/unit/knife/status_spec.rb +0 -112
  598. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  599. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  600. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  601. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  602. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  603. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  604. data/spec/unit/knife/tag_create_spec.rb +0 -23
  605. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  606. data/spec/unit/knife/tag_list_spec.rb +0 -23
  607. data/spec/unit/knife/user_create_spec.rb +0 -184
  608. data/spec/unit/knife/user_delete_spec.rb +0 -46
  609. data/spec/unit/knife/user_edit_spec.rb +0 -48
  610. data/spec/unit/knife/user_list_spec.rb +0 -36
  611. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  612. data/spec/unit/knife/user_show_spec.rb +0 -46
  613. data/spec/unit/knife_spec.rb +0 -634
  614. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  615. data/spec/unit/windows_service_spec.rb +0 -118
@@ -40,22 +40,6 @@ def make_tmpname(prefix_suffix, n = nil)
40
40
  path << suffix
41
41
  end
42
42
 
43
- # This is a helper to determine if the ruby in the PATH contains
44
- # win32/service gem. windows_service_manager tests create a windows
45
- # service that starts with the system ruby and requires this gem.
46
- def system_windows_service_gem?
47
- windows_service_gem_check_command = %{ruby -r "win32/daemon" -e ":noop" > #{File::NULL} 2>&1}
48
- if defined?(Bundler)
49
- Bundler.with_unbundled_env do
50
- # This returns true if the gem can be loaded
51
- system(windows_service_gem_check_command)
52
- end
53
- else
54
- # This returns true if the gem can be loaded
55
- system(windows_service_gem_check_command)
56
- end
57
- end
58
-
59
43
  # This is a helper to canonicalize paths that we're using in the file
60
44
  # tests.
61
45
  def canonicalize_path(path)
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "chef/knife"
20
19
  require "chef/json_compat"
21
20
 
22
21
  class Chef
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
- require "chef/knife"
19
18
  require "chef/json_compat"
20
19
 
21
20
  class Chef
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "chef/knife"
20
19
  require "chef/json_compat"
21
20
 
22
21
  class Chef
@@ -59,15 +59,13 @@ module Matchers
59
59
  end
60
60
 
61
61
  def profiler
62
- @profiler ||= begin
63
- if ChefUtils.windows?
64
- require File.join(__dir__, "..", "platforms", "prof", "win32")
65
- RSpec::Prof::Win32::Profiler.new
66
- else
67
- require File.join(__dir__, "..", "prof", "gc")
68
- RSpec::Prof::GC::Profiler.new
69
- end
70
- end
62
+ @profiler ||= if ChefUtils.windows?
63
+ require File.join(__dir__, "..", "platforms", "prof", "win32")
64
+ RSpec::Prof::Win32::Profiler.new
65
+ else
66
+ require File.join(__dir__, "..", "prof", "gc")
67
+ RSpec::Prof::GC::Profiler.new
68
+ end
71
69
  end
72
70
 
73
71
  end
@@ -2,6 +2,7 @@ require "fcntl"
2
2
  require "chef/mixin/shell_out"
3
3
  require "ohai/mixin/http_helper"
4
4
  require "ohai/mixin/gce_metadata"
5
+ require "spec/support/chef_helpers"
5
6
 
6
7
  class ShellHelpers
7
8
  extend Chef::Mixin::ShellOut
@@ -92,14 +93,6 @@ def windows_user_right?(right)
92
93
  Chef::ReservedNames::Win32::Security.get_account_right(ENV["USERNAME"]).include?(right)
93
94
  end
94
95
 
95
- def macos_1013?
96
- macos? && Gem::Requirement.new("~> 10.13.0").satisfied_by?(Gem::Version.new(ohai[:platform_version]))
97
- end
98
-
99
- def macos_gte_1014?
100
- macos? && Gem::Requirement.new(">= 10.14").satisfied_by?(Gem::Version.new(ohai[:platform_version]))
101
- end
102
-
103
96
  # detects if the hardware is 64-bit (evaluates to true in "WOW64" mode in a 32-bit app on a 64-bit system)
104
97
  def windows64?
105
98
  windows? && ( ENV["PROCESSOR_ARCHITECTURE"] == "AMD64" || ENV["PROCESSOR_ARCHITEW6432"] == "AMD64" )
@@ -22,7 +22,6 @@ require "fileutils"
22
22
  require "chef/config"
23
23
  require "chef/json_compat"
24
24
  require "chef/server_api"
25
- require "support/shared/integration/knife_support"
26
25
  require "cheffish/rspec/chef_run_support"
27
26
 
28
27
  module Cheffish
@@ -47,9 +47,9 @@ shared_examples_for "a script resource" do
47
47
  end
48
48
 
49
49
  describe "when executing guards" do
50
- it "inherits exactly the :cwd, :domain, :environment, :group, :password, :path, :user, and :umask attributes from a parent resource class" do
50
+ it "inherits exactly the :cwd, :domain, :environment, :group, :password, :path, :user, :umask, and :login attributes from a parent resource class" do
51
51
  inherited_difference = Chef::Resource::Script.guard_inherited_attributes -
52
- %i{cwd domain environment group password path user umask}
52
+ %i{cwd domain environment group password path user umask login}
53
53
 
54
54
  expect(inherited_difference).to eq([])
55
55
  end
@@ -108,7 +108,7 @@ describe Chef::Application::Solo do
108
108
  tarfile = StringIO.new("remote_tarball_content")
109
109
  target_file = StringIO.new
110
110
 
111
- expect(app).to receive(:open).with("http://junglist.gen.nz/recipes.tgz").and_yield(tarfile)
111
+ expect(URI).to receive(:open).with("http://junglist.gen.nz/recipes.tgz").and_yield(tarfile)
112
112
  expect(File).to receive(:open).with("#{Dir.tmpdir}/chef-solo/recipes.tgz", "wb").and_yield(target_file)
113
113
 
114
114
  archive = double(Mixlib::Archive)
@@ -202,7 +202,7 @@ describe Chef::Application::Solo do
202
202
  expect(Chef::Config).to receive(:find_chef_repo_path).and_return(root_path)
203
203
  app.reconfigure
204
204
  expect(Chef::Config.key?(:chef_repo_path)).to be_truthy
205
- expect(Chef::Config[:chef_repo_path]).to eq (root_path)
205
+ expect(Chef::Config[:chef_repo_path]).to eq(root_path)
206
206
  end
207
207
 
208
208
  it "runs chef-client in local mode" do
@@ -20,7 +20,7 @@ require "spec_helper"
20
20
  require "chef/chef_fs/file_pattern"
21
21
  require "chef/chef_fs/command_line"
22
22
 
23
- describe "diff", uses_diff: true do
23
+ describe "diff", uses_diff: true, ruby: ">= 3.0" do
24
24
  include FileSystemSupport
25
25
 
26
26
  # Removes the date stamp from the diff and replaces it with ' DATE'
@@ -20,7 +20,7 @@ require "spec_helper"
20
20
  require "chef/chef_fs/file_system"
21
21
  require "chef/chef_fs/file_pattern"
22
22
 
23
- describe Chef::ChefFS::FileSystem do
23
+ describe Chef::ChefFS::FileSystem, ruby: ">= 3.0" do
24
24
  include FileSystemSupport
25
25
 
26
26
  context "with empty filesystem" do
@@ -29,14 +29,6 @@ describe Chef::Compliance::Fetcher::Automate do
29
29
  expect(res.target).to eq(expected)
30
30
  end
31
31
 
32
- it "raises an exception with no data collector token" do
33
- Chef::Config[:data_collector].delete(:token)
34
-
35
- expect {
36
- Chef::Compliance::Fetcher::Automate.resolve("compliance://namespace/profile_name")
37
- }.to raise_error(/No data-collector token set/)
38
- end
39
-
40
32
  it "includes the data collector token" do
41
33
  expect(Chef::Compliance::Fetcher::Automate).to receive(:new).with(
42
34
  "https://automate.test/compliance/profiles/namespace/profile_name/tar",
@@ -108,14 +100,6 @@ describe Chef::Compliance::Fetcher::Automate do
108
100
  expect(res.target).to eq(expected)
109
101
  end
110
102
 
111
- it "raises an exception with no data collector token" do
112
- Chef::Config[:data_collector].delete(:token)
113
-
114
- expect {
115
- Chef::Compliance::Fetcher::Automate.resolve(compliance: "namespace/profile_name")
116
- }.to raise_error(Inspec::FetcherFailure, /No data-collector token set/)
117
- end
118
-
119
103
  it "includes the data collector token" do
120
104
  expect(Chef::Compliance::Fetcher::Automate).to receive(:new).with(
121
105
  "https://automate.test/compliance/profiles/namespace/profile_name/tar",
@@ -1,6 +1,7 @@
1
1
  require "spec_helper"
2
2
  require "json" # For .to_json
3
3
 
4
+ require "chef/compliance/reporter/automate"
4
5
  describe Chef::Compliance::Reporter::Automate do
5
6
  let(:reporter) { Chef::Compliance::Reporter::Automate.new(opts) }
6
7
 
@@ -264,11 +265,34 @@ describe Chef::Compliance::Reporter::Automate do
264
265
  expect(metasearch_stub).to have_been_requested
265
266
  expect(report_stub).to have_been_requested
266
267
  end
268
+ end
267
269
 
268
- it "does not send report when entity_uuid is missing" do
270
+ describe "#validate_config!" do
271
+ it "raises CMPL004 when entity_uuid is not present" do
269
272
  opts.delete(:entity_uuid)
273
+ expect { reporter.validate_config! }.to raise_error(/^CMPL004/)
274
+ end
275
+
276
+ it "raises CMPL005 when run_id is not present" do
277
+ opts.delete(:run_id)
278
+ expect { reporter.validate_config! }.to raise_error(/^CMPL005/)
279
+ end
280
+
281
+ it "raises CMPL006 when data collector URL is missing" do
282
+ Chef::Config[:data_collector] = { token: "not_nil", server_url: nil }
270
283
  reporter = Chef::Compliance::Reporter::Automate.new(opts)
271
- expect(reporter.send_report(inspec_report)).to eq(false)
284
+ expect { reporter.validate_config! }.to raise_error(/^CMPL006/)
285
+ end
286
+
287
+ it "raises CMPL006 when data collector token is missing" do
288
+ Chef::Config[:data_collector] = { token: nil, server_url: "not_nil" }
289
+ reporter = Chef::Compliance::Reporter::Automate.new(opts)
290
+ expect { reporter.validate_config! }.to raise_error(/^CMPL006/)
291
+ end
292
+
293
+ it "otherwise passes" do
294
+ Chef::Config[:data_collector] = { token: "not_nil", server_url: "not_nil" }
295
+ reporter.validate_config!
272
296
  end
273
297
  end
274
298
 
@@ -1,7 +1,9 @@
1
1
  require "spec_helper"
2
+ require "chef/compliance/reporter/chef_server_automate"
2
3
 
3
4
  describe Chef::Compliance::Reporter::ChefServerAutomate do
4
5
  before do
6
+ # Isn't this already done globally in
5
7
  WebMock.disable_net_connect!
6
8
 
7
9
  Chef::Config[:client_key] = File.expand_path("../../../data/ssl/private_key.pem", __dir__)
@@ -174,4 +176,22 @@ describe Chef::Compliance::Reporter::ChefServerAutomate do
174
176
 
175
177
  expect(report_stub).to have_been_requested
176
178
  end
179
+
180
+ describe "#validate_config!" do
181
+ it "raises CMPL007 when entity_uuid is not present" do
182
+ opts.delete(:entity_uuid)
183
+ expect { reporter.validate_config! }.to raise_error(/^CMPL007/)
184
+ end
185
+
186
+ it "raises CMPL008 when run_id is not present" do
187
+ opts.delete(:run_id)
188
+ expect { reporter.validate_config! }.to raise_error(/^CMPL008/)
189
+ end
190
+
191
+ it "otherwise passes" do
192
+ reporter.validate_config!
193
+ end
194
+
195
+ end
196
+
177
197
  end
@@ -1,4 +1,5 @@
1
1
  require "spec_helper"
2
+ require "chef/compliance/reporter/compliance_enforcer"
2
3
 
3
4
  describe Chef::Compliance::Reporter::AuditEnforcer do
4
5
  let(:reporter) { Chef::Compliance::Reporter::AuditEnforcer.new }
@@ -12,6 +12,12 @@ describe Chef::Compliance::Runner do
12
12
  end
13
13
 
14
14
  describe "#enabled?" do
15
+ context "when the node is not available" do
16
+ let(:runner) { described_class.new }
17
+ it "is false because it needs the node to answer that question" do
18
+ expect(runner).not_to be_enabled
19
+ end
20
+ end
15
21
 
16
22
  it "is true if the node attributes have audit profiles and the audit cookbook is not present, and the compliance mode attribute is nil" do
17
23
  node.normal["audit"]["profiles"]["ssh"] = { 'compliance': "base/ssh" }
@@ -124,7 +130,7 @@ describe Chef::Compliance::Runner do
124
130
  expect(runner.inspec_profiles).to eq(expected)
125
131
  end
126
132
 
127
- it "raises an error when the profiles are in the old audit-cookbook format" do
133
+ it "raises a CMPL010 message when the profiles are in the old audit-cookbook format" do
128
134
  node.normal["audit"]["profiles"] = [
129
135
  {
130
136
  name: "Windows 2019 Baseline",
@@ -132,7 +138,7 @@ describe Chef::Compliance::Runner do
132
138
  },
133
139
  ]
134
140
 
135
- expect { runner.inspec_profiles }.to raise_error(/profiles specified in an unrecognized format, expected a hash of hashes./)
141
+ expect { runner.inspec_profiles }.to raise_error(/CMPL010:/)
136
142
  end
137
143
  end
138
144
 
@@ -180,9 +186,29 @@ describe Chef::Compliance::Runner do
180
186
  end
181
187
  end
182
188
 
183
- it "fails with unexpected reporter value" do
184
- expect { runner.reporter("tacos") }.to raise_error(/'tacos' is not a supported reporter for Compliance Phase/)
189
+ end
190
+
191
+ describe "#load_and_validate! when compliance is enabled" do
192
+ before do
193
+ allow(runner).to receive(:enabled?).and_return(true)
194
+ end
195
+
196
+ it "raises CMPL003 when the reporter is not a supported reporter type" do
197
+ node.normal["audit"]["reporter"] = [ "invalid" ]
198
+ expect { runner.load_and_validate! }.to raise_error(/^CMPL003:/)
199
+ end
200
+ it "raises CMPL002 if the configured fetcher is not supported" do
201
+ node.normal["audit"]["fetcher"] = "invalid"
202
+ expect { runner.load_and_validate! }.to raise_error(/^CMPL002:/)
185
203
  end
204
+
205
+ it "validates configured reporters" do
206
+ node.normal["audit"]["reporter"] = [ "chef-automate" ]
207
+ reporter_double = double("reporter", validate_config!: nil)
208
+ expect(runner).to receive(:reporter).with("chef-automate").and_return(reporter_double)
209
+ runner.load_and_validate!
210
+ end
211
+
186
212
  end
187
213
 
188
214
  describe "#inspec_opts" do
@@ -148,12 +148,7 @@ describe Chef::DataBagItem do
148
148
  end
149
149
 
150
150
  it "implements all the methods of Hash" do
151
- methods = %i{rehash to_hash [] fetch []= store default
152
- default= default_proc index size length
153
- empty? each_value each_key each_pair each keys values
154
- values_at delete delete_if reject! clear
155
- invert update replace merge! merge has_key? has_value?
156
- key? value?}
151
+ methods = Hash.public_instance_methods
157
152
  methods.each do |m|
158
153
  expect(data_bag_item).to respond_to(m)
159
154
  end
@@ -51,9 +51,9 @@ describe Chef::DSL::RebootPending do
51
51
  end
52
52
  end
53
53
 
54
- context "platform is ubuntu" do
54
+ context "platform_family is debian" do
55
55
  before do
56
- allow(recipe).to receive(:platform?).with("ubuntu").and_return(true)
56
+ allow(recipe).to receive(:platform_family?).with("debian").and_return(true)
57
57
  end
58
58
 
59
59
  it "should return true if /var/run/reboot-required exists" do
@@ -21,7 +21,7 @@ require "spec_helper"
21
21
 
22
22
  describe Chef::Resource::RegistryKey do
23
23
 
24
- before (:all) do
24
+ before(:all) do
25
25
  events = Chef::EventDispatch::Dispatcher.new
26
26
  node = Chef::Node.new
27
27
  node.consume_external_attrs(OHAI_SYSTEM.data, {})
@@ -576,7 +576,7 @@ describe "LWRP" do
576
576
  @tmpdir = File.join(@tmpparent, "lwrp")
577
577
  Dir.mkdir(@tmpdir)
578
578
  resource_path = File.join(@tmpdir, "once.rb")
579
- IO.write(resource_path, "default_action :create")
579
+ IO.write(resource_path, "unified_mode true\ndefault_action :create")
580
580
  @test_lwrp_class = Chef::Resource::LWRPBase.build_from_file("lwrp", resource_path, nil)
581
581
  end
582
582
 
@@ -359,10 +359,11 @@ describe Chef::Mixin::ParamsValidate do
359
359
  expect(@vo.set_or_return(:test, nil, {}).object_id).to eq(value.object_id)
360
360
  end
361
361
 
362
- it "should set and return a default value when the argument is nil, then return the same value" do
362
+ it "should set and return a default value when the argument is nil, then return a dup of the value" do
363
363
  value = "meow"
364
- expect(@vo.set_or_return(:test, nil, { default: value }).object_id).to eq(value.object_id)
365
- expect(@vo.set_or_return(:test, nil, {}).object_id).to eq(value.object_id)
364
+ expect(@vo.set_or_return(:test, nil, { default: value }).object_id).not_to eq(value.object_id)
365
+ expect(@vo.set_or_return(:test, nil, {}).object_id).not_to eq(value.object_id)
366
+ expect(@vo.set_or_return(:test, nil, {})).to eql(value)
366
367
  end
367
368
 
368
369
  it "should raise an ArgumentError when argument is nil and required is true" do
@@ -898,7 +898,7 @@ describe Chef::Node::Attribute do
898
898
  end
899
899
  end
900
900
 
901
- describe "index" do
901
+ describe "index", ruby: "< 3.0.0" do
902
902
  # Hash#index is deprecated and triggers warnings.
903
903
  def silence
904
904
  old_verbose = $VERBOSE
@@ -1951,4 +1951,82 @@ describe Chef::Node do
1951
1951
  expect(node["foo"]["bar"]["test"]).to eql("right")
1952
1952
  end
1953
1953
  end
1954
+
1955
+ describe "lazy values" do
1956
+ it "supports lazy values in attributes" do
1957
+ node.instance_eval do
1958
+ default["foo"]["bar"] = lazy { node["fizz"]["buzz"] }
1959
+ default["fizz"]["buzz"] = "works"
1960
+ end
1961
+ expect(node["foo"]["bar"]).to eql("works")
1962
+ end
1963
+
1964
+ it "lazy values maintain laziness" do
1965
+ node.instance_eval do
1966
+ default["foo"]["bar"] = lazy { node["fizz"]["buzz"] }
1967
+ default["fizz"]["buzz"] = "works"
1968
+ end
1969
+ expect(node["foo"]["bar"]).to eql("works")
1970
+ node.default["fizz"]["buzz"] = "still works"
1971
+ expect(node["foo"]["bar"]).to eql("still works")
1972
+ end
1973
+
1974
+ it "supports recursive lazy values in attributes" do
1975
+ node.instance_eval do
1976
+ default["cool"]["beans"] = lazy { node["foo"]["bar"] }
1977
+ default["foo"]["bar"] = lazy { node["fizz"]["buzz"] }
1978
+ default["fizz"]["buzz"] = "works"
1979
+ end
1980
+ expect(node["cool"]["beans"]).to eql("works")
1981
+ node.default["fizz"]["buzz"] = "still works"
1982
+ expect(node["cool"]["beans"]).to eql("still works")
1983
+ end
1984
+
1985
+ it "supports top level lazy values in attributes" do
1986
+ # due to the top level deep merge cache these are special cases
1987
+ node.instance_eval do
1988
+ default["cool"] = lazy { node["foo"] }
1989
+ default["foo"] = lazy { node["fizz"] }
1990
+ default["fizz"] = "works"
1991
+ end
1992
+ expect(node["cool"]).to eql("works")
1993
+ node.default["fizz"] = "still works"
1994
+ expect(node["cool"]).to eql("still works")
1995
+ end
1996
+
1997
+ it "supports deep merged values in attributes" do
1998
+ node.instance_eval do
1999
+ override["bar"]["cool"] = lazy { node["bar"]["foo"] }
2000
+ override["bar"]["foo"] = lazy { node["bar"]["fizz"] }
2001
+ override["bar"]["fizz"] = "works"
2002
+ end
2003
+ expect(node["bar"]["cool"]).to eql("works")
2004
+ node.override["bar"]["fizz"] = "still works"
2005
+ expect(node["bar"]["cool"]).to eql("still works")
2006
+ end
2007
+
2008
+ it "supports overridden deep merged values in attributes (deep_merge)" do
2009
+ node.instance_eval do
2010
+ role_override["bar"] = { "cool" => "bad", "foo" => "bad", "fizz" => "bad" }
2011
+ force_override["bar"]["cool"] = lazy { node["bar"]["foo"] }
2012
+ force_override["bar"]["foo"] = lazy { node["bar"]["fizz"] }
2013
+ force_override["bar"]["fizz"] = "works"
2014
+ end
2015
+ expect(node["bar"]["cool"]).to eql("works")
2016
+ node.force_override["bar"]["fizz"] = "still works"
2017
+ expect(node["bar"]["cool"]).to eql("still works")
2018
+ end
2019
+
2020
+ it "supports overridden deep merged values in attributes (hash_only_merge)" do
2021
+ node.instance_eval do
2022
+ default["bar"] = { "cool" => "bad", "foo" => "bad", "fizz" => "bad" }
2023
+ override["bar"]["cool"] = lazy { node["bar"]["foo"] }
2024
+ override["bar"]["foo"] = lazy { node["bar"]["fizz"] }
2025
+ override["bar"]["fizz"] = "works"
2026
+ end
2027
+ expect(node["bar"]["cool"]).to eql("works")
2028
+ node.override["bar"]["fizz"] = "still works"
2029
+ expect(node["bar"]["cool"]).to eql("still works")
2030
+ end
2031
+ end
1954
2032
  end