chef 12.18.31 → 13.0.118

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 (611) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -11
  3. data/README.md +13 -13
  4. data/Rakefile +1 -19
  5. data/VERSION +1 -1
  6. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
  7. data/acceptance/Gemfile +8 -5
  8. data/acceptance/Gemfile.lock +90 -81
  9. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
  10. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
  11. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
  12. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
  13. data/chef-universal-mingw32.gemspec +2 -3
  14. data/chef.gemspec +8 -7
  15. data/lib/chef/api_client.rb +8 -15
  16. data/lib/chef/api_client_v1.rb +9 -11
  17. data/lib/chef/application/apply.rb +8 -10
  18. data/lib/chef/application/client.rb +1 -1
  19. data/lib/chef/application/exit_code.rb +11 -82
  20. data/lib/chef/application/knife.rb +2 -2
  21. data/lib/chef/application/solo.rb +0 -1
  22. data/lib/chef/application/windows_service.rb +36 -37
  23. data/lib/chef/application/windows_service_manager.rb +1 -1
  24. data/lib/chef/application.rb +15 -25
  25. data/lib/chef/audit/audit_event_proxy.rb +2 -2
  26. data/lib/chef/audit/control_group_data.rb +1 -1
  27. data/lib/chef/blacklist.rb +81 -0
  28. data/lib/chef/chef_class.rb +1 -0
  29. data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
  30. data/lib/chef/chef_fs/command_line.rb +15 -16
  31. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
  32. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
  33. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  34. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  35. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  36. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
  37. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
  38. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  40. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  41. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  42. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
  43. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
  44. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
  45. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
  46. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
  47. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
  48. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
  49. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
  50. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  51. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
  52. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
  53. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
  54. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  55. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
  56. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
  57. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
  58. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
  59. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  60. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
  61. data/lib/chef/chef_fs/file_system.rb +1 -1
  62. data/lib/chef/chef_fs/parallelizer.rb +9 -11
  63. data/lib/chef/client.rb +47 -11
  64. data/lib/chef/config_fetcher.rb +4 -4
  65. data/lib/chef/constants.rb +1 -1
  66. data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
  67. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  68. data/lib/chef/cookbook/gem_installer.rb +10 -6
  69. data/lib/chef/cookbook/manifest_v0.rb +68 -0
  70. data/lib/chef/cookbook/manifest_v2.rb +41 -0
  71. data/lib/chef/cookbook/metadata.rb +25 -134
  72. data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
  73. data/lib/chef/cookbook/synchronizer.rb +24 -21
  74. data/lib/chef/cookbook/syntax_check.rb +1 -1
  75. data/lib/chef/cookbook_manifest.rb +91 -65
  76. data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
  77. data/lib/chef/cookbook_uploader.rb +1 -1
  78. data/lib/chef/cookbook_version.rb +69 -157
  79. data/lib/chef/data_bag.rb +1 -7
  80. data/lib/chef/data_bag_item.rb +5 -10
  81. data/lib/chef/data_collector/messages.rb +2 -0
  82. data/lib/chef/data_collector/resource_report.rb +32 -4
  83. data/lib/chef/data_collector.rb +3 -4
  84. data/lib/chef/decorator/unchain.rb +0 -16
  85. data/lib/chef/decorator.rb +1 -1
  86. data/lib/chef/deprecated.rb +53 -19
  87. data/lib/chef/dsl/audit.rb +2 -2
  88. data/lib/chef/dsl/declare_resource.rb +11 -17
  89. data/lib/chef/dsl/platform_introspection.rb +29 -31
  90. data/lib/chef/dsl/reboot_pending.rb +1 -1
  91. data/lib/chef/dsl/recipe.rb +1 -4
  92. data/lib/chef/dsl/resources.rb +4 -13
  93. data/lib/chef/encrypted_data_bag_item.rb +2 -2
  94. data/lib/chef/environment.rb +9 -16
  95. data/lib/chef/event_dispatch/base.rb +16 -0
  96. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  97. data/lib/chef/exceptions.rb +6 -10
  98. data/lib/chef/file_access_control/unix.rb +14 -14
  99. data/lib/chef/file_access_control/windows.rb +1 -1
  100. data/lib/chef/formatters/error_description.rb +18 -1
  101. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
  102. data/lib/chef/formatters/error_mapper.rb +6 -6
  103. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
  104. data/lib/chef/http/api_versions.rb +54 -0
  105. data/lib/chef/http/authenticator.rb +15 -6
  106. data/lib/chef/http/json_output.rb +4 -1
  107. data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
  108. data/lib/chef/http/validate_content_length.rb +2 -2
  109. data/lib/chef/http.rb +39 -0
  110. data/lib/chef/json_compat.rb +7 -103
  111. data/lib/chef/key.rb +5 -10
  112. data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
  113. data/lib/chef/knife/bootstrap.rb +6 -0
  114. data/lib/chef/knife/configure.rb +1 -3
  115. data/lib/chef/knife/configure_client.rb +1 -3
  116. data/lib/chef/knife/cookbook_create.rb +1 -434
  117. data/lib/chef/knife/cookbook_download.rb +3 -4
  118. data/lib/chef/knife/cookbook_show.rb +7 -3
  119. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  120. data/lib/chef/knife/core/bootstrap_context.rb +8 -7
  121. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  122. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  123. data/lib/chef/knife/core/status_presenter.rb +1 -1
  124. data/lib/chef/knife/core/subcommand_loader.rb +2 -32
  125. data/lib/chef/knife/core/ui.rb +20 -27
  126. data/lib/chef/knife/data_bag_create.rb +6 -4
  127. data/lib/chef/knife/data_bag_secret_options.rb +1 -1
  128. data/lib/chef/knife/deps.rb +32 -34
  129. data/lib/chef/knife/edit.rb +1 -1
  130. data/lib/chef/knife/help.rb +1 -1
  131. data/lib/chef/knife/list.rb +1 -1
  132. data/lib/chef/knife/search.rb +9 -20
  133. data/lib/chef/knife/ssh.rb +62 -36
  134. data/lib/chef/knife/ssl_check.rb +1 -1
  135. data/lib/chef/knife/user_delete.rb +1 -1
  136. data/lib/chef/knife/xargs.rb +1 -1
  137. data/lib/chef/knife.rb +6 -7
  138. data/lib/chef/mash.rb +1 -1
  139. data/lib/chef/mixin/create_path.rb +3 -5
  140. data/lib/chef/mixin/from_file.rb +2 -2
  141. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  142. data/lib/chef/mixin/notifying_block.rb +7 -9
  143. data/lib/chef/mixin/params_validate.rb +9 -8
  144. data/lib/chef/mixin/path_sanity.rb +17 -19
  145. data/lib/chef/mixin/securable.rb +1 -1
  146. data/lib/chef/mixin/shell_out.rb +33 -29
  147. data/lib/chef/mixin/unformatter.rb +2 -2
  148. data/lib/chef/mixin/uris.rb +4 -6
  149. data/lib/chef/mixin/versioned_api.rb +84 -0
  150. data/lib/chef/mixin/which.rb +25 -8
  151. data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
  152. data/lib/chef/mixin/xml_escape.rb +3 -5
  153. data/lib/chef/mixins.rb +0 -1
  154. data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
  155. data/lib/chef/node/attribute.rb +9 -32
  156. data/lib/chef/node/attribute_collections.rb +1 -19
  157. data/lib/chef/node/common_api.rb +5 -7
  158. data/lib/chef/node/immutable_collections.rb +42 -38
  159. data/lib/chef/node/mixin/immutablize_array.rb +1 -1
  160. data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
  161. data/lib/chef/node.rb +21 -20
  162. data/lib/chef/node_map.rb +2 -5
  163. data/lib/chef/org.rb +10 -17
  164. data/lib/chef/platform/provider_mapping.rb +2 -169
  165. data/lib/chef/platform/query_helpers.rb +1 -1
  166. data/lib/chef/platform/rebooter.rb +1 -2
  167. data/lib/chef/policy_builder/expand_node_object.rb +3 -29
  168. data/lib/chef/policy_builder/policyfile.rb +8 -6
  169. data/lib/chef/property.rb +66 -80
  170. data/lib/chef/provider/apt_repository.rb +6 -10
  171. data/lib/chef/provider/apt_update.rb +1 -7
  172. data/lib/chef/provider/batch.rb +1 -1
  173. data/lib/chef/provider/breakpoint.rb +2 -2
  174. data/lib/chef/provider/cookbook_file.rb +3 -9
  175. data/lib/chef/provider/cron.rb +42 -60
  176. data/lib/chef/provider/deploy/revision.rb +3 -5
  177. data/lib/chef/provider/deploy.rb +82 -88
  178. data/lib/chef/provider/directory.rb +33 -37
  179. data/lib/chef/provider/dsc_resource.rb +23 -11
  180. data/lib/chef/provider/dsc_script.rb +1 -5
  181. data/lib/chef/provider/env/windows.rb +5 -1
  182. data/lib/chef/provider/env.rb +32 -30
  183. data/lib/chef/provider/erl_call.rb +15 -47
  184. data/lib/chef/provider/execute.rb +7 -8
  185. data/lib/chef/provider/file.rb +49 -61
  186. data/lib/chef/provider/git.rb +56 -60
  187. data/lib/chef/provider/group.rb +1 -7
  188. data/lib/chef/provider/http_request.rb +37 -41
  189. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  190. data/lib/chef/provider/ifconfig.rb +0 -6
  191. data/lib/chef/provider/launchd.rb +6 -2
  192. data/lib/chef/provider/link.rb +51 -55
  193. data/lib/chef/provider/log.rb +3 -7
  194. data/lib/chef/provider/lwrp_base.rb +0 -9
  195. data/lib/chef/provider/mdadm.rb +25 -33
  196. data/lib/chef/provider/mount/aix.rb +2 -2
  197. data/lib/chef/provider/mount/mount.rb +2 -2
  198. data/lib/chef/provider/mount.rb +1 -5
  199. data/lib/chef/provider/noop.rb +1 -1
  200. data/lib/chef/provider/ohai.rb +1 -7
  201. data/lib/chef/provider/osx_profile.rb +24 -29
  202. data/lib/chef/provider/package/aix.rb +55 -53
  203. data/lib/chef/provider/package/apt.rb +15 -13
  204. data/lib/chef/provider/package/cab.rb +48 -20
  205. data/lib/chef/provider/package/chocolatey.rb +9 -10
  206. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  207. data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
  208. data/lib/chef/provider/package/dnf/version.rb +1 -1
  209. data/lib/chef/provider/package/dnf.rb +21 -19
  210. data/lib/chef/provider/package/dpkg.rb +8 -9
  211. data/lib/chef/provider/package/freebsd/base.rb +10 -10
  212. data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
  213. data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
  214. data/lib/chef/provider/package/freebsd/port.rb +7 -7
  215. data/lib/chef/provider/package/homebrew.rb +11 -10
  216. data/lib/chef/provider/package/ips.rb +18 -24
  217. data/lib/chef/provider/package/macports.rb +23 -23
  218. data/lib/chef/provider/package/msu.rb +11 -12
  219. data/lib/chef/provider/package/openbsd.rb +25 -22
  220. data/lib/chef/provider/package/pacman.rb +16 -17
  221. data/lib/chef/provider/package/paludis.rb +26 -27
  222. data/lib/chef/provider/package/portage.rb +22 -23
  223. data/lib/chef/provider/package/powershell.rb +17 -17
  224. data/lib/chef/provider/package/rpm.rb +25 -26
  225. data/lib/chef/provider/package/rubygems.rb +64 -62
  226. data/lib/chef/provider/package/smartos.rb +16 -16
  227. data/lib/chef/provider/package/solaris.rb +44 -45
  228. data/lib/chef/provider/package/windows/exe.rb +6 -6
  229. data/lib/chef/provider/package/windows/msi.rb +7 -7
  230. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
  231. data/lib/chef/provider/package/windows.rb +3 -3
  232. data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
  233. data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
  234. data/lib/chef/provider/package/yum.rb +319 -269
  235. data/lib/chef/provider/package/zypper.rb +10 -20
  236. data/lib/chef/provider/package.rb +71 -63
  237. data/lib/chef/provider/powershell_script.rb +15 -7
  238. data/lib/chef/provider/reboot.rb +10 -14
  239. data/lib/chef/provider/registry_key.rb +39 -43
  240. data/lib/chef/provider/remote_directory.rb +3 -15
  241. data/lib/chef/provider/remote_file.rb +3 -9
  242. data/lib/chef/provider/route.rb +1 -7
  243. data/lib/chef/provider/ruby_block.rb +4 -8
  244. data/lib/chef/provider/script.rb +42 -6
  245. data/lib/chef/provider/service/aix.rb +1 -5
  246. data/lib/chef/provider/service/debian.rb +15 -21
  247. data/lib/chef/provider/service/freebsd.rb +0 -1
  248. data/lib/chef/provider/service/gentoo.rb +0 -1
  249. data/lib/chef/provider/service/init.rb +0 -1
  250. data/lib/chef/provider/service/insserv.rb +2 -2
  251. data/lib/chef/provider/service/openbsd.rb +0 -1
  252. data/lib/chef/provider/service/redhat.rb +2 -2
  253. data/lib/chef/provider/service/simple.rb +0 -5
  254. data/lib/chef/provider/service/solaris.rb +5 -4
  255. data/lib/chef/provider/service/systemd.rb +1 -1
  256. data/lib/chef/provider/service/upstart.rb +10 -12
  257. data/lib/chef/provider/service/windows.rb +1 -5
  258. data/lib/chef/provider/service.rb +51 -58
  259. data/lib/chef/provider/subversion.rb +40 -46
  260. data/lib/chef/provider/systemd_unit.rb +2 -0
  261. data/lib/chef/provider/template/content.rb +24 -1
  262. data/lib/chef/provider/template.rb +3 -9
  263. data/lib/chef/provider/user/dscl.rb +3 -3
  264. data/lib/chef/provider/user/linux.rb +6 -5
  265. data/lib/chef/provider/user/pw.rb +4 -10
  266. data/lib/chef/provider/user/solaris.rb +2 -2
  267. data/lib/chef/provider/user/useradd.rb +5 -5
  268. data/lib/chef/provider/user.rb +43 -59
  269. data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
  270. data/lib/chef/provider/windows_task.rb +418 -0
  271. data/lib/chef/provider/yum_repository.rb +3 -6
  272. data/lib/chef/provider.rb +63 -115
  273. data/lib/chef/provider_resolver.rb +8 -34
  274. data/lib/chef/providers.rb +1 -1
  275. data/lib/chef/recipe.rb +9 -1
  276. data/lib/chef/resource/action_class.rb +13 -17
  277. data/lib/chef/resource/apt_repository.rb +0 -1
  278. data/lib/chef/resource/apt_update.rb +3 -1
  279. data/lib/chef/resource/chef_gem.rb +4 -11
  280. data/lib/chef/resource/chocolatey_package.rb +4 -1
  281. data/lib/chef/resource/dnf_package.rb +6 -3
  282. data/lib/chef/resource/dsc_resource.rb +9 -1
  283. data/lib/chef/resource/execute.rb +66 -19
  284. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
  285. data/lib/chef/resource/file/verification.rb +2 -7
  286. data/lib/chef/resource/freebsd_package.rb +1 -1
  287. data/lib/chef/resource/gem_package.rb +16 -2
  288. data/lib/chef/resource/launchd.rb +3 -3
  289. data/lib/chef/resource/lwrp_base.rb +0 -2
  290. data/lib/chef/resource/mount.rb +5 -12
  291. data/lib/chef/resource/package.rb +2 -2
  292. data/lib/chef/resource/powershell_script.rb +1 -1
  293. data/lib/chef/resource/registry_key.rb +1 -1
  294. data/lib/chef/resource/script.rb +8 -34
  295. data/lib/chef/resource/service.rb +15 -13
  296. data/lib/chef/resource/systemd_unit.rb +5 -0
  297. data/lib/chef/resource/user/aix_user.rb +1 -1
  298. data/lib/chef/resource/user/dscl_user.rb +1 -1
  299. data/lib/chef/resource/user/linux_user.rb +1 -10
  300. data/lib/chef/resource/user/pw_user.rb +1 -1
  301. data/lib/chef/resource/user/solaris_user.rb +1 -1
  302. data/lib/chef/resource/user/windows_user.rb +1 -1
  303. data/lib/chef/resource/user.rb +1 -19
  304. data/lib/chef/resource/windows_package.rb +4 -1
  305. data/lib/chef/resource/windows_task.rb +237 -0
  306. data/lib/chef/resource/yum_package.rb +13 -4
  307. data/lib/chef/resource/yum_repository.rb +0 -1
  308. data/lib/chef/resource/zypper_package.rb +2 -0
  309. data/lib/chef/resource.rb +90 -202
  310. data/lib/chef/resource_builder.rb +1 -65
  311. data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
  312. data/lib/chef/resource_collection/resource_list.rb +6 -0
  313. data/lib/chef/resource_collection/resource_set.rb +44 -17
  314. data/lib/chef/resource_collection.rb +10 -0
  315. data/lib/chef/resource_reporter.rb +1 -1
  316. data/lib/chef/resource_resolver.rb +1 -25
  317. data/lib/chef/resources.rb +1 -1
  318. data/lib/chef/role.rb +0 -6
  319. data/lib/chef/run_context/cookbook_compiler.rb +49 -5
  320. data/lib/chef/run_context.rb +4 -25
  321. data/lib/chef/run_list/run_list_item.rb +1 -1
  322. data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
  323. data/lib/chef/search/query.rb +26 -31
  324. data/lib/chef/server_api.rb +2 -0
  325. data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
  326. data/lib/chef/shell/ext.rb +3 -3
  327. data/lib/chef/shell/shell_session.rb +14 -4
  328. data/lib/chef/shell.rb +32 -7
  329. data/lib/chef/user.rb +9 -16
  330. data/lib/chef/user_v1.rb +9 -16
  331. data/lib/chef/util/diff.rb +1 -1
  332. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  333. data/lib/chef/util/selinux.rb +1 -1
  334. data/lib/chef/util/windows/net_group.rb +18 -30
  335. data/lib/chef/util/windows/net_use.rb +7 -11
  336. data/lib/chef/util/windows/net_user.rb +12 -18
  337. data/lib/chef/util/windows/volume.rb +9 -15
  338. data/lib/chef/version.rb +1 -1
  339. data/lib/chef/version_class.rb +1 -1
  340. data/lib/chef/win32/api/file.rb +25 -31
  341. data/lib/chef/win32/api/installer.rb +2 -2
  342. data/lib/chef/win32/api.rb +4 -6
  343. data/lib/chef/win32/file.rb +4 -6
  344. data/lib/chef/win32/registry.rb +9 -9
  345. data/lib/chef/win32/security/acl.rb +2 -2
  346. data/lib/chef/win32/security/sid.rb +5 -0
  347. data/lib/chef/win32/security.rb +2 -2
  348. data/lib/chef/win32/unicode.rb +2 -2
  349. data/lib/chef/win32/version.rb +1 -1
  350. data/lib/chef.rb +1 -2
  351. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
  352. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  353. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  354. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  355. data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
  356. data/spec/data/lwrp/resources/buck_passer.rb +5 -0
  357. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
  358. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
  359. data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
  360. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
  361. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
  362. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
  363. data/spec/data/prefer_metadata_json/metadata.json +51 -0
  364. data/spec/data/prefer_metadata_json/metadata.rb +6 -0
  365. data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
  366. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
  367. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
  368. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
  369. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
  370. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
  371. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
  372. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
  373. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
  374. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
  375. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
  376. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
  377. data/spec/data/shef-config.rb +11 -10
  378. data/spec/functional/knife/ssh_spec.rb +34 -6
  379. data/spec/functional/rebooter_spec.rb +1 -0
  380. data/spec/functional/resource/bash_spec.rb +11 -45
  381. data/spec/functional/resource/batch_spec.rb +5 -1
  382. data/spec/functional/resource/cron_spec.rb +2 -2
  383. data/spec/functional/resource/dsc_script_spec.rb +2 -4
  384. data/spec/functional/resource/execute_spec.rb +17 -0
  385. data/spec/functional/resource/link_spec.rb +3 -3
  386. data/spec/functional/resource/template_spec.rb +33 -0
  387. data/spec/functional/resource/user/dscl_spec.rb +2 -4
  388. data/spec/functional/root_alias_spec.rb +78 -0
  389. data/spec/functional/shell_spec.rb +38 -40
  390. data/spec/integration/client/client_spec.rb +109 -16
  391. data/spec/integration/client/exit_code_spec.rb +1 -105
  392. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
  393. data/spec/integration/knife/cookbook_download_spec.rb +0 -24
  394. data/spec/integration/knife/cookbook_show_spec.rb +12 -23
  395. data/spec/integration/knife/deps_spec.rb +5 -9
  396. data/spec/integration/knife/search_node_spec.rb +39 -0
  397. data/spec/integration/knife/serve_spec.rb +58 -22
  398. data/spec/integration/knife/upload_spec.rb +3 -11
  399. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
  400. data/spec/integration/recipes/notifies_spec.rb +60 -0
  401. data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
  402. data/spec/integration/recipes/resource_action_spec.rb +37 -30
  403. data/spec/spec_helper.rb +7 -0
  404. data/spec/support/chef_helpers.rb +5 -7
  405. data/spec/support/platform_helpers.rb +10 -3
  406. data/spec/support/platforms/prof/gc.rb +4 -6
  407. data/spec/support/shared/context/client.rb +9 -2
  408. data/spec/support/shared/functional/execute_resource.rb +150 -0
  409. data/spec/support/shared/functional/windows_script.rb +74 -4
  410. data/spec/support/shared/integration/knife_support.rb +1 -1
  411. data/spec/support/shared/unit/execute_resource.rb +37 -9
  412. data/spec/support/shared/unit/provider/file.rb +10 -0
  413. data/spec/support/shared/unit/script_resource.rb +1 -9
  414. data/spec/unit/application/exit_code_spec.rb +4 -89
  415. data/spec/unit/application_spec.rb +39 -29
  416. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
  417. data/spec/unit/client_spec.rb +72 -31
  418. data/spec/unit/config_fetcher_spec.rb +2 -2
  419. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
  420. data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
  421. data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
  422. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
  423. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
  424. data/spec/unit/cookbook/metadata_spec.rb +29 -108
  425. data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
  426. data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
  427. data/spec/unit/cookbook_loader_spec.rb +17 -19
  428. data/spec/unit/cookbook_manifest_spec.rb +12 -44
  429. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
  430. data/spec/unit/cookbook_spec.rb +10 -14
  431. data/spec/unit/cookbook_uploader_spec.rb +1 -1
  432. data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
  433. data/spec/unit/cookbook_version_spec.rb +19 -128
  434. data/spec/unit/data_bag_item_spec.rb +4 -0
  435. data/spec/unit/data_collector/messages_spec.rb +137 -0
  436. data/spec/unit/data_collector/resource_report_spec.rb +145 -0
  437. data/spec/unit/deprecation_spec.rb +0 -14
  438. data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
  439. data/spec/unit/formatters/error_description_spec.rb +52 -7
  440. data/spec/unit/http/api_versions_spec.rb +79 -0
  441. data/spec/unit/http/authenticator_spec.rb +20 -0
  442. data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
  443. data/spec/unit/json_compat_spec.rb +0 -32
  444. data/spec/unit/knife/bootstrap_spec.rb +34 -0
  445. data/spec/unit/knife/configure_client_spec.rb +0 -2
  446. data/spec/unit/knife/cookbook_create_spec.rb +1 -220
  447. data/spec/unit/knife/cookbook_download_spec.rb +46 -28
  448. data/spec/unit/knife/cookbook_show_spec.rb +42 -9
  449. data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
  450. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
  451. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
  452. data/spec/unit/knife/core/ui_spec.rb +21 -11
  453. data/spec/unit/knife/data_bag_create_spec.rb +65 -45
  454. data/spec/unit/knife/ssh_spec.rb +34 -36
  455. data/spec/unit/knife_spec.rb +2 -2
  456. data/spec/unit/lwrp_spec.rb +38 -127
  457. data/spec/unit/mixin/path_sanity_spec.rb +7 -7
  458. data/spec/unit/mixin/shell_out_spec.rb +18 -84
  459. data/spec/unit/mixin/versioned_api_spec.rb +128 -0
  460. data/spec/unit/mixin/which.rb +160 -0
  461. data/spec/unit/node/attribute_spec.rb +65 -33
  462. data/spec/unit/node/immutable_collections_spec.rb +104 -1
  463. data/spec/unit/node_map_spec.rb +1 -23
  464. data/spec/unit/node_spec.rb +81 -98
  465. data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
  466. data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
  467. data/spec/unit/property/validation_spec.rb +51 -69
  468. data/spec/unit/property_spec.rb +105 -125
  469. data/spec/unit/provider/apt_repository_spec.rb +33 -27
  470. data/spec/unit/provider/cron_spec.rb +15 -39
  471. data/spec/unit/provider/deploy_spec.rb +1 -1
  472. data/spec/unit/provider/directory_spec.rb +10 -0
  473. data/spec/unit/provider/dsc_resource_spec.rb +175 -0
  474. data/spec/unit/provider/erl_call_spec.rb +5 -13
  475. data/spec/unit/provider/execute_spec.rb +3 -14
  476. data/spec/unit/provider/launchd_spec.rb +2 -2
  477. data/spec/unit/provider/package/aix_spec.rb +22 -22
  478. data/spec/unit/provider/package/apt_spec.rb +37 -27
  479. data/spec/unit/provider/package/cab_spec.rb +59 -5
  480. data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
  481. data/spec/unit/provider/package/dpkg_spec.rb +16 -16
  482. data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
  483. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
  484. data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
  485. data/spec/unit/provider/package/homebrew_spec.rb +9 -9
  486. data/spec/unit/provider/package/ips_spec.rb +37 -31
  487. data/spec/unit/provider/package/macports_spec.rb +10 -10
  488. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  489. data/spec/unit/provider/package/pacman_spec.rb +6 -6
  490. data/spec/unit/provider/package/paludis_spec.rb +7 -7
  491. data/spec/unit/provider/package/portage_spec.rb +6 -7
  492. data/spec/unit/provider/package/rpm_spec.rb +23 -23
  493. data/spec/unit/provider/package/rubygems_spec.rb +135 -46
  494. data/spec/unit/provider/package/solaris_spec.rb +15 -15
  495. data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
  497. data/spec/unit/provider/package/windows_spec.rb +2 -1
  498. data/spec/unit/provider/package/yum_spec.rb +58 -50
  499. data/spec/unit/provider/package/zypper_spec.rb +54 -97
  500. data/spec/unit/provider/package_spec.rb +8 -0
  501. data/spec/unit/provider/powershell_script_spec.rb +14 -4
  502. data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
  503. data/spec/unit/provider/route_spec.rb +7 -1
  504. data/spec/unit/provider/script_spec.rb +49 -6
  505. data/spec/unit/provider/service/debian_service_spec.rb +14 -20
  506. data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
  507. data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
  508. data/spec/unit/provider/subversion_spec.rb +2 -2
  509. data/spec/unit/provider/user/linux_spec.rb +5 -43
  510. data/spec/unit/provider/user/pw_spec.rb +7 -27
  511. data/spec/unit/provider/windows_task_spec.rb +392 -0
  512. data/spec/unit/provider_resolver_spec.rb +0 -1
  513. data/spec/unit/provider_spec.rb +10 -3
  514. data/spec/unit/recipe_spec.rb +3 -172
  515. data/spec/unit/resource/chef_gem_spec.rb +16 -62
  516. data/spec/unit/resource/conditional_spec.rb +4 -4
  517. data/spec/unit/resource/cookbook_file_spec.rb +2 -2
  518. data/spec/unit/resource/cron_spec.rb +1 -1
  519. data/spec/unit/resource/deploy_spec.rb +4 -4
  520. data/spec/unit/resource/directory_spec.rb +2 -2
  521. data/spec/unit/resource/dsc_resource_spec.rb +6 -0
  522. data/spec/unit/resource/env_spec.rb +1 -1
  523. data/spec/unit/resource/execute_spec.rb +215 -1
  524. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
  525. data/spec/unit/resource/file/verification_spec.rb +8 -14
  526. data/spec/unit/resource/file_spec.rb +3 -3
  527. data/spec/unit/resource/freebsd_package_spec.rb +2 -2
  528. data/spec/unit/resource/group_spec.rb +2 -2
  529. data/spec/unit/resource/ifconfig_spec.rb +1 -1
  530. data/spec/unit/resource/link_spec.rb +2 -2
  531. data/spec/unit/resource/mdadm_spec.rb +1 -1
  532. data/spec/unit/resource/mount_spec.rb +3 -3
  533. data/spec/unit/resource/ohai_spec.rb +1 -1
  534. data/spec/unit/resource/package_spec.rb +14 -4
  535. data/spec/unit/resource/registry_key_spec.rb +2 -2
  536. data/spec/unit/resource/remote_directory_spec.rb +2 -2
  537. data/spec/unit/resource/remote_file_spec.rb +2 -2
  538. data/spec/unit/resource/route_spec.rb +1 -1
  539. data/spec/unit/resource/scm_spec.rb +2 -2
  540. data/spec/unit/resource/script_spec.rb +1 -1
  541. data/spec/unit/resource/service_spec.rb +25 -5
  542. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  543. data/spec/unit/resource/template_spec.rb +2 -2
  544. data/spec/unit/resource/user_spec.rb +6 -6
  545. data/spec/unit/resource/windows_task_spec.rb +213 -0
  546. data/spec/unit/resource/yum_package_spec.rb +42 -1
  547. data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
  548. data/spec/unit/resource_collection_spec.rb +4 -3
  549. data/spec/unit/resource_reporter_spec.rb +6 -6
  550. data/spec/unit/resource_spec.rb +55 -71
  551. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
  552. data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
  553. data/spec/unit/runner_spec.rb +10 -28
  554. data/spec/unit/search/query_spec.rb +32 -34
  555. data/spec/unit/server_api_versions_spec.rb +44 -0
  556. data/spec/unit/shell/shell_session_spec.rb +33 -2
  557. data/spec/unit/util/selinux_spec.rb +3 -14
  558. data/spec/unit/win32/error_spec.rb +67 -0
  559. data/spec/unit/win32/security_spec.rb +66 -0
  560. data/tasks/bundle.rb +36 -52
  561. data/tasks/changelog.rb +1 -1
  562. data/tasks/dependencies.rb +54 -52
  563. data/tasks/version.rb +41 -0
  564. metadata +91 -76
  565. data/lib/chef/deprecation/mixin/template.rb +0 -48
  566. data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
  567. data/lib/chef/deprecation/provider/file.rb +0 -198
  568. data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
  569. data/lib/chef/deprecation/provider/remote_file.rb +0 -85
  570. data/lib/chef/deprecation/provider/template.rb +0 -63
  571. data/lib/chef/dsl/method_missing.rb +0 -75
  572. data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
  573. data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
  574. data/lib/chef/mixin/command/unix.rb +0 -220
  575. data/lib/chef/mixin/command/windows.rb +0 -71
  576. data/lib/chef/mixin/command.rb +0 -194
  577. data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
  578. data/lib/chef/provider/package/easy_install.rb +0 -135
  579. data/lib/chef/rest.rb +0 -210
  580. data/lib/chef/shell_out.rb +0 -13
  581. data/lib/chef/tasks/chef_repo.rake +0 -200
  582. data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
  583. data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
  584. data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
  585. data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
  586. data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
  587. data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
  588. data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
  589. data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
  590. data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
  591. data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
  592. data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
  593. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
  594. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
  595. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
  596. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
  597. data/spec/functional/rest_spec.rb +0 -95
  598. data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
  599. data/spec/unit/lib_backcompat_spec.rb +0 -34
  600. data/spec/unit/mixin/command_spec.rb +0 -107
  601. data/spec/unit/platform_spec.rb +0 -242
  602. data/spec/unit/provider/package/easy_install_spec.rb +0 -114
  603. data/spec/unit/resource/easy_install_package_spec.rb +0 -39
  604. data/spec/unit/rest/auth_credentials_spec.rb +0 -292
  605. data/spec/unit/rest_spec.rb +0 -753
  606. data/spec/unit/shell_out_spec.rb +0 -18
  607. data/tasks/bin/bundle-platform +0 -20
  608. data/tasks/bin/bundle-platform.bat +0 -2
  609. data/tasks/bin/bundler_patch.rb +0 -27
  610. data/tasks/bin/gem-version-diff +0 -37
  611. data/tasks/bundle_util.rb +0 -110
@@ -0,0 +1,133 @@
1
+ #
2
+ # Copyright:: Copyright 2017, Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "spec_helper"
18
+ require "chef/cookbook_manifest"
19
+ require "chef/digester"
20
+ require "pathname"
21
+
22
+ describe Chef::Cookbook::ManifestV0 do
23
+ let(:version) { "1.2.3" }
24
+
25
+ let(:identifier) { "9e10455ce2b4a4e29424b7064b1d67a1a25c9d3b" }
26
+
27
+ let(:metadata) do
28
+ Chef::Cookbook::Metadata.new.tap do |m|
29
+ m.version(version)
30
+ end
31
+ end
32
+
33
+ let(:cookbook_root) { "/tmp/blah" }
34
+
35
+ let(:cookbook_version) do
36
+ Chef::CookbookVersion.new("tatft", cookbook_root).tap do |c|
37
+ c.metadata = metadata
38
+ c.identifier = identifier
39
+ end
40
+ end
41
+
42
+ let(:cookbook_manifest) { Chef::CookbookManifest.new(cookbook_version) }
43
+
44
+ let(:cookbook_root) { File.join(CHEF_SPEC_DATA, "cb_version_cookbooks", "tatft") }
45
+
46
+ let(:all_files) { Dir[File.join(cookbook_root, "**", "**")].reject { |f| File.directory? f } }
47
+
48
+ let(:expected_hash) do
49
+ {
50
+ "attributes" => [{ "name" => "default.rb", "path" => "attributes/default.rb", "checksum" => "a88697db56181498a8828d5531271ad9", "specificity" => "default" }],
51
+ "chef_type" => "cookbook_version",
52
+ "cookbook_name" => "tatft",
53
+ "definitions" => [{ "name" => "runit_service.rb", "path" => "definitions/runit_service.rb", "checksum" => "c40cf9b4c6eb15a8e49e31602f701161", "specificity" => "default" }],
54
+ "files" => [{ "name" => "giant_blob.tgz", "path" => "files/default/giant_blob.tgz", "checksum" => "5b4b194bb80938bb18da7af5c823cb1b", "specificity" => "default" }],
55
+ "frozen?" => false,
56
+ "libraries" => [{ "name" => "ownage.rb", "path" => "libraries/ownage.rb", "checksum" => "4686edd9968909034692e09e058d90d9", "specificity" => "default" }],
57
+ "name" => "tatft-1.2.3",
58
+ "providers" => [{ "name" => "lwp.rb", "path" => "providers/lwp.rb", "checksum" => "bc189d68f77bb054d1070aeff7669557", "specificity" => "default" }],
59
+ "recipes" => [{ "name" => "default.rb", "path" => "recipes/default.rb", "checksum" => "09bc749f00c68717d288de9c8d7c644f", "specificity" => "default" }],
60
+ "resources" => [{ "name" => "lwr.rb", "path" => "resources/lwr.rb", "checksum" => "609c40d3d3f269e7edf230277a240ef5", "specificity" => "default" }],
61
+ "root_files" => [{ "name" => "README.rdoc", "path" => "README.rdoc", "checksum" => "cd7be9a1b9b1f33e3bcd9c3f4bc8dde5", "specificity" => "default" }],
62
+ "templates" => [{ "name" => "configuration.erb", "path" => "templates/default/configuration.erb", "checksum" => "d41d8cd98f00b204e9800998ecf8427e", "specificity" => "default" }],
63
+ "version" => "1.2.3",
64
+ }
65
+ end
66
+
67
+ describe "#from_hash" do
68
+ let(:source_hash) do
69
+ {
70
+ "attributes" => [{ "name" => "default.rb", "path" => "attributes/default.rb", "checksum" => "a88697db56181498a8828d5531271ad9", "specificity" => "default" }],
71
+ "recipes" => [{ "name" => "default.rb", "path" => "recipes/default.rb", "checksum" => "09bc749f00c68717d288de9c8d7c644f", "specificity" => "default" }],
72
+ "root_files" => [{ "name" => "README.rdoc", "path" => "README.rdoc", "checksum" => "cd7be9a1b9b1f33e3bcd9c3f4bc8dde5", "specificity" => "default" }],
73
+ "name" => "tatft-1.2.3",
74
+ "version" => "1.2.3",
75
+ }
76
+ end
77
+
78
+ it "preserves the version" do
79
+ result = described_class.from_hash(source_hash)
80
+ expect(result["version"]).to eq "1.2.3"
81
+ end
82
+
83
+ it "creates an all_files key and populates it" do
84
+ result = described_class.from_hash(source_hash)
85
+ expect(result[:all_files].map { |f| f["name"] }).to match_array %w{ recipes/default.rb attributes/default.rb README.rdoc }
86
+ end
87
+
88
+ it "deletes unwanted segment types" do
89
+ result = described_class.from_hash(source_hash)
90
+ expect(result["attributes"]).to be_nil
91
+ end
92
+
93
+ it "preserves frozeness" do
94
+ source_hash["frozen?"] = true
95
+ result = described_class.from_hash(source_hash)
96
+ expect(result["frozen?"]).to be true
97
+ end
98
+ end
99
+
100
+ describe "#to_hash" do
101
+ it "accepts a cookbook manifest" do
102
+ result = described_class.to_hash(cookbook_manifest)
103
+ expect(result).to be_a(Hash)
104
+ end
105
+
106
+ it "preserves frozeness" do
107
+ cookbook_version.freeze_version
108
+ expect(described_class.to_hash(cookbook_manifest)["frozen?"]).to be true
109
+ end
110
+ end
111
+
112
+ context "ensures that all segments exist" do
113
+ Chef::Cookbook::ManifestV0::COOKBOOK_SEGMENTS.each do |segment|
114
+ it "with #{segment}" do
115
+ result = described_class.to_hash(cookbook_manifest)
116
+ expect(result[segment]).to be_empty
117
+ end
118
+ end
119
+ end
120
+
121
+ context "when given a cookbook with some files" do
122
+ before do
123
+ cookbook_version.all_files = all_files
124
+ end
125
+
126
+ Chef::Cookbook::ManifestV0::COOKBOOK_SEGMENTS.each do |segment|
127
+ it "places the files for #{segment} correctly" do
128
+ result = described_class.to_hash(cookbook_manifest)
129
+ expect(result[segment]).to eq(expected_hash[segment])
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,70 @@
1
+ #
2
+ # Copyright:: Copyright 2017, Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "spec_helper"
18
+ require "chef/cookbook_manifest"
19
+ require "chef/digester"
20
+ require "pathname"
21
+
22
+ describe Chef::Cookbook::ManifestV2 do
23
+ let(:version) { "1.2.3" }
24
+
25
+ let(:identifier) { "9e10455ce2b4a4e29424b7064b1d67a1a25c9d3b" }
26
+
27
+ let(:metadata) do
28
+ Chef::Cookbook::Metadata.new.tap do |m|
29
+ m.version(version)
30
+ end
31
+ end
32
+
33
+ let(:cookbook_root) { "/tmp/blah" }
34
+
35
+ let(:cookbook_version) do
36
+ Chef::CookbookVersion.new("tatft", cookbook_root).tap do |c|
37
+ c.metadata = metadata
38
+ c.identifier = identifier
39
+ end
40
+ end
41
+
42
+ let(:cookbook_manifest) { Chef::CookbookManifest.new(cookbook_version) }
43
+
44
+ let(:cookbook_root) { File.join(CHEF_SPEC_DATA, "cb_version_cookbooks", "tatft") }
45
+
46
+ let(:all_files) { Dir[File.join(cookbook_root, "**", "**")].reject { |f| File.directory? f } }
47
+
48
+ describe "#to_hash" do
49
+ it "accepts a cookbook manifest" do
50
+ result = described_class.to_hash(cookbook_manifest)
51
+ expect(result).to be_a(Hash)
52
+ end
53
+
54
+ it "preserves frozeness" do
55
+ cookbook_version.freeze_version
56
+ expect(described_class.to_hash(cookbook_manifest)["frozen?"]).to be true
57
+ end
58
+ end
59
+
60
+ context "when given a cookbook with some files" do
61
+ before do
62
+ cookbook_version.all_files = all_files
63
+ end
64
+
65
+ it "populates all_files correctly" do
66
+ result = described_class.to_hash(cookbook_manifest)
67
+ expect(result["all_files"][0]).not_to include(:full_path)
68
+ end
69
+ end
70
+ end
@@ -28,8 +28,7 @@ describe Chef::Cookbook::Metadata do
28
28
  before do
29
29
  @fields = [ :name, :description, :long_description, :maintainer,
30
30
  :maintainer_email, :license, :platforms, :dependencies,
31
- :recommendations, :suggestions, :conflicting, :providing,
32
- :replacing, :attributes, :groupings, :recipes, :version,
31
+ :providing, :attributes, :recipes, :version,
33
32
  :source_url, :issues_url, :privacy, :ohai_versions, :chef_versions,
34
33
  :gems ]
35
34
  end
@@ -114,30 +113,10 @@ describe Chef::Cookbook::Metadata do
114
113
  expect(metadata.dependencies).to eq(Mash.new)
115
114
  end
116
115
 
117
- it "has an empty recommends list" do
118
- expect(metadata.recommendations).to eq(Mash.new)
119
- end
120
-
121
- it "has an empty suggestions list" do
122
- expect(metadata.suggestions).to eq(Mash.new)
123
- end
124
-
125
- it "has an empty conflicts list" do
126
- expect(metadata.conflicting).to eq(Mash.new)
127
- end
128
-
129
- it "has an empty replaces list" do
130
- expect(metadata.replacing).to eq(Mash.new)
131
- end
132
-
133
116
  it "has an empty attributes list" do
134
117
  expect(metadata.attributes).to eq(Mash.new)
135
118
  end
136
119
 
137
- it "has an empty groupings list" do
138
- expect(metadata.groupings).to eq(Mash.new)
139
- end
140
-
141
120
  it "has an empty recipes list" do
142
121
  expect(metadata.recipes).to eq(Mash.new)
143
122
  end
@@ -234,11 +213,7 @@ describe Chef::Cookbook::Metadata do
234
213
 
235
214
  dep_types = {
236
215
  :depends => [ :dependencies, "foo::bar", "> 0.2" ],
237
- :recommends => [ :recommendations, "foo::bar", ">= 0.2" ],
238
- :suggests => [ :suggestions, "foo::bar", "> 0.2" ],
239
- :conflicts => [ :conflicting, "foo::bar", "~> 0.2" ],
240
216
  :provides => [ :providing, "foo::bar", "<= 0.2" ],
241
- :replaces => [ :replacing, "foo::bar", "= 0.2.1" ],
242
217
  }
243
218
  dep_types.sort_by(&:to_s).each do |dep, dep_args|
244
219
  check_with = dep_args.shift
@@ -255,11 +230,7 @@ describe Chef::Cookbook::Metadata do
255
230
 
256
231
  dep_types = {
257
232
  :depends => [ :dependencies, "foo::bar", ">0.2", "> 0.2" ],
258
- :recommends => [ :recommendations, "foo::bar", ">=0.2", ">= 0.2" ],
259
- :suggests => [ :suggestions, "foo::bar", ">0.2", "> 0.2" ],
260
- :conflicts => [ :conflicting, "foo::bar", "~>0.2", "~> 0.2" ],
261
233
  :provides => [ :providing, "foo::bar", "<=0.2", "<= 0.2" ],
262
- :replaces => [ :replacing, "foo::bar", "=0.2.1", "= 0.2.1" ],
263
234
  }
264
235
  dep_types.sort_by(&:to_s).each do |dep, dep_args|
265
236
  check_with = dep_args.shift
@@ -278,11 +249,7 @@ describe Chef::Cookbook::Metadata do
278
249
  describe "in the obsoleted format" do
279
250
  dep_types = {
280
251
  :depends => [ "foo::bar", "> 0.2", "< 1.0" ],
281
- :recommends => [ "foo::bar", ">= 0.2", "< 1.0" ],
282
- :suggests => [ "foo::bar", "> 0.2", "< 1.0" ],
283
- :conflicts => [ "foo::bar", "> 0.2", "< 1.0" ],
284
252
  :provides => [ "foo::bar", "> 0.2", "< 1.0" ],
285
- :replaces => [ "foo::bar", "> 0.2.1", "< 1.0" ],
286
253
  }
287
254
 
288
255
  dep_types.each do |dep, dep_args|
@@ -295,11 +262,7 @@ describe Chef::Cookbook::Metadata do
295
262
  describe "with obsolete operators" do
296
263
  dep_types = {
297
264
  :depends => [ "foo::bar", ">> 0.2"],
298
- :recommends => [ "foo::bar", ">> 0.2"],
299
- :suggests => [ "foo::bar", ">> 0.2"],
300
- :conflicts => [ "foo::bar", ">> 0.2"],
301
265
  :provides => [ "foo::bar", ">> 0.2"],
302
- :replaces => [ "foo::bar", ">> 0.2.1"],
303
266
  }
304
267
 
305
268
  dep_types.each do |dep, dep_args|
@@ -452,33 +415,6 @@ describe Chef::Cookbook::Metadata do
452
415
  end
453
416
  end
454
417
 
455
- describe "attribute groupings" do
456
- it "should allow you set a grouping" do
457
- group = {
458
- "title" => "MySQL Tuning",
459
- "description" => "Setting from the my.cnf file that allow you to tune your mysql server",
460
- }
461
- expect(metadata.grouping("/db/mysql/databases/tuning", group)).to eq(group)
462
- end
463
- it "should not accept anything but a string for display_name" do
464
- expect do
465
- metadata.grouping("db/mysql/databases", :title => "foo")
466
- end.not_to raise_error
467
- expect do
468
- metadata.grouping("db/mysql/databases", :title => Hash.new)
469
- end.to raise_error(ArgumentError)
470
- end
471
-
472
- it "should not accept anything but a string for the description" do
473
- expect do
474
- metadata.grouping("db/mysql/databases", :description => "foo")
475
- end.not_to raise_error
476
- expect do
477
- metadata.grouping("db/mysql/databases", :description => Hash.new)
478
- end.to raise_error(ArgumentError)
479
- end
480
- end
481
-
482
418
  describe "cookbook attributes" do
483
419
  it "should allow you set an attributes metadata" do
484
420
  attrs = {
@@ -765,7 +701,10 @@ describe Chef::Cookbook::Metadata do
765
701
  describe "recipes" do
766
702
  let(:cookbook) do
767
703
  c = Chef::CookbookVersion.new("test_cookbook")
768
- c.recipe_files = [ "default.rb", "enlighten.rb" ]
704
+ c.manifest = { all_files: [
705
+ { name: "recipes/default.rb", path: "recipes/default.rb", checksum: "my_only_friend" },
706
+ { name: "recipes/enlighten.rb", path: "recipes/enlighten.rb", checksum: "my_only_friend" },
707
+ ] }
769
708
  c
770
709
  end
771
710
 
@@ -801,11 +740,7 @@ describe Chef::Cookbook::Metadata do
801
740
  metadata.depends "bobo", "= 1.0"
802
741
  metadata.depends "bubu", "=1.0"
803
742
  metadata.depends "bobotclown", "= 1.1"
804
- metadata.recommends "snark", "< 3.0"
805
- metadata.suggests "kindness", "> 2.0"
806
- metadata.conflicts "hatred"
807
743
  metadata.provides "foo(:bar, :baz)"
808
- metadata.replaces "snarkitron"
809
744
  metadata.recipe "test_cookbook::enlighten", "is your buddy"
810
745
  metadata.attribute "bizspark/has_login",
811
746
  :display_name => "You have nothing"
@@ -840,11 +775,7 @@ describe Chef::Cookbook::Metadata do
840
775
  license
841
776
  platforms
842
777
  dependencies
843
- suggestions
844
- recommendations
845
- conflicting
846
778
  providing
847
- replacing
848
779
  attributes
849
780
  recipes
850
781
  version
@@ -885,11 +816,7 @@ describe Chef::Cookbook::Metadata do
885
816
  license
886
817
  platforms
887
818
  dependencies
888
- suggestions
889
- recommendations
890
- conflicting
891
819
  providing
892
- replacing
893
820
  attributes
894
821
  recipes
895
822
  version
@@ -911,40 +838,34 @@ describe Chef::Cookbook::Metadata do
911
838
  @hash = metadata.to_hash
912
839
  end
913
840
 
914
- [:dependencies,
915
- :recommendations,
916
- :suggestions,
917
- :conflicting,
918
- :replacing].each do |to_check|
919
- it "should transform deprecated greater than syntax for :#{to_check}" do
920
- @hash[to_check.to_s]["foo::bar"] = ">> 0.2"
921
- deserial = Chef::Cookbook::Metadata.from_hash(@hash)
922
- expect(deserial.send(to_check)["foo::bar"]).to eq("> 0.2")
923
- end
841
+ it "should transform deprecated greater than syntax for :dependencies" do
842
+ @hash[:dependencies.to_s]["foo::bar"] = ">> 0.2"
843
+ deserial = Chef::Cookbook::Metadata.from_hash(@hash)
844
+ expect(deserial.send(:dependencies)["foo::bar"]).to eq("> 0.2")
845
+ end
924
846
 
925
- it "should transform deprecated less than syntax for :#{to_check}" do
926
- @hash[to_check.to_s]["foo::bar"] = "<< 0.2"
927
- deserial = Chef::Cookbook::Metadata.from_hash(@hash)
928
- expect(deserial.send(to_check)["foo::bar"]).to eq("< 0.2")
929
- end
847
+ it "should transform deprecated less than syntax for :dependencies" do
848
+ @hash[:dependencies.to_s]["foo::bar"] = "<< 0.2"
849
+ deserial = Chef::Cookbook::Metadata.from_hash(@hash)
850
+ expect(deserial.send(:dependencies)["foo::bar"]).to eq("< 0.2")
851
+ end
930
852
 
931
- it "should ignore multiple dependency constraints for :#{to_check}" do
932
- @hash[to_check.to_s]["foo::bar"] = [ ">= 1.0", "<= 5.2" ]
933
- deserial = Chef::Cookbook::Metadata.from_hash(@hash)
934
- expect(deserial.send(to_check)["foo::bar"]).to eq([])
935
- end
853
+ it "should ignore multiple dependency constraints for :dependencies" do
854
+ @hash[:dependencies.to_s]["foo::bar"] = [ ">= 1.0", "<= 5.2" ]
855
+ deserial = Chef::Cookbook::Metadata.from_hash(@hash)
856
+ expect(deserial.send(:dependencies)["foo::bar"]).to eq([])
857
+ end
936
858
 
937
- it "should accept an empty array of dependency constraints for :#{to_check}" do
938
- @hash[to_check.to_s]["foo::bar"] = []
939
- deserial = Chef::Cookbook::Metadata.from_hash(@hash)
940
- expect(deserial.send(to_check)["foo::bar"]).to eq([])
941
- end
859
+ it "should accept an empty array of dependency constraints for :dependencies" do
860
+ @hash[:dependencies.to_s]["foo::bar"] = []
861
+ deserial = Chef::Cookbook::Metadata.from_hash(@hash)
862
+ expect(deserial.send(:dependencies)["foo::bar"]).to eq([])
863
+ end
942
864
 
943
- it "should accept single-element arrays of dependency constraints for :#{to_check}" do
944
- @hash[to_check.to_s]["foo::bar"] = [ ">= 2.0" ]
945
- deserial = Chef::Cookbook::Metadata.from_hash(@hash)
946
- expect(deserial.send(to_check)["foo::bar"]).to eq(">= 2.0")
947
- end
865
+ it "should accept single-element arrays of dependency constraints for :dependencies" do
866
+ @hash[:dependencies.to_s]["foo::bar"] = [ ">= 2.0" ]
867
+ deserial = Chef::Cookbook::Metadata.from_hash(@hash)
868
+ expect(deserial.send(:dependencies)["foo::bar"]).to eq(">= 2.0")
948
869
  end
949
870
  end
950
871
 
@@ -62,6 +62,7 @@ describe Chef::CookbookSynchronizer do
62
62
  let(:cookbook_a_default_recipe) do
63
63
  {
64
64
  "path" => "recipes/default.rb",
65
+ "name" => "recipes/default.rb",
65
66
  "url" => "http://chef.example.com/abc123",
66
67
  "checksum" => "abc123",
67
68
  }
@@ -70,6 +71,7 @@ describe Chef::CookbookSynchronizer do
70
71
  let(:cookbook_a_default_attrs) do
71
72
  {
72
73
  "path" => "attributes/default.rb",
74
+ "name" => "attributes/default.rb",
73
75
  "url" => "http://chef.example.com/abc456",
74
76
  "checksum" => "abc456",
75
77
  }
@@ -78,6 +80,7 @@ describe Chef::CookbookSynchronizer do
78
80
  let(:cookbook_a_template) do
79
81
  {
80
82
  "path" => "templates/default/apache2.conf.erb",
83
+ "name" => "templates/apache2.conf.erb",
81
84
  "url" => "http://chef.example.com/ffffff",
82
85
  "checksum" => "abc125",
83
86
  }
@@ -86,18 +89,14 @@ describe Chef::CookbookSynchronizer do
86
89
  let(:cookbook_a_file) do
87
90
  {
88
91
  "path" => "files/default/megaman.conf",
92
+ "name" => "files/megaman.conf",
89
93
  "url" => "http://chef.example.com/megaman.conf",
90
94
  "checksum" => "abc124",
91
95
  }
92
96
  end
93
97
 
94
98
  let(:cookbook_a_manifest) do
95
- segments = [ :resources, :providers, :recipes, :definitions, :libraries, :attributes, :files, :templates, :root_files ]
96
- cookbook_a_manifest = segments.inject({}) { |h, segment| h[segment.to_s] = []; h }
97
- cookbook_a_manifest["recipes"] = [ cookbook_a_default_recipe ]
98
- cookbook_a_manifest["attributes"] = [ cookbook_a_default_attrs ]
99
- cookbook_a_manifest["templates"] = [ cookbook_a_template ]
100
- cookbook_a_manifest["files"] = [ cookbook_a_file ]
99
+ cookbook_a_manifest = { all_files: [ cookbook_a_default_recipe, cookbook_a_default_attrs, cookbook_a_template, cookbook_a_file ] }
101
100
  cookbook_a_manifest
102
101
  end
103
102
 
@@ -25,6 +25,7 @@ describe Chef::Cookbook::SyntaxCheck do
25
25
  end
26
26
 
27
27
  let(:cookbook_path) { File.join(CHEF_SPEC_DATA, "cookbooks", "openldap") }
28
+ let(:unsafe_cookbook_path) { 'C:\AGENT-HOME\xml-data\build-dir\76808194-76906499\artifact\cookbooks/java' }
28
29
  let(:syntax_check) { Chef::Cookbook::SyntaxCheck.new(cookbook_path) }
29
30
 
30
31
  let(:open_ldap_cookbook_files) do
@@ -53,18 +54,19 @@ describe Chef::Cookbook::SyntaxCheck do
53
54
  @recipes = %w{default.rb gigantor.rb one.rb return.rb}.map { |f| File.join(cookbook_path, "recipes", f) }
54
55
  @spec_files = [ File.join(cookbook_path, "spec", "spec_helper.rb") ]
55
56
  @ruby_files = @attr_files + @libr_files + @defn_files + @recipes + @spec_files + [File.join(cookbook_path, "metadata.rb")]
56
- basenames = %w{ helpers_via_partial_test.erb
57
+ @basenames = %w{ helpers_via_partial_test.erb
57
58
  helper_test.erb
58
59
  helpers.erb
59
60
  openldap_stuff.conf.erb
60
61
  nested_openldap_partials.erb
61
62
  nested_partial.erb
63
+ openldap_nested_variable_stuff.erb
62
64
  openldap_variable_stuff.conf.erb
63
65
  test.erb
64
66
  some_windows_line_endings.erb
65
67
  all_windows_line_endings.erb
66
68
  no_windows_line_endings.erb }
67
- @template_files = basenames.map { |f| File.join(cookbook_path, "templates", "default", f) }
69
+ @template_files = @basenames.map { |f| File.join(cookbook_path, "templates", "default", f) }
68
70
  end
69
71
 
70
72
  after do
@@ -94,6 +96,11 @@ describe Chef::Cookbook::SyntaxCheck do
94
96
  end
95
97
  end
96
98
 
99
+ it "safely handles a path containing control characters" do
100
+ syntax_check = Chef::Cookbook::SyntaxCheck.new(unsafe_cookbook_path)
101
+ expect { syntax_check.remove_uninteresting_ruby_files(@basenames) }.not_to raise_error
102
+ end
103
+
97
104
  describe "when first created" do
98
105
  it "has the path to the cookbook to syntax check" do
99
106
  expect(syntax_check.cookbook_path).to eq(cookbook_path)
@@ -31,6 +31,10 @@ describe Chef::CookbookLoader do
31
31
 
32
32
  let(:cookbook_loader) { Chef::CookbookLoader.new(repo_paths) }
33
33
 
34
+ def full_paths_for_part(cb, part)
35
+ cookbook_loader[cb].files_for(part).inject([]) { |memo, f| memo << f[:full_path]; memo }
36
+ end
37
+
34
38
  it "checks each directory only once when loading (CHEF-3487)" do
35
39
  cookbook_paths = []
36
40
  repo_paths.each do |repo_path|
@@ -95,13 +99,7 @@ describe Chef::CookbookLoader do
95
99
  cookbook_loader.each do |cookbook_name, cookbook|
96
100
  seen << cookbook_name
97
101
  end
98
- expect(seen[0]).to eq("angrybash")
99
- expect(seen[1]).to eq("apache2")
100
- expect(seen[2]).to eq("borken")
101
- expect(seen[3]).to eq("ignorken")
102
- expect(seen[4]).to eq("java")
103
- expect(seen[5]).to eq("name-mismatch")
104
- expect(seen[6]).to eq("openldap")
102
+ expect(seen).to eq %w{angrybash apache2 borken ignorken java name-mismatch openldap preseed supports-platform-constraints}
105
103
  end
106
104
  end
107
105
 
@@ -112,61 +110,61 @@ describe Chef::CookbookLoader do
112
110
  end
113
111
 
114
112
  it "should allow you to override an attribute file via cookbook_path" do
115
- expect(cookbook_loader[:openldap].attribute_filenames.detect do |f|
113
+ expect(full_paths_for_part(:openldap, "attributes").detect do |f|
116
114
  f =~ /cookbooks\/openldap\/attributes\/default.rb/
117
115
  end).not_to eql(nil)
118
- expect(cookbook_loader[:openldap].attribute_filenames.detect do |f|
116
+ expect(full_paths_for_part(:openldap, "attributes").detect do |f|
119
117
  f =~ /kitchen\/openldap\/attributes\/default.rb/
120
118
  end).to eql(nil)
121
119
  end
122
120
 
123
121
  it "should load different attribute files from deeper paths" do
124
- expect(cookbook_loader[:openldap].attribute_filenames.detect do |f|
122
+ expect(full_paths_for_part(:openldap, "attributes").detect do |f|
125
123
  f =~ /kitchen\/openldap\/attributes\/robinson.rb/
126
124
  end).not_to eql(nil)
127
125
  end
128
126
 
129
127
  it "should allow you to override a definition file via cookbook_path" do
130
- expect(cookbook_loader[:openldap].definition_filenames.detect do |f|
128
+ expect(full_paths_for_part(:openldap, "definitions").detect do |f|
131
129
  f =~ /cookbooks\/openldap\/definitions\/client.rb/
132
130
  end).not_to eql(nil)
133
- expect(cookbook_loader[:openldap].definition_filenames.detect do |f|
131
+ expect(full_paths_for_part(:openldap, "definitions").detect do |f|
134
132
  f =~ /kitchen\/openldap\/definitions\/client.rb/
135
133
  end).to eql(nil)
136
134
  end
137
135
 
138
136
  it "should load definition files from deeper paths" do
139
- expect(cookbook_loader[:openldap].definition_filenames.detect do |f|
137
+ expect(full_paths_for_part(:openldap, "definitions").detect do |f|
140
138
  f =~ /kitchen\/openldap\/definitions\/drewbarrymore.rb/
141
139
  end).not_to eql(nil)
142
140
  end
143
141
 
144
142
  it "should allow you to override a recipe file via cookbook_path" do
145
- expect(cookbook_loader[:openldap].recipe_filenames.detect do |f|
143
+ expect(full_paths_for_part(:openldap, "recipes").detect do |f|
146
144
  f =~ /cookbooks\/openldap\/recipes\/gigantor.rb/
147
145
  end).not_to eql(nil)
148
- expect(cookbook_loader[:openldap].recipe_filenames.detect do |f|
146
+ expect(full_paths_for_part(:openldap, "recipes").detect do |f|
149
147
  f =~ /kitchen\/openldap\/recipes\/gigantor.rb/
150
148
  end).to eql(nil)
151
149
  end
152
150
 
153
151
  it "should load recipe files from deeper paths" do
154
- expect(cookbook_loader[:openldap].recipe_filenames.detect do |f|
152
+ expect(full_paths_for_part(:openldap, "recipes").detect do |f|
155
153
  f =~ /kitchen\/openldap\/recipes\/woot.rb/
156
154
  end).not_to eql(nil)
157
155
  end
158
156
 
159
157
  it "should allow you to have an 'ignore' file, which skips loading files in later cookbooks" do
160
- expect(cookbook_loader[:openldap].recipe_filenames.detect do |f|
158
+ expect(full_paths_for_part(:openldap, "recipes").detect do |f|
161
159
  f =~ /kitchen\/openldap\/recipes\/ignoreme.rb/
162
160
  end).to eql(nil)
163
161
  end
164
162
 
165
163
  it "should find files that start with a ." do
166
- expect(cookbook_loader[:openldap].file_filenames.detect do |f|
164
+ expect(full_paths_for_part(:openldap, "files").detect do |f|
167
165
  f =~ /\.dotfile$/
168
166
  end).to match(/\.dotfile$/)
169
- expect(cookbook_loader[:openldap].file_filenames.detect do |f|
167
+ expect(full_paths_for_part(:openldap, "files").detect do |f|
170
168
  f =~ /\.ssh\/id_rsa$/
171
169
  end).to match(/\.ssh\/id_rsa$/)
172
170
  end