chef 16.18.0-universal-mingw32 → 17.0.242-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (649) 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/action_collection.rb +1 -1
  8. data/lib/chef/application/base.rb +1 -1
  9. data/lib/chef/application.rb +1 -1
  10. data/lib/chef/applications.rb +0 -1
  11. data/lib/chef/chef_fs/command_line.rb +5 -2
  12. data/lib/chef/chef_fs/file_system.rb +9 -10
  13. data/lib/chef/client.rb +5 -5
  14. data/lib/chef/compliance/default_attributes.rb +4 -3
  15. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  16. data/lib/chef/compliance/reporter/automate.rb +17 -7
  17. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  18. data/lib/chef/compliance/reporter/cli.rb +77 -0
  19. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  20. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  21. data/lib/chef/compliance/runner.rb +65 -27
  22. data/lib/chef/cookbook/gem_installer.rb +1 -5
  23. data/lib/chef/cookbook/synchronizer.rb +3 -5
  24. data/lib/chef/cookbook_loader.rb +2 -4
  25. data/lib/chef/cookbook_uploader.rb +0 -1
  26. data/lib/chef/cookbook_version.rb +4 -26
  27. data/lib/chef/data_bag_item.rb +11 -2
  28. data/lib/chef/data_collector/run_end_message.rb +2 -2
  29. data/lib/chef/delayed_evaluator.rb +4 -0
  30. data/lib/chef/deprecated.rb +6 -12
  31. data/lib/chef/dsl/chef_vault.rb +6 -6
  32. data/lib/chef/dsl/reboot_pending.rb +1 -2
  33. data/lib/chef/exceptions.rb +0 -3
  34. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  35. data/lib/chef/formatters/error_mapper.rb +2 -2
  36. data/lib/chef/group.rb +75 -0
  37. data/lib/chef/http.rb +5 -5
  38. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  39. data/lib/chef/node/attribute.rb +9 -24
  40. data/lib/chef/node/immutable_collections.rb +13 -0
  41. data/lib/chef/node/mixin/deep_merge_cache.rb +14 -10
  42. data/lib/chef/node.rb +19 -20
  43. data/lib/chef/org.rb +3 -2
  44. data/lib/chef/policy_builder/policyfile.rb +0 -5
  45. data/lib/chef/property.rb +18 -0
  46. data/lib/chef/provider/cron.rb +1 -1
  47. data/lib/chef/provider/execute.rb +2 -1
  48. data/lib/chef/provider/file.rb +1 -1
  49. data/lib/chef/provider/git.rb +5 -7
  50. data/lib/chef/provider/group/dscl.rb +1 -1
  51. data/lib/chef/provider/group/groupadd.rb +3 -3
  52. data/lib/chef/provider/group/groupmod.rb +3 -3
  53. data/lib/chef/provider/group/pw.rb +3 -3
  54. data/lib/chef/provider/ifconfig.rb +2 -2
  55. data/lib/chef/provider/link.rb +2 -2
  56. data/lib/chef/provider/mount/aix.rb +3 -3
  57. data/lib/chef/provider/mount/mount.rb +5 -5
  58. data/lib/chef/provider/mount/windows.rb +1 -1
  59. data/lib/chef/provider/mount.rb +5 -5
  60. data/lib/chef/provider/package/apt.rb +27 -1
  61. data/lib/chef/provider/package/deb.rb +3 -3
  62. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  63. data/lib/chef/provider/package/portage.rb +2 -2
  64. data/lib/chef/provider/package/powershell.rb +0 -5
  65. data/lib/chef/provider/package/rubygems.rb +9 -15
  66. data/lib/chef/provider/package/windows.rb +2 -4
  67. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  68. data/lib/chef/provider/package.rb +17 -21
  69. data/lib/chef/provider/route.rb +2 -2
  70. data/lib/chef/provider/service/aixinit.rb +1 -1
  71. data/lib/chef/provider/service/debian.rb +1 -1
  72. data/lib/chef/provider/service/freebsd.rb +15 -21
  73. data/lib/chef/provider/service/macosx.rb +4 -4
  74. data/lib/chef/provider/service/systemd.rb +43 -14
  75. data/lib/chef/provider/service/upstart.rb +2 -13
  76. data/lib/chef/provider/service/windows.rb +12 -12
  77. data/lib/chef/provider/service.rb +6 -6
  78. data/lib/chef/provider/subversion.rb +10 -12
  79. data/lib/chef/provider/systemd_unit.rb +36 -10
  80. data/lib/chef/provider/template/content.rb +3 -7
  81. data/lib/chef/provider/user/dscl.rb +1 -1
  82. data/lib/chef/provider/user/mac.rb +17 -20
  83. data/lib/chef/provider/user/pw.rb +1 -1
  84. data/lib/chef/provider/user/windows.rb +1 -1
  85. data/lib/chef/provider/user.rb +2 -2
  86. data/lib/chef/provider/zypper_repository.rb +2 -2
  87. data/lib/chef/provider.rb +1 -1
  88. data/lib/chef/providers.rb +0 -1
  89. data/lib/chef/resource/alternatives.rb +6 -6
  90. data/lib/chef/resource/apt_package.rb +1 -1
  91. data/lib/chef/resource/apt_preference.rb +2 -2
  92. data/lib/chef/resource/apt_repository.rb +6 -6
  93. data/lib/chef/resource/apt_update.rb +3 -2
  94. data/lib/chef/resource/archive_file.rb +8 -9
  95. data/lib/chef/resource/breakpoint.rb +1 -1
  96. data/lib/chef/resource/build_essential.rb +2 -6
  97. data/lib/chef/resource/chef_client_config.rb +2 -2
  98. data/lib/chef/resource/chef_client_cron.rb +4 -4
  99. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  100. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  101. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  102. data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
  103. data/lib/chef/resource/chef_handler.rb +3 -7
  104. data/lib/chef/resource/chef_sleep.rb +1 -1
  105. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  106. data/lib/chef/resource/chocolatey_config.rb +2 -6
  107. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  108. data/lib/chef/resource/chocolatey_source.rb +4 -10
  109. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  110. data/lib/chef/resource/cron_access.rb +2 -4
  111. data/lib/chef/resource/dmg_package.rb +6 -10
  112. data/lib/chef/resource/dpkg_package.rb +1 -1
  113. data/lib/chef/resource/execute.rb +6 -1
  114. data/lib/chef/resource/file.rb +1 -1
  115. data/lib/chef/resource/group.rb +2 -2
  116. data/lib/chef/resource/homebrew_cask.rb +5 -15
  117. data/lib/chef/resource/homebrew_tap.rb +2 -6
  118. data/lib/chef/resource/hostname.rb +21 -17
  119. data/lib/chef/resource/http_request.rb +1 -1
  120. data/lib/chef/resource/kernel_module.rb +6 -17
  121. data/lib/chef/resource/locale.rb +2 -3
  122. data/lib/chef/resource/lwrp_base.rb +4 -0
  123. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  124. data/lib/chef/resource/mdadm.rb +53 -7
  125. data/lib/chef/resource/mount.rb +3 -2
  126. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  127. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  128. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  129. data/lib/chef/resource/plist.rb +7 -7
  130. data/lib/chef/resource/powershell_script.rb +1 -1
  131. data/lib/chef/resource/remote_file.rb +1 -1
  132. data/lib/chef/resource/rhsm_errata.rb +16 -1
  133. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  134. data/lib/chef/resource/rhsm_register.rb +12 -6
  135. data/lib/chef/resource/rhsm_repo.rb +2 -6
  136. data/lib/chef/resource/rhsm_subscription.rb +7 -11
  137. data/lib/chef/resource/scm/git.rb +1 -1
  138. data/lib/chef/resource/sudo.rb +6 -6
  139. data/lib/chef/resource/support/client.erb +2 -6
  140. data/lib/chef/resource/sysctl.rb +2 -6
  141. data/lib/chef/resource/systemd_unit.rb +3 -3
  142. data/lib/chef/resource/template.rb +1 -1
  143. data/lib/chef/resource/timezone.rb +1 -3
  144. data/lib/chef/resource/user/mac_user.rb +1 -1
  145. data/lib/chef/resource/user_ulimit.rb +2 -3
  146. data/lib/chef/resource/windows_ad_join.rb +2 -6
  147. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  148. data/lib/chef/resource/windows_auto_run.rb +2 -5
  149. data/lib/chef/resource/windows_certificate.rb +207 -73
  150. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  151. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  152. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  153. data/lib/chef/resource/windows_dns_record.rb +2 -6
  154. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  155. data/lib/chef/resource/windows_env.rb +5 -4
  156. data/lib/chef/resource/windows_feature.rb +3 -9
  157. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  158. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  159. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  160. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  161. data/lib/chef/resource/windows_font.rb +2 -4
  162. data/lib/chef/resource/windows_pagefile.rb +2 -6
  163. data/lib/chef/resource/windows_path.rb +2 -2
  164. data/lib/chef/resource/windows_printer.rb +4 -4
  165. data/lib/chef/resource/windows_printer_port.rb +6 -6
  166. data/lib/chef/resource/windows_security_policy.rb +9 -12
  167. data/lib/chef/resource/windows_share.rb +14 -21
  168. data/lib/chef/resource/windows_shortcut.rb +4 -6
  169. data/lib/chef/resource/windows_task.rb +17 -5
  170. data/lib/chef/resource/windows_uac.rb +2 -4
  171. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  172. data/lib/chef/resource/windows_workgroup.rb +1 -2
  173. data/lib/chef/resource.rb +1 -1
  174. data/lib/chef/resource_reporter.rb +1 -1
  175. data/lib/chef/resources.rb +0 -1
  176. data/lib/chef/shell/ext.rb +3 -3
  177. data/lib/chef/user.rb +0 -1
  178. data/lib/chef/user_v1.rb +3 -4
  179. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  180. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  181. data/lib/chef/version.rb +1 -1
  182. data/lib/chef/win32/api.rb +2 -9
  183. data/lib/chef/win32/registry.rb +4 -2
  184. data/lib/chef/win32/version.rb +1 -2
  185. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  186. data/spec/data/lwrp/resources/bar.rb +2 -0
  187. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  188. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  189. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  190. data/spec/data/lwrp/resources/foo.rb +2 -0
  191. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  192. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  193. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  194. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  195. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  196. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  197. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  198. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  199. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  200. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  201. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  202. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  203. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  204. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  205. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  206. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  207. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  208. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  209. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  210. data/spec/functional/resource/apt_package_spec.rb +1 -1
  211. data/spec/functional/resource/chocolatey_package_spec.rb +9 -0
  212. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  213. data/spec/functional/resource/group_spec.rb +1 -5
  214. data/spec/functional/resource/link_spec.rb +0 -8
  215. data/spec/functional/resource/registry_spec.rb +8 -8
  216. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  217. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  218. data/spec/functional/version_spec.rb +1 -1
  219. data/spec/functional/win32/registry_spec.rb +1 -1
  220. data/spec/integration/client/client_spec.rb +5 -2
  221. data/spec/integration/client/exit_code_spec.rb +1 -1
  222. data/spec/integration/client/ipv6_spec.rb +1 -1
  223. data/spec/integration/compliance/compliance_spec.rb +1 -1
  224. data/spec/integration/ohai/ohai_spec.rb +7 -6
  225. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  226. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  227. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  228. data/spec/integration/recipes/notifies_spec.rb +15 -1
  229. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  230. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  231. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  232. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  233. data/spec/spec_helper.rb +10 -13
  234. data/spec/support/chef_helpers.rb +0 -16
  235. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  236. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  237. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  238. data/spec/support/matchers/leak.rb +7 -9
  239. data/spec/support/platform_helpers.rb +1 -8
  240. data/spec/support/shared/integration/integration_helper.rb +0 -1
  241. data/spec/support/shared/unit/script_resource.rb +2 -2
  242. data/spec/unit/application/solo_spec.rb +2 -2
  243. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  244. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  245. data/spec/unit/client_spec.rb +4 -4
  246. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  247. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  248. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  249. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  250. data/spec/unit/compliance/runner_spec.rb +30 -4
  251. data/spec/unit/cookbook_version_spec.rb +0 -52
  252. data/spec/unit/data_bag_item_spec.rb +1 -6
  253. data/spec/unit/data_collector_spec.rb +2 -71
  254. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  255. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  256. data/spec/unit/lwrp_spec.rb +1 -1
  257. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  258. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  259. data/spec/unit/node/attribute_spec.rb +1 -1
  260. data/spec/unit/node_spec.rb +78 -0
  261. data/spec/unit/org_group_spec.rb +45 -0
  262. data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
  263. data/spec/unit/property_spec.rb +23 -22
  264. data/spec/unit/provider/cron_spec.rb +1 -1
  265. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  266. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  267. data/spec/unit/provider/group/pw_spec.rb +2 -2
  268. data/spec/unit/provider/group_spec.rb +1 -1
  269. data/spec/unit/provider/package/apt_spec.rb +84 -18
  270. data/spec/unit/provider/package/deb_spec.rb +3 -3
  271. data/spec/unit/provider/package/powershell_spec.rb +12 -74
  272. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  273. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  274. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  275. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  276. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  277. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  278. data/spec/unit/provider/service/windows_spec.rb +2 -2
  279. data/spec/unit/provider/subversion_spec.rb +2 -2
  280. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  281. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  282. data/spec/unit/provider_spec.rb +0 -8
  283. data/spec/unit/resource/archive_file_spec.rb +1 -13
  284. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +0 -14
  285. data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
  286. data/spec/unit/resource/mount_spec.rb +0 -10
  287. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  288. data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
  289. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  290. data/spec/unit/resource/user_ulimit_spec.rb +1 -14
  291. data/spec/unit/resource/windows_task_spec.rb +1 -1
  292. data/spec/unit/resource_spec.rb +2 -7
  293. data/spec/unit/user_spec.rb +1 -1
  294. data/spec/unit/user_v1_spec.rb +6 -4
  295. data/tasks/rspec.rb +15 -7
  296. metadata +19 -382
  297. data/bin/knife +0 -24
  298. data/lib/chef/application/knife.rb +0 -234
  299. data/lib/chef/application/windows_service.rb +0 -338
  300. data/lib/chef/application/windows_service_manager.rb +0 -205
  301. data/lib/chef/chef_fs/knife.rb +0 -160
  302. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  303. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  304. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  305. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  306. data/lib/chef/knife/acl_add.rb +0 -57
  307. data/lib/chef/knife/acl_base.rb +0 -183
  308. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  309. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  310. data/lib/chef/knife/acl_remove.rb +0 -62
  311. data/lib/chef/knife/acl_show.rb +0 -56
  312. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  313. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  314. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  315. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  316. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  317. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  318. data/lib/chef/knife/bootstrap.rb +0 -1192
  319. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  320. data/lib/chef/knife/client_create.rb +0 -101
  321. data/lib/chef/knife/client_delete.rb +0 -62
  322. data/lib/chef/knife/client_edit.rb +0 -52
  323. data/lib/chef/knife/client_key_create.rb +0 -73
  324. data/lib/chef/knife/client_key_delete.rb +0 -80
  325. data/lib/chef/knife/client_key_edit.rb +0 -83
  326. data/lib/chef/knife/client_key_list.rb +0 -73
  327. data/lib/chef/knife/client_key_show.rb +0 -80
  328. data/lib/chef/knife/client_list.rb +0 -41
  329. data/lib/chef/knife/client_reregister.rb +0 -58
  330. data/lib/chef/knife/client_show.rb +0 -48
  331. data/lib/chef/knife/config_get.rb +0 -39
  332. data/lib/chef/knife/config_get_profile.rb +0 -37
  333. data/lib/chef/knife/config_list.rb +0 -139
  334. data/lib/chef/knife/config_list_profiles.rb +0 -37
  335. data/lib/chef/knife/config_show.rb +0 -127
  336. data/lib/chef/knife/config_use.rb +0 -61
  337. data/lib/chef/knife/config_use_profile.rb +0 -47
  338. data/lib/chef/knife/configure.rb +0 -150
  339. data/lib/chef/knife/configure_client.rb +0 -48
  340. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  341. data/lib/chef/knife/cookbook_delete.rb +0 -151
  342. data/lib/chef/knife/cookbook_download.rb +0 -142
  343. data/lib/chef/knife/cookbook_list.rb +0 -47
  344. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  345. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  346. data/lib/chef/knife/cookbook_show.rb +0 -98
  347. data/lib/chef/knife/cookbook_upload.rb +0 -292
  348. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  349. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  350. data/lib/chef/knife/core/formatting_options.rb +0 -49
  351. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  352. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  353. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  354. data/lib/chef/knife/core/node_editor.rb +0 -130
  355. data/lib/chef/knife/core/node_presenter.rb +0 -133
  356. data/lib/chef/knife/core/object_loader.rb +0 -115
  357. data/lib/chef/knife/core/status_presenter.rb +0 -147
  358. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  359. data/lib/chef/knife/core/text_formatter.rb +0 -85
  360. data/lib/chef/knife/core/ui.rb +0 -338
  361. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  362. data/lib/chef/knife/data_bag_create.rb +0 -81
  363. data/lib/chef/knife/data_bag_delete.rb +0 -49
  364. data/lib/chef/knife/data_bag_edit.rb +0 -74
  365. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  366. data/lib/chef/knife/data_bag_list.rb +0 -42
  367. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  368. data/lib/chef/knife/data_bag_show.rb +0 -69
  369. data/lib/chef/knife/delete.rb +0 -125
  370. data/lib/chef/knife/deps.rb +0 -156
  371. data/lib/chef/knife/diff.rb +0 -83
  372. data/lib/chef/knife/download.rb +0 -84
  373. data/lib/chef/knife/edit.rb +0 -88
  374. data/lib/chef/knife/environment_compare.rb +0 -128
  375. data/lib/chef/knife/environment_create.rb +0 -52
  376. data/lib/chef/knife/environment_delete.rb +0 -44
  377. data/lib/chef/knife/environment_edit.rb +0 -44
  378. data/lib/chef/knife/environment_from_file.rb +0 -84
  379. data/lib/chef/knife/environment_list.rb +0 -41
  380. data/lib/chef/knife/environment_show.rb +0 -47
  381. data/lib/chef/knife/exec.rb +0 -99
  382. data/lib/chef/knife/group_add.rb +0 -55
  383. data/lib/chef/knife/group_create.rb +0 -49
  384. data/lib/chef/knife/group_destroy.rb +0 -53
  385. data/lib/chef/knife/group_list.rb +0 -43
  386. data/lib/chef/knife/group_remove.rb +0 -56
  387. data/lib/chef/knife/group_show.rb +0 -49
  388. data/lib/chef/knife/key_create.rb +0 -112
  389. data/lib/chef/knife/key_create_base.rb +0 -50
  390. data/lib/chef/knife/key_delete.rb +0 -55
  391. data/lib/chef/knife/key_edit.rb +0 -118
  392. data/lib/chef/knife/key_edit_base.rb +0 -55
  393. data/lib/chef/knife/key_list.rb +0 -90
  394. data/lib/chef/knife/key_list_base.rb +0 -45
  395. data/lib/chef/knife/key_show.rb +0 -53
  396. data/lib/chef/knife/list.rb +0 -177
  397. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  398. data/lib/chef/knife/node_create.rb +0 -47
  399. data/lib/chef/knife/node_delete.rb +0 -46
  400. data/lib/chef/knife/node_edit.rb +0 -70
  401. data/lib/chef/knife/node_environment_set.rb +0 -53
  402. data/lib/chef/knife/node_from_file.rb +0 -51
  403. data/lib/chef/knife/node_list.rb +0 -44
  404. data/lib/chef/knife/node_policy_set.rb +0 -79
  405. data/lib/chef/knife/node_run_list_add.rb +0 -104
  406. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  407. data/lib/chef/knife/node_run_list_set.rb +0 -66
  408. data/lib/chef/knife/node_show.rb +0 -63
  409. data/lib/chef/knife/null.rb +0 -12
  410. data/lib/chef/knife/raw.rb +0 -123
  411. data/lib/chef/knife/recipe_list.rb +0 -32
  412. data/lib/chef/knife/rehash.rb +0 -50
  413. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  414. data/lib/chef/knife/role_create.rb +0 -53
  415. data/lib/chef/knife/role_delete.rb +0 -46
  416. data/lib/chef/knife/role_edit.rb +0 -45
  417. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  418. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  419. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  420. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  421. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  422. data/lib/chef/knife/role_from_file.rb +0 -51
  423. data/lib/chef/knife/role_list.rb +0 -42
  424. data/lib/chef/knife/role_run_list_add.rb +0 -87
  425. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  426. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  427. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  428. data/lib/chef/knife/role_run_list_set.rb +0 -69
  429. data/lib/chef/knife/role_show.rb +0 -48
  430. data/lib/chef/knife/search.rb +0 -194
  431. data/lib/chef/knife/serve.rb +0 -65
  432. data/lib/chef/knife/show.rb +0 -72
  433. data/lib/chef/knife/ssh.rb +0 -645
  434. data/lib/chef/knife/ssl_check.rb +0 -284
  435. data/lib/chef/knife/ssl_fetch.rb +0 -161
  436. data/lib/chef/knife/status.rb +0 -95
  437. data/lib/chef/knife/supermarket_download.rb +0 -121
  438. data/lib/chef/knife/supermarket_install.rb +0 -192
  439. data/lib/chef/knife/supermarket_list.rb +0 -76
  440. data/lib/chef/knife/supermarket_search.rb +0 -53
  441. data/lib/chef/knife/supermarket_share.rb +0 -166
  442. data/lib/chef/knife/supermarket_show.rb +0 -66
  443. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  444. data/lib/chef/knife/tag_create.rb +0 -52
  445. data/lib/chef/knife/tag_delete.rb +0 -60
  446. data/lib/chef/knife/tag_list.rb +0 -47
  447. data/lib/chef/knife/upload.rb +0 -86
  448. data/lib/chef/knife/user_create.rb +0 -107
  449. data/lib/chef/knife/user_delete.rb +0 -44
  450. data/lib/chef/knife/user_dissociate.rb +0 -42
  451. data/lib/chef/knife/user_edit.rb +0 -52
  452. data/lib/chef/knife/user_invite_add.rb +0 -43
  453. data/lib/chef/knife/user_invite_list.rb +0 -34
  454. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  455. data/lib/chef/knife/user_key_create.rb +0 -73
  456. data/lib/chef/knife/user_key_delete.rb +0 -80
  457. data/lib/chef/knife/user_key_edit.rb +0 -83
  458. data/lib/chef/knife/user_key_list.rb +0 -73
  459. data/lib/chef/knife/user_key_show.rb +0 -80
  460. data/lib/chef/knife/user_list.rb +0 -42
  461. data/lib/chef/knife/user_reregister.rb +0 -59
  462. data/lib/chef/knife/user_show.rb +0 -48
  463. data/lib/chef/knife/xargs.rb +0 -282
  464. data/lib/chef/knife/yaml_convert.rb +0 -91
  465. data/lib/chef/knife.rb +0 -665
  466. data/lib/chef/resource/user/dscl_user.rb +0 -35
  467. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  468. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  469. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  470. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  471. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  472. data/spec/functional/knife/configure_spec.rb +0 -33
  473. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  474. data/spec/functional/knife/exec_spec.rb +0 -55
  475. data/spec/functional/knife/rehash_spec.rb +0 -39
  476. data/spec/functional/knife/smoke_test.rb +0 -42
  477. data/spec/functional/knife/ssh_spec.rb +0 -352
  478. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  479. data/spec/functional/resource/windows_service_spec.rb +0 -105
  480. data/spec/functional/win32/service_manager_spec.rb +0 -220
  481. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  482. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  483. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  484. data/spec/integration/knife/chefignore_spec.rb +0 -301
  485. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  486. data/spec/integration/knife/client_create_spec.rb +0 -70
  487. data/spec/integration/knife/client_delete_spec.rb +0 -64
  488. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  489. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  490. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  491. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  492. data/spec/integration/knife/client_list_spec.rb +0 -49
  493. data/spec/integration/knife/client_show_spec.rb +0 -37
  494. data/spec/integration/knife/common_options_spec.rb +0 -174
  495. data/spec/integration/knife/config_list_spec.rb +0 -220
  496. data/spec/integration/knife/config_show_spec.rb +0 -192
  497. data/spec/integration/knife/config_use_spec.rb +0 -198
  498. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  499. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  500. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  501. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  502. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  503. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  504. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  505. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  506. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  507. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  508. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  509. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  510. data/spec/integration/knife/delete_spec.rb +0 -1018
  511. data/spec/integration/knife/deps_spec.rb +0 -703
  512. data/spec/integration/knife/diff_spec.rb +0 -605
  513. data/spec/integration/knife/download_spec.rb +0 -1336
  514. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  515. data/spec/integration/knife/environment_create_spec.rb +0 -41
  516. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  517. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  518. data/spec/integration/knife/environment_list_spec.rb +0 -42
  519. data/spec/integration/knife/environment_show_spec.rb +0 -77
  520. data/spec/integration/knife/list_spec.rb +0 -1060
  521. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  522. data/spec/integration/knife/node_create_spec.rb +0 -47
  523. data/spec/integration/knife/node_delete_spec.rb +0 -48
  524. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  525. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  526. data/spec/integration/knife/node_list_spec.rb +0 -45
  527. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  528. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  529. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  530. data/spec/integration/knife/node_show_spec.rb +0 -36
  531. data/spec/integration/knife/raw_spec.rb +0 -297
  532. data/spec/integration/knife/redirection_spec.rb +0 -64
  533. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  534. data/spec/integration/knife/role_create_spec.rb +0 -41
  535. data/spec/integration/knife/role_delete_spec.rb +0 -48
  536. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  537. data/spec/integration/knife/role_list_spec.rb +0 -45
  538. data/spec/integration/knife/role_show_spec.rb +0 -51
  539. data/spec/integration/knife/search_node_spec.rb +0 -40
  540. data/spec/integration/knife/serve_spec.rb +0 -92
  541. data/spec/integration/knife/show_spec.rb +0 -197
  542. data/spec/integration/knife/upload_spec.rb +0 -1616
  543. data/spec/support/shared/functional/knife.rb +0 -37
  544. data/spec/support/shared/functional/win32_service.rb +0 -57
  545. data/spec/support/shared/integration/knife_support.rb +0 -192
  546. data/spec/support/shared/unit/knife_shared.rb +0 -39
  547. data/spec/unit/application/knife_spec.rb +0 -241
  548. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  549. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  550. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  551. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  552. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  553. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  554. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  555. data/spec/unit/knife/client_create_spec.rb +0 -169
  556. data/spec/unit/knife/client_delete_spec.rb +0 -99
  557. data/spec/unit/knife/client_edit_spec.rb +0 -53
  558. data/spec/unit/knife/client_list_spec.rb +0 -34
  559. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  560. data/spec/unit/knife/client_show_spec.rb +0 -52
  561. data/spec/unit/knife/configure_client_spec.rb +0 -81
  562. data/spec/unit/knife/configure_spec.rb +0 -190
  563. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  564. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  565. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  566. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  567. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  568. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  569. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  570. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  571. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  572. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  573. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  574. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  575. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  576. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  577. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  578. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  579. data/spec/unit/knife/core/ui_spec.rb +0 -656
  580. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  581. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  582. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  583. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  584. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  585. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  586. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  587. data/spec/unit/knife/environment_create_spec.rb +0 -91
  588. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  589. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  590. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  591. data/spec/unit/knife/environment_list_spec.rb +0 -54
  592. data/spec/unit/knife/environment_show_spec.rb +0 -52
  593. data/spec/unit/knife/key_create_spec.rb +0 -223
  594. data/spec/unit/knife/key_delete_spec.rb +0 -133
  595. data/spec/unit/knife/key_edit_spec.rb +0 -264
  596. data/spec/unit/knife/key_helper.rb +0 -74
  597. data/spec/unit/knife/key_list_spec.rb +0 -216
  598. data/spec/unit/knife/key_show_spec.rb +0 -126
  599. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  600. data/spec/unit/knife/node_delete_spec.rb +0 -77
  601. data/spec/unit/knife/node_edit_spec.rb +0 -116
  602. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  603. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  604. data/spec/unit/knife/node_list_spec.rb +0 -62
  605. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  606. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  607. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  608. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  609. data/spec/unit/knife/node_show_spec.rb +0 -65
  610. data/spec/unit/knife/raw_spec.rb +0 -43
  611. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  612. data/spec/unit/knife/role_create_spec.rb +0 -80
  613. data/spec/unit/knife/role_delete_spec.rb +0 -67
  614. data/spec/unit/knife/role_edit_spec.rb +0 -77
  615. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  616. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  617. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  618. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  619. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  620. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  621. data/spec/unit/knife/role_list_spec.rb +0 -54
  622. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  623. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  624. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  625. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  626. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  627. data/spec/unit/knife/role_show_spec.rb +0 -59
  628. data/spec/unit/knife/ssh_spec.rb +0 -403
  629. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  630. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  631. data/spec/unit/knife/status_spec.rb +0 -112
  632. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  633. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  634. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  635. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  636. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  637. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  638. data/spec/unit/knife/tag_create_spec.rb +0 -23
  639. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  640. data/spec/unit/knife/tag_list_spec.rb +0 -23
  641. data/spec/unit/knife/user_create_spec.rb +0 -184
  642. data/spec/unit/knife/user_delete_spec.rb +0 -46
  643. data/spec/unit/knife/user_edit_spec.rb +0 -48
  644. data/spec/unit/knife/user_list_spec.rb +0 -36
  645. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  646. data/spec/unit/knife/user_show_spec.rb +0 -46
  647. data/spec/unit/knife_spec.rb +0 -634
  648. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  649. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,255 +0,0 @@
1
- #
2
- # Author:: Thomas Bishop (<bishop.thomas@gmail.com>)
3
- # Copyright:: Copyright 2011-2016, Thomas Bishop
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require "spec_helper"
20
-
21
- describe Chef::Knife::CookbookDownload do
22
- before(:each) do
23
- @knife = Chef::Knife::CookbookDownload.new
24
- @stderr = StringIO.new
25
- allow(@knife.ui).to receive(:stderr).and_return(@stderr)
26
- end
27
-
28
- describe "run" do
29
- it "should print usage and exit when a cookbook name is not provided" do
30
- @knife.name_args = []
31
- expect(@knife).to receive(:show_usage)
32
- expect(@knife.ui).to receive(:fatal).with(/must specify a cookbook name/)
33
- expect { @knife.run }.to raise_error(SystemExit)
34
- end
35
-
36
- it "should exit with a fatal error when there is no cookbook on the server" do
37
- @knife.name_args = ["foobar", nil]
38
- expect(@knife).to receive(:determine_version).and_return(nil)
39
- expect(@knife.ui).to receive(:fatal).with("No such cookbook found")
40
- expect { @knife.run }.to raise_error(SystemExit)
41
- end
42
-
43
- describe "with a cookbook name" do
44
- before(:each) do
45
- @knife.name_args = ["foobar"]
46
- @knife.config[:download_directory] = "/var/tmp/chef"
47
- @rest_mock = double("rest")
48
- allow(@knife).to receive(:rest).and_return(@rest_mock)
49
-
50
- expect(Chef::CookbookVersion).to receive(:load).with("foobar", "1.0.0")
51
- .and_return(cookbook)
52
- end
53
-
54
- let(:manifest_data) do
55
- {
56
- all_files: [
57
- {
58
- "path" => "recipes/foo.rb",
59
- "name" => "recipes/foo.rb",
60
- "url" => "http://example.org/files/foo.rb",
61
- },
62
- {
63
- "path" => "recipes/bar.rb",
64
- "name" => "recipes/bar.rb",
65
- "url" => "http://example.org/files/bar.rb",
66
- },
67
- {
68
- "path" => "templates/default/foo.erb",
69
- "name" => "templates/foo.erb",
70
- "url" => "http://example.org/files/foo.erb",
71
- },
72
- {
73
- "path" => "templates/default/bar.erb",
74
- "name" => "templates/bar.erb",
75
- "url" => "http://example.org/files/bar.erb",
76
- },
77
- {
78
- "path" => "attributes/default.rb",
79
- "name" => "attributes/default.rb",
80
- "url" => "http://example.org/files/default.rb",
81
- },
82
- ],
83
- }
84
- end
85
-
86
- let(:cookbook) do
87
- cb = Chef::CookbookVersion.new("foobar")
88
- cb.version = "1.0.0"
89
- cb.manifest = manifest_data
90
- cb
91
- end
92
-
93
- describe "and no version" do
94
- let(:manifest_data) { { all_files: [] } }
95
- it "should determine which version to download" do
96
- expect(@knife).to receive(:determine_version).and_return("1.0.0")
97
- expect(File).to receive(:exist?).with("/var/tmp/chef/foobar-1.0.0").and_return(false)
98
- @knife.run
99
- end
100
- end
101
-
102
- describe "and a version" do
103
- before(:each) do
104
- @knife.name_args << "1.0.0"
105
- @files = manifest_data.values.map { |v| v.map { |i| i["path"] } }.flatten.uniq
106
- @files_mocks = {}
107
- @files.map { |f| File.basename(f) }.flatten.uniq.each do |f|
108
- @files_mocks[f] = double("#{f}_mock")
109
- allow(@files_mocks[f]).to receive(:path).and_return("/var/tmp/#{f}")
110
- end
111
- end
112
-
113
- it "should print an error and exit if the cookbook download directory already exists" do
114
- expect(File).to receive(:exist?).with("/var/tmp/chef/foobar-1.0.0").and_return(true)
115
- expect(@knife.ui).to receive(:fatal).with(%r{/var/tmp/chef/foobar-1\.0\.0 exists}i)
116
- expect { @knife.run }.to raise_error(SystemExit)
117
- end
118
-
119
- describe "when downloading the cookbook" do
120
- before(:each) do
121
- @files.map { |f| File.dirname(f) }.flatten.uniq.each do |dir|
122
- expect(FileUtils).to receive(:mkdir_p).with("/var/tmp/chef/foobar-1.0.0/#{dir}")
123
- .at_least(:once)
124
- end
125
-
126
- @files_mocks.each_pair do |file, mock|
127
- expect(@rest_mock).to receive(:streaming_request).with("http://example.org/files/#{file}")
128
- .and_return(mock)
129
- end
130
-
131
- @files.each do |f|
132
- expect(FileUtils).to receive(:mv)
133
- .with("/var/tmp/#{File.basename(f)}", "/var/tmp/chef/foobar-1.0.0/#{f}")
134
- end
135
- end
136
-
137
- it "should download the cookbook when the cookbook download directory doesn't exist" do
138
- expect(File).to receive(:exist?).with("/var/tmp/chef/foobar-1.0.0").and_return(false)
139
- @knife.run
140
- %w{attributes recipes templates}.each do |segment|
141
- expect(@stderr.string).to match(/downloading #{segment}/im)
142
- end
143
- expect(@stderr.string).to match(/downloading foobar cookbook version 1\.0\.0/im)
144
- expect(@stderr.string).to match %r{cookbook downloaded to /var/tmp/chef/foobar-1\.0\.0}im
145
- end
146
-
147
- describe "with -f or --force" do
148
- it "should remove the existing the cookbook download directory if it exists" do
149
- @knife.config[:force] = true
150
- expect(File).to receive(:exist?).with("/var/tmp/chef/foobar-1.0.0").and_return(true)
151
- expect(FileUtils).to receive(:rm_rf).with("/var/tmp/chef/foobar-1.0.0")
152
- @knife.run
153
- end
154
- end
155
- end
156
-
157
- end
158
- end
159
-
160
- end
161
-
162
- describe "determine_version" do
163
-
164
- it "should return nil if there are no versions" do
165
- expect(@knife).to receive(:available_versions).and_return(nil)
166
- expect(@knife.determine_version).to eq(nil)
167
- expect(@knife.version).to eq(nil)
168
- end
169
-
170
- it "should return and set the version if there is only one version" do
171
- expect(@knife).to receive(:available_versions).at_least(:once).and_return(["1.0.0"])
172
- expect(@knife.determine_version).to eq("1.0.0")
173
- expect(@knife.version).to eq("1.0.0")
174
- end
175
-
176
- it "should ask which version to download and return it if there is more than one" do
177
- expect(@knife).to receive(:available_versions).at_least(:once).and_return(["1.0.0", "2.0.0"])
178
- expect(@knife).to receive(:ask_which_version).and_return("1.0.0")
179
- expect(@knife.determine_version).to eq("1.0.0")
180
- end
181
-
182
- describe "with -N or --latest" do
183
- it "should return and set the version to the latest version" do
184
- @knife.config[:latest] = true
185
- expect(@knife).to receive(:available_versions).at_least(:once)
186
- .and_return(["1.0.0", "1.1.0", "2.0.0"])
187
- @knife.determine_version
188
- expect(@knife.version.to_s).to eq("2.0.0")
189
- end
190
- end
191
- end
192
-
193
- describe "available_versions" do
194
- before(:each) do
195
- @knife.cookbook_name = "foobar"
196
- end
197
-
198
- it "should return nil if there are no versions" do
199
- expect(Chef::CookbookVersion).to receive(:available_versions)
200
- .with("foobar")
201
- .and_return(nil)
202
- expect(@knife.available_versions).to eq(nil)
203
- end
204
-
205
- it "should return the available versions" do
206
- expect(Chef::CookbookVersion).to receive(:available_versions)
207
- .with("foobar")
208
- .and_return(["1.1.0", "2.0.0", "1.0.0"])
209
- expect(@knife.available_versions).to eq([Chef::Version.new("1.0.0"),
210
- Chef::Version.new("1.1.0"),
211
- Chef::Version.new("2.0.0")])
212
- end
213
-
214
- it "should avoid multiple API calls to the server" do
215
- expect(Chef::CookbookVersion).to receive(:available_versions)
216
- .once
217
- .with("foobar")
218
- .and_return(["1.1.0", "2.0.0", "1.0.0"])
219
- @knife.available_versions
220
- @knife.available_versions
221
- end
222
- end
223
-
224
- describe "ask_which_version" do
225
- before(:each) do
226
- @knife.cookbook_name = "foobar"
227
- allow(@knife).to receive(:available_versions).and_return(["1.0.0", "1.1.0", "2.0.0"])
228
- end
229
-
230
- it "should prompt the user to select a version" do
231
- prompt = /Which version do you want to download\?.+1\. foobar 1\.0\.0.+2\. foobar 1\.1\.0.+3\. foobar 2\.0\.0.+/m
232
- expect(@knife).to receive(:ask_question).with(prompt).and_return("1")
233
- @knife.ask_which_version
234
- end
235
-
236
- it "should set the version to the user's selection" do
237
- expect(@knife).to receive(:ask_question).and_return("1")
238
- @knife.ask_which_version
239
- expect(@knife.version).to eq("1.0.0")
240
- end
241
-
242
- it "should print an error and exit if a version wasn't specified" do
243
- expect(@knife).to receive(:ask_question).and_return("")
244
- expect(@knife.ui).to receive(:error).with(/is not a valid value/i)
245
- expect { @knife.ask_which_version }.to raise_error(SystemExit)
246
- end
247
-
248
- it "should print an error if an invalid choice was selected" do
249
- expect(@knife).to receive(:ask_question).and_return("100")
250
- expect(@knife.ui).to receive(:error).with(/'100' is not a valid value/i)
251
- expect { @knife.ask_which_version }.to raise_error(SystemExit)
252
- end
253
- end
254
-
255
- end
@@ -1,88 +0,0 @@
1
- #
2
- # Author:: Thomas Bishop (<bishop.thomas@gmail.com>)
3
- # Copyright:: Copyright 2011-2016, Thomas Bishop
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require "spec_helper"
20
-
21
- describe Chef::Knife::CookbookList do
22
- before do
23
- @knife = Chef::Knife::CookbookList.new
24
- @rest_mock = double("rest")
25
- allow(@knife).to receive(:rest).and_return(@rest_mock)
26
- @cookbook_names = %w{apache2 mysql}
27
- @base_url = "https://server.example.com/cookbooks"
28
- @cookbook_data = {}
29
- @cookbook_names.each do |item|
30
- @cookbook_data[item] = { "url" => "#{@base_url}/#{item}",
31
- "versions" => [{ "version" => "1.0.1",
32
- "url" => "#{@base_url}/#{item}/1.0.1" }] }
33
- end
34
- @stdout = StringIO.new
35
- allow(@knife.ui).to receive(:stdout).and_return(@stdout)
36
- end
37
-
38
- describe "run" do
39
- it "should display the latest version of the cookbooks" do
40
- expect(@rest_mock).to receive(:get).with("/cookbooks?num_versions=1")
41
- .and_return(@cookbook_data)
42
- @knife.run
43
- @cookbook_names.each do |item|
44
- expect(@stdout.string).to match(/#{item}\s+1\.0\.1/)
45
- end
46
- end
47
-
48
- it "should query cookbooks for the configured environment" do
49
- @knife.config[:environment] = "production"
50
- expect(@rest_mock).to receive(:get)
51
- .with("/environments/production/cookbooks?num_versions=1")
52
- .and_return(@cookbook_data)
53
- @knife.run
54
- end
55
-
56
- describe "with -w or --with-uri" do
57
- it "should display the cookbook uris" do
58
- @knife.config[:with_uri] = true
59
- allow(@rest_mock).to receive(:get).and_return(@cookbook_data)
60
- @knife.run
61
- @cookbook_names.each do |item|
62
- pattern = /#{Regexp.escape(@cookbook_data[item]['versions'].first['url'])}/
63
- expect(@stdout.string).to match pattern
64
- end
65
- end
66
- end
67
-
68
- describe "with -a or --all" do
69
- before do
70
- @cookbook_names.each do |item|
71
- @cookbook_data[item]["versions"] << { "version" => "1.0.0",
72
- "url" => "#{@base_url}/#{item}/1.0.0" }
73
- end
74
- end
75
-
76
- it "should display all versions of the cookbooks" do
77
- @knife.config[:all_versions] = true
78
- expect(@rest_mock).to receive(:get).with("/cookbooks?num_versions=all")
79
- .and_return(@cookbook_data)
80
- @knife.run
81
- @cookbook_names.each do |item|
82
- expect(@stdout.string).to match(/#{item}\s+1\.0\.1\s+1\.0\.0/)
83
- end
84
- end
85
- end
86
-
87
- end
88
- end
@@ -1,72 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Author:: Matthew Kent (<mkent@magoazul.com>)
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- # Copyright:: Copyright (c) Chef Software Inc.
6
- # License:: Apache License, Version 2.0
7
- #
8
- # Licensed under the Apache License, Version 2.0 (the "License");
9
- # you may not use this file except in compliance with the License.
10
- # You may obtain a copy of the License at
11
- #
12
- # http://www.apache.org/licenses/LICENSE-2.0
13
- #
14
- # Unless required by applicable law or agreed to in writing, software
15
- # distributed under the License is distributed on an "AS IS" BASIS,
16
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
- # See the License for the specific language governing permissions and
18
- # limitations under the License.
19
- #
20
-
21
- require "spec_helper"
22
-
23
- describe Chef::Knife::CookbookMetadataFromFile do
24
- before(:each) do
25
- Chef::Config[:node_name] = "webmonkey.example.com"
26
- @src = File.expand_path(File.join(CHEF_SPEC_DATA, "metadata", "quick_start", "metadata.rb"))
27
- @tgt = File.expand_path(File.join(CHEF_SPEC_DATA, "metadata", "quick_start", "metadata.json"))
28
- @knife = Chef::Knife::CookbookMetadataFromFile.new
29
- @knife.name_args = [ @src ]
30
- allow(@knife).to receive(:to_json_pretty).and_return(true)
31
- @md = Chef::Cookbook::Metadata.new
32
- allow(Chef::Cookbook::Metadata).to receive(:new).and_return(@md)
33
- allow($stdout).to receive(:write)
34
- end
35
-
36
- after do
37
- if File.exist?(@tgt)
38
- File.unlink(@tgt)
39
- end
40
- end
41
-
42
- describe "run" do
43
- it "should print usage and exit when a FILE is not provided" do
44
- @knife.name_args = []
45
- expect(@knife).to receive(:show_usage)
46
- expect(@knife.ui).to receive(:fatal).with(/You must specify the FILE./)
47
- expect { @knife.run }.to raise_error(SystemExit)
48
- end
49
-
50
- it "should determine cookbook name from path" do
51
- expect(@md).to receive(:name).with(no_args)
52
- expect(@md).to receive(:name).with("quick_start")
53
- @knife.run
54
- end
55
-
56
- it "should load the metadata source" do
57
- expect(@md).to receive(:from_file).with(@src)
58
- @knife.run
59
- end
60
-
61
- it "should write out the metadata to the correct location" do
62
- expect(File).to receive(:open).with(@tgt, "w")
63
- @knife.run
64
- end
65
-
66
- it "should generate json from the metadata" do
67
- expect(Chef::JSONCompat).to receive(:to_json_pretty).with(@md)
68
- @knife.run
69
- end
70
-
71
- end
72
- end
@@ -1,182 +0,0 @@
1
- #
2
- # Author:: Thomas Bishop (<bishop.thomas@gmail.com>)
3
- # Copyright:: Copyright 2011-2016, Thomas Bishop
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require "spec_helper"
20
-
21
- describe Chef::Knife::CookbookMetadata do
22
- let(:knife) do
23
- knife = Chef::Knife::CookbookMetadata.new
24
- knife.name_args = ["foobar"]
25
- knife
26
- end
27
-
28
- let(:cookbook_dir) { Dir.mktmpdir }
29
-
30
- let(:stdout) { StringIO.new }
31
-
32
- let(:stderr) { StringIO.new }
33
-
34
- before(:each) do
35
- allow(knife.ui).to receive(:stdout).and_return(stdout)
36
- allow(knife.ui).to receive(:stderr).and_return(stderr)
37
- end
38
-
39
- def create_metadata_rb(**kwargs)
40
- name = kwargs[:name]
41
- Dir.mkdir("#{cookbook_dir}/#{name}")
42
- File.open("#{cookbook_dir}/#{name}/metadata.rb", "w+") do |f|
43
- kwargs.each do |key, value|
44
- if value.is_a?(Array)
45
- f.puts "#{key} #{value.map { |v| "\"#{v}\"" }.join(", ")}"
46
- else
47
- f.puts "#{key} \"#{value}\""
48
- end
49
- end
50
- end
51
- end
52
-
53
- def create_metadata_json(**kwargs)
54
- name = kwargs[:name]
55
- Dir.mkdir("#{cookbook_dir}/#{name}")
56
- File.open("#{cookbook_dir}/#{name}/metadata.json", "w+") do |f|
57
- f.write(FFI_Yajl::Encoder.encode(kwargs))
58
- end
59
- end
60
-
61
- def create_invalid_json
62
- Dir.mkdir("#{cookbook_dir}/foobar")
63
- File.open("#{cookbook_dir}/foobar/metadata.json", "w+") do |f|
64
- f.write <<-EOH
65
- { "version": "1.0.0", {ImInvalid}}
66
- EOH
67
- end
68
- end
69
-
70
- describe "run" do
71
- it "should print an error and exit if a cookbook name was not provided" do
72
- knife.name_args = []
73
- expect(knife.ui).to receive(:error).with(/you must specify the cookbook.+use the --all/i)
74
- expect { knife.run }.to raise_error(SystemExit)
75
- end
76
-
77
- it "should print an error and exit if an empty cookbook name was provided" do
78
- knife.name_args = [""]
79
- expect(knife.ui).to receive(:error).with(/you must specify the cookbook.+use the --all/i)
80
- expect { knife.run }.to raise_error(SystemExit)
81
- end
82
-
83
- it "should generate the metadata for the cookbook" do
84
- expect(knife).to receive(:generate_metadata).with("foobar")
85
- knife.run
86
- end
87
-
88
- describe "with -a or --all" do
89
- before(:each) do
90
- Chef::Config[:cookbook_path] = cookbook_dir
91
- knife.config[:all] = true
92
- create_metadata_rb(name: "foo", version: "1.0.0")
93
- create_metadata_rb(name: "bar", version: "2.0.0")
94
- expect(knife).to receive(:generate_metadata).with("foo").and_call_original
95
- expect(knife).to receive(:generate_metadata).with("bar").and_call_original
96
- end
97
-
98
- it "should generate the metadata for each cookbook" do
99
- expect(Chef::CookbookLoader).to receive(:new).with(cookbook_dir).and_call_original
100
- knife.run
101
- expect(stderr.string).to match %r{generating metadata for foo from #{cookbook_dir}/foo/metadata\.rb}im
102
- expect(stderr.string).to match %r{generating metadata for bar from #{cookbook_dir}/bar/metadata\.rb}im
103
- end
104
-
105
- it "with -o or --cookbook_path should look in the provided path and generate cookbook metadata" do
106
- Chef::Config[:cookbook_path] = "/dev/null"
107
- knife.config[:cookbook_path] = cookbook_dir
108
- expect(Chef::CookbookLoader).to receive(:new).with(cookbook_dir).and_call_original
109
- knife.run
110
- expect(stderr.string).to match %r{generating metadata for foo from #{cookbook_dir}/foo/metadata\.rb}im
111
- expect(stderr.string).to match %r{generating metadata for bar from #{cookbook_dir}/bar/metadata\.rb}im
112
- end
113
- end
114
-
115
- end
116
-
117
- describe "generate_metadata" do
118
- before(:each) do
119
- Chef::Config[:cookbook_path] = cookbook_dir
120
- end
121
-
122
- it "should generate the metadata from metadata.rb if it exists" do
123
- create_metadata_rb(name: "foobar", version: "1.0.0")
124
- expect(knife).to receive(:generate_metadata_from_file).with("foobar", "#{cookbook_dir}/foobar/metadata.rb").and_call_original
125
- knife.run
126
- expect(File.exist?("#{cookbook_dir}/foobar/metadata.json")).to be true
127
- json = FFI_Yajl::Parser.parse(IO.read("#{cookbook_dir}/foobar/metadata.json"))
128
- expect(json["name"]).to eql("foobar")
129
- expect(json["version"]).to eql("1.0.0")
130
- end
131
-
132
- it "should validate the metadata json if metadata.rb does not exist" do
133
- create_metadata_json(name: "foobar", version: "1.0.0")
134
- expect(knife).to receive(:validate_metadata_json).with(cookbook_dir, "foobar").and_call_original
135
- knife.run
136
- end
137
- end
138
-
139
- describe "validation errors" do
140
- before(:each) do
141
- Chef::Config[:cookbook_path] = cookbook_dir
142
- end
143
-
144
- it "should fail for obsolete operators in metadata.rb" do
145
- create_metadata_rb(name: "foobar", version: "1.0.0", depends: [ "foo:bar", ">> 0.2" ])
146
- expect(Chef::Cookbook::Metadata).not_to receive(:validate_json)
147
- expect { knife.run }.to raise_error(SystemExit)
148
- expect(stderr.string).to match(/error: the cookbook 'foobar' contains invalid or obsolete metadata syntax/im)
149
- end
150
-
151
- it "should fail for obsolete format in metadata.rb (sadly)" do
152
- create_metadata_rb(name: "foobar", version: "1.0.0", depends: [ "foo:bar", "> 0.2", "< 1.0" ])
153
- expect(Chef::Cookbook::Metadata).not_to receive(:validate_json)
154
- expect { knife.run }.to raise_error(SystemExit)
155
- expect(stderr.string).to match(/error: the cookbook 'foobar' contains invalid or obsolete metadata syntax/im)
156
- end
157
-
158
- it "should fail for obsolete operators in metadata.json" do
159
- create_metadata_json(name: "foobar", version: "1.0.0", dependencies: { "foo:bar" => ">> 0.2" })
160
- expect { knife.run }.to raise_error(SystemExit)
161
- expect(stderr.string).to match(/error: the cookbook 'foobar' contains invalid or obsolete metadata syntax/im)
162
- end
163
-
164
- it "should not fail for unknown field in metadata.rb" do
165
- create_metadata_rb(name: "sounders", version: "2.0.0", beats: "toronto")
166
- expect(Chef::Cookbook::Metadata).not_to receive(:validate_json)
167
- expect { knife.run }.not_to raise_error
168
- expect(stderr.string).to eql("")
169
- end
170
-
171
- it "should not fail for unknown field in metadata.json" do
172
- create_metadata_json(name: "sounders", version: "2.0.0", beats: "toronto")
173
- expect { knife.run }.not_to raise_error
174
- expect(stderr.string).to eql("")
175
- end
176
-
177
- it "should fail on unparsable json" do
178
- create_invalid_json
179
- expect { knife.run }.to raise_error(Chef::Exceptions::JSON::ParseError)
180
- end
181
- end
182
- end