chef 11.4.4 → 11.6.0.hotfix.1

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 (504) hide show
  1. data/README.md +1 -1
  2. data/Rakefile +18 -1
  3. data/bin/chef-service-manager +37 -0
  4. data/distro/common/html/chef-client.8.html +4 -4
  5. data/distro/common/html/chef-expander.8.html +4 -4
  6. data/distro/common/html/chef-expanderctl.8.html +4 -4
  7. data/distro/common/html/chef-server-webui.8.html +4 -4
  8. data/distro/common/html/chef-server.8.html +4 -4
  9. data/distro/common/html/chef-shell.1.html +4 -4
  10. data/distro/common/html/chef-solo.8.html +12 -18
  11. data/distro/common/html/chef-solr.8.html +4 -4
  12. data/distro/common/html/knife-bootstrap.1.html +4 -4
  13. data/distro/common/html/knife-client.1.html +4 -4
  14. data/distro/common/html/knife-configure.1.html +4 -4
  15. data/distro/common/html/knife-cookbook-site.1.html +4 -4
  16. data/distro/common/html/knife-cookbook.1.html +7 -10
  17. data/distro/common/html/knife-data-bag.1.html +7 -10
  18. data/distro/common/html/knife-environment.1.html +6 -8
  19. data/distro/common/html/knife-exec.1.html +4 -4
  20. data/distro/common/html/knife-index.1.html +4 -4
  21. data/distro/common/html/knife-node.1.html +4 -4
  22. data/distro/common/html/knife-role.1.html +4 -4
  23. data/distro/common/html/knife-search.1.html +4 -4
  24. data/distro/common/html/knife-ssh.1.html +4 -4
  25. data/distro/common/html/knife-status.1.html +4 -4
  26. data/distro/common/html/knife-tag.1.html +4 -4
  27. data/distro/common/html/knife.1.html +4 -4
  28. data/distro/common/man/man1/chef-shell.1 +1 -1
  29. data/distro/common/man/man1/knife-bootstrap.1 +1 -1
  30. data/distro/common/man/man1/knife-client.1 +1 -1
  31. data/distro/common/man/man1/knife-configure.1 +1 -1
  32. data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
  33. data/distro/common/man/man1/knife-cookbook.1 +2 -15
  34. data/distro/common/man/man1/knife-data-bag.1 +2 -15
  35. data/distro/common/man/man1/knife-environment.1 +2 -12
  36. data/distro/common/man/man1/knife-exec.1 +1 -1
  37. data/distro/common/man/man1/knife-index.1 +1 -1
  38. data/distro/common/man/man1/knife-node.1 +1 -1
  39. data/distro/common/man/man1/knife-role.1 +1 -1
  40. data/distro/common/man/man1/knife-search.1 +1 -1
  41. data/distro/common/man/man1/knife-ssh.1 +1 -1
  42. data/distro/common/man/man1/knife-status.1 +1 -1
  43. data/distro/common/man/man1/knife-tag.1 +1 -1
  44. data/distro/common/man/man1/knife.1 +1 -1
  45. data/distro/common/man/man8/chef-client.8 +1 -1
  46. data/distro/common/man/man8/chef-expander.8 +1 -1
  47. data/distro/common/man/man8/chef-expanderctl.8 +1 -1
  48. data/distro/common/man/man8/chef-server-webui.8 +1 -1
  49. data/distro/common/man/man8/chef-server.8 +1 -1
  50. data/distro/common/man/man8/chef-solo.8 +4 -36
  51. data/distro/common/man/man8/chef-solr.8 +1 -1
  52. data/distro/debian/etc/init.d/chef-client +4 -2
  53. data/distro/windows/service_manager.rb +2 -146
  54. data/lib/chef.rb +1 -1
  55. data/lib/chef/application.rb +5 -12
  56. data/lib/chef/application/apply.rb +2 -0
  57. data/lib/chef/application/client.rb +12 -12
  58. data/lib/chef/application/knife.rb +2 -2
  59. data/lib/chef/application/solo.rb +4 -5
  60. data/lib/chef/application/windows_service.rb +113 -56
  61. data/lib/chef/application/windows_service_manager.rb +179 -0
  62. data/lib/chef/chef_fs.rb +2 -4
  63. data/lib/chef/chef_fs/chef_fs_data_store.rb +371 -0
  64. data/lib/chef/chef_fs/command_line.rb +145 -93
  65. data/lib/chef/chef_fs/config.rb +205 -0
  66. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -0
  67. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +38 -0
  68. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +29 -0
  69. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -0
  70. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +56 -0
  71. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +128 -0
  72. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -0
  73. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +51 -0
  74. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -0
  75. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -0
  76. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +27 -0
  77. data/lib/chef/chef_fs/file_system.rb +195 -127
  78. data/lib/chef/chef_fs/file_system/acl_dir.rb +64 -0
  79. data/lib/chef/chef_fs/file_system/acl_entry.rb +58 -0
  80. data/lib/chef/chef_fs/file_system/acls_dir.rb +68 -0
  81. data/lib/chef/chef_fs/file_system/already_exists_error.rb +31 -0
  82. data/lib/chef/chef_fs/file_system/base_fs_object.rb +98 -39
  83. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +85 -0
  84. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +71 -0
  85. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +55 -0
  86. data/lib/chef/chef_fs/file_system/chef_repository_file_system_data_bags_dir.rb +36 -0
  87. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +14 -63
  88. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +93 -3
  89. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +35 -9
  90. data/lib/chef/chef_fs/file_system/cookbook_dir.rb +67 -32
  91. data/lib/chef/chef_fs/file_system/cookbook_file.rb +13 -6
  92. data/lib/chef/chef_fs/file_system/cookbook_frozen_error.rb +31 -0
  93. data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +41 -0
  94. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +102 -21
  95. data/lib/chef/chef_fs/file_system/data_bag_dir.rb +12 -21
  96. data/lib/chef/chef_fs/file_system/data_bags_dir.rb +14 -8
  97. data/lib/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +36 -0
  98. data/lib/chef/chef_fs/file_system/environments_dir.rb +60 -0
  99. data/lib/chef/chef_fs/file_system/file_system_entry.rb +8 -8
  100. data/lib/chef/chef_fs/file_system/file_system_error.rb +3 -1
  101. data/lib/chef/chef_fs/file_system/memory_dir.rb +52 -0
  102. data/lib/chef/chef_fs/file_system/memory_file.rb +17 -0
  103. data/lib/chef/chef_fs/file_system/memory_root.rb +21 -0
  104. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +48 -0
  105. data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +2 -2
  106. data/lib/chef/chef_fs/file_system/nodes_dir.rb +17 -9
  107. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
  108. data/lib/chef/chef_fs/file_system/not_found_error.rb +2 -2
  109. data/lib/chef/chef_fs/file_system/operation_failed_error.rb +34 -0
  110. data/lib/chef/chef_fs/file_system/operation_not_allowed_error.rb +48 -0
  111. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +42 -13
  112. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +81 -27
  113. data/lib/chef/chef_fs/knife.rb +68 -29
  114. data/lib/chef/chef_fs/parallelizer.rb +129 -0
  115. data/lib/chef/chef_fs/path_utils.rb +29 -3
  116. data/lib/chef/chef_fs/raw_request.rb +79 -0
  117. data/lib/chef/client.rb +46 -20
  118. data/lib/chef/config.rb +59 -61
  119. data/lib/chef/cookbook/chefignore.rb +2 -1
  120. data/lib/chef/cookbook/synchronizer.rb +8 -6
  121. data/lib/chef/cookbook/syntax_check.rb +17 -2
  122. data/lib/chef/cookbook_uploader.rb +10 -1
  123. data/lib/chef/cookbook_version.rb +0 -109
  124. data/lib/chef/data_bag.rb +15 -6
  125. data/lib/chef/deprecation/mixin/template.rb +49 -0
  126. data/lib/chef/deprecation/provider/cookbook_file.rb +55 -0
  127. data/lib/chef/deprecation/provider/file.rb +197 -0
  128. data/lib/chef/deprecation/provider/remote_file.rb +86 -0
  129. data/lib/chef/deprecation/provider/template.rb +63 -0
  130. data/lib/chef/deprecation/warnings.rb +38 -0
  131. data/lib/chef/encrypted_data_bag_item.rb +153 -61
  132. data/lib/chef/environment.rb +34 -3
  133. data/lib/chef/event_dispatch/base.rb +3 -0
  134. data/lib/chef/exceptions.rb +27 -2
  135. data/lib/chef/file_access_control/unix.rb +64 -7
  136. data/lib/chef/file_access_control/windows.rb +22 -11
  137. data/lib/chef/file_content_management/content_base.rb +56 -0
  138. data/lib/chef/file_content_management/deploy.rb +38 -0
  139. data/lib/chef/file_content_management/deploy/cp.rb +48 -0
  140. data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -0
  141. data/lib/chef/file_content_management/deploy/mv_windows.rb +95 -0
  142. data/lib/chef/file_content_management/tempfile.rb +61 -0
  143. data/lib/chef/formatters/doc.rb +1 -1
  144. data/lib/chef/formatters/error_descriptor.rb +5 -4
  145. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +23 -3
  146. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +4 -0
  147. data/lib/chef/json_compat.rb +3 -0
  148. data/lib/chef/knife.rb +12 -3
  149. data/lib/chef/knife/bootstrap.rb +46 -2
  150. data/lib/chef/knife/bootstrap/archlinux-gems.erb +3 -3
  151. data/lib/chef/knife/bootstrap/centos5-gems.erb +3 -3
  152. data/lib/chef/knife/bootstrap/chef-full.erb +4 -4
  153. data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -3
  154. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +3 -3
  155. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +3 -3
  156. data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +3 -3
  157. data/lib/chef/knife/client_show.rb +2 -5
  158. data/lib/chef/knife/configure.rb +3 -3
  159. data/lib/chef/knife/cookbook_create.rb +6 -5
  160. data/lib/chef/knife/cookbook_download.rb +13 -5
  161. data/lib/chef/knife/cookbook_site_share.rb +1 -0
  162. data/lib/chef/knife/cookbook_test.rb +1 -0
  163. data/lib/chef/knife/cookbook_upload.rb +4 -9
  164. data/lib/chef/knife/core/bootstrap_context.rb +10 -4
  165. data/lib/chef/knife/core/generic_presenter.rb +16 -0
  166. data/lib/chef/knife/core/node_editor.rb +1 -1
  167. data/lib/chef/knife/core/subcommand_loader.rb +43 -12
  168. data/lib/chef/knife/core/ui.rb +19 -4
  169. data/lib/chef/knife/delete.rb +76 -9
  170. data/lib/chef/knife/deps.rb +139 -0
  171. data/lib/chef/knife/diff.rb +22 -5
  172. data/lib/chef/knife/download.rb +16 -3
  173. data/lib/chef/knife/edit.rb +76 -0
  174. data/lib/chef/knife/environment_show.rb +2 -7
  175. data/lib/chef/knife/list.rb +91 -47
  176. data/lib/chef/knife/node_run_list_set.rb +66 -0
  177. data/lib/chef/knife/node_show.rb +1 -7
  178. data/lib/chef/knife/raw.rb +20 -64
  179. data/lib/chef/knife/role_show.rb +2 -4
  180. data/lib/chef/knife/search.rb +5 -6
  181. data/lib/chef/knife/show.rb +34 -11
  182. data/lib/chef/knife/ssh.rb +8 -0
  183. data/lib/chef/knife/upload.rb +23 -4
  184. data/lib/chef/knife/user_show.rb +2 -5
  185. data/lib/chef/knife/xargs.rb +265 -0
  186. data/lib/chef/log.rb +2 -2
  187. data/lib/chef/mixin/file_class.rb +0 -9
  188. data/lib/chef/mixin/language_include_recipe.rb +1 -1
  189. data/lib/chef/mixin/params_validate.rb +19 -9
  190. data/lib/chef/mixin/template.rb +126 -36
  191. data/lib/chef/mixin/windows_architecture_helper.rb +91 -0
  192. data/lib/chef/monkey_patches/file.rb +26 -0
  193. data/lib/chef/monkey_patches/net-ssh-multi.rb +140 -0
  194. data/lib/chef/monkey_patches/securerandom.rb +44 -0
  195. data/lib/chef/monologger.rb +93 -0
  196. data/lib/chef/node.rb +4 -0
  197. data/lib/chef/platform.rb +4 -490
  198. data/lib/chef/platform/provider_mapping.rb +529 -0
  199. data/lib/chef/{monkey_patches/dir.rb → platform/query_helpers.rb} +25 -19
  200. data/lib/chef/provider.rb +12 -9
  201. data/lib/chef/provider/batch.rb +35 -0
  202. data/lib/chef/provider/cookbook_file.rb +9 -78
  203. data/lib/chef/provider/cookbook_file/content.rb +49 -0
  204. data/lib/chef/provider/deploy.rb +24 -20
  205. data/lib/chef/provider/deploy/revision.rb +27 -0
  206. data/lib/chef/provider/directory.rb +19 -22
  207. data/lib/chef/provider/execute.rb +22 -5
  208. data/lib/chef/provider/file.rb +299 -217
  209. data/lib/chef/provider/file/content.rb +39 -0
  210. data/lib/chef/provider/git.rb +76 -43
  211. data/lib/chef/provider/group/usermod.rb +2 -2
  212. data/lib/chef/provider/ifconfig.rb +25 -35
  213. data/lib/chef/provider/ifconfig/debian.rb +71 -0
  214. data/lib/chef/provider/ifconfig/redhat.rb +47 -0
  215. data/lib/chef/provider/link.rb +10 -3
  216. data/lib/chef/provider/mount.rb +1 -1
  217. data/lib/chef/provider/mount/mount.rb +8 -3
  218. data/lib/chef/provider/mount/windows.rb +4 -1
  219. data/lib/chef/provider/package/portage.rb +9 -4
  220. data/lib/chef/provider/package/rubygems.rb +45 -10
  221. data/lib/chef/provider/package/smartos.rb +47 -36
  222. data/lib/chef/provider/package/yum.rb +19 -12
  223. data/lib/chef/provider/package/zypper.rb +45 -55
  224. data/lib/chef/provider/powershell_script.rb +77 -0
  225. data/lib/chef/provider/remote_directory.rb +5 -6
  226. data/lib/chef/provider/remote_file.rb +12 -108
  227. data/lib/chef/provider/remote_file/cache_control_data.rb +165 -0
  228. data/lib/chef/provider/remote_file/content.rb +75 -0
  229. data/lib/chef/provider/remote_file/fetcher.rb +43 -0
  230. data/lib/chef/provider/remote_file/ftp.rb +183 -0
  231. data/lib/chef/provider/remote_file/http.rb +124 -0
  232. data/lib/chef/provider/remote_file/local_file.rb +47 -0
  233. data/lib/chef/provider/route.rb +6 -2
  234. data/lib/chef/provider/script.rb +14 -2
  235. data/lib/chef/provider/service/macosx.rb +16 -10
  236. data/lib/chef/provider/service/solaris.rb +6 -5
  237. data/lib/chef/provider/template.rb +16 -78
  238. data/lib/chef/provider/template/content.rb +61 -0
  239. data/lib/chef/provider/user/solaris.rb +90 -0
  240. data/lib/chef/provider/user/useradd.rb +76 -63
  241. data/lib/chef/provider/windows_script.rb +73 -0
  242. data/lib/chef/providers.rb +16 -0
  243. data/lib/chef/resource.rb +23 -2
  244. data/lib/chef/resource/batch.rb +31 -0
  245. data/lib/chef/resource/conditional.rb +4 -0
  246. data/lib/chef/resource/conditional_action_not_nothing.rb +48 -0
  247. data/lib/chef/resource/file.rb +31 -3
  248. data/lib/chef/resource/link.rb +17 -0
  249. data/lib/chef/resource/lwrp_base.rb +1 -1
  250. data/lib/chef/resource/mount.rb +29 -2
  251. data/lib/chef/resource/powershell_script.rb +31 -0
  252. data/lib/chef/resource/remote_file.rb +47 -1
  253. data/lib/chef/resource/route.rb +1 -1
  254. data/lib/chef/resource/template.rb +145 -0
  255. data/lib/chef/resource/windows_script.rb +62 -0
  256. data/lib/chef/resource_collection.rb +45 -11
  257. data/lib/chef/resource_reporter.rb +81 -52
  258. data/lib/chef/resources.rb +2 -0
  259. data/lib/chef/rest.rb +13 -4
  260. data/lib/chef/rest/rest_request.rb +5 -1
  261. data/lib/chef/run_context/cookbook_compiler.rb +3 -3
  262. data/lib/chef/run_list/run_list_expansion.rb +1 -1
  263. data/lib/chef/run_lock.rb +7 -1
  264. data/lib/chef/runner.rb +0 -1
  265. data/lib/chef/scan_access_control.rb +6 -1
  266. data/lib/chef/search/query.rb +2 -2
  267. data/lib/chef/shell/shell_session.rb +2 -2
  268. data/lib/chef/util/backup.rb +84 -0
  269. data/lib/chef/util/diff.rb +145 -0
  270. data/lib/chef/util/file_edit.rb +1 -1
  271. data/lib/chef/util/selinux.rb +100 -0
  272. data/lib/chef/util/windows/net_user.rb +14 -1
  273. data/lib/chef/util/windows/volume.rb +2 -2
  274. data/lib/chef/version.rb +1 -1
  275. data/lib/chef/version/platform.rb +42 -0
  276. data/lib/chef/version_class.rb +1 -1
  277. data/lib/chef/version_constraint.rb +6 -5
  278. data/lib/chef/version_constraint/platform.rb +26 -0
  279. data/lib/chef/win32/api/file.rb +8 -2
  280. data/lib/chef/win32/version.rb +25 -8
  281. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -0
  282. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -0
  283. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -0
  284. data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -0
  285. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -0
  286. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -0
  287. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -0
  288. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -0
  289. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -0
  290. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -0
  291. data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -0
  292. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -0
  293. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -0
  294. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -0
  295. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -0
  296. data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
  297. data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
  298. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -0
  299. data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
  300. data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
  301. data/spec/data/apt/var/www/apt/conf/distributions +7 -0
  302. data/spec/data/apt/var/www/apt/conf/incoming +4 -0
  303. data/spec/data/apt/var/www/apt/conf/pulls +3 -0
  304. data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
  305. data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
  306. data/spec/data/apt/var/www/apt/db/packages.db +0 -0
  307. data/spec/data/apt/var/www/apt/db/references.db +0 -0
  308. data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
  309. data/spec/data/apt/var/www/apt/db/version +4 -0
  310. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -0
  311. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -0
  312. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
  313. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -0
  314. data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
  315. data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
  316. data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
  317. data/spec/data/bootstrap/encrypted_data_bag_secret +1 -0
  318. data/spec/data/bootstrap/secret.erb +9 -0
  319. data/spec/data/cookbooks/ignorken/recipes/default.rb +1 -0
  320. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +2 -0
  321. data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -0
  322. data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +1 -0
  323. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -0
  324. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -0
  325. data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +4 -0
  326. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -0
  327. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -0
  328. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -0
  329. data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +4 -0
  330. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -0
  331. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -0
  332. data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -0
  333. data/spec/data/git_bundles/example-repo.gitbundle +0 -0
  334. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  335. data/spec/data/knife_subcommand/test_yourself.rb +8 -0
  336. data/spec/data/null_config.rb +1 -0
  337. data/spec/data/partial_one.erb +1 -1
  338. data/spec/data/remote_file/nyan_cat.png.gz +0 -0
  339. data/spec/functional/file_content_management/deploy_strategies_spec.rb +238 -0
  340. data/spec/functional/knife/exec_spec.rb +2 -2
  341. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +101 -0
  342. data/spec/functional/resource/batch_spec.rb +64 -0
  343. data/spec/functional/resource/cookbook_file_spec.rb +2 -3
  344. data/spec/functional/resource/deploy_revision_spec.rb +180 -0
  345. data/spec/functional/resource/directory_spec.rb +2 -2
  346. data/spec/functional/resource/file_spec.rb +17 -1
  347. data/spec/functional/resource/git_spec.rb +259 -0
  348. data/spec/functional/resource/link_spec.rb +422 -388
  349. data/spec/functional/resource/package_spec.rb +297 -0
  350. data/spec/functional/resource/powershell_spec.rb +188 -0
  351. data/spec/functional/resource/registry_spec.rb +8 -4
  352. data/spec/functional/resource/remote_directory_spec.rb +2 -2
  353. data/spec/functional/resource/remote_file_spec.rb +97 -29
  354. data/spec/functional/resource/template_spec.rb +173 -17
  355. data/spec/functional/resource/user_spec.rb +547 -0
  356. data/spec/functional/run_lock_spec.rb +5 -0
  357. data/spec/functional/shell_spec.rb +2 -1
  358. data/spec/functional/win32/service_manager_spec.rb +269 -0
  359. data/spec/functional/win32/versions_spec.rb +78 -0
  360. data/spec/integration/knife/chef_repo_path_spec.rb +805 -0
  361. data/spec/integration/knife/chef_repository_file_system_spec.rb +276 -0
  362. data/spec/integration/knife/chefignore_spec.rb +271 -0
  363. data/spec/integration/knife/delete_spec.rb +944 -0
  364. data/spec/integration/knife/deps_spec.rb +648 -0
  365. data/spec/integration/knife/diff_spec.rb +536 -0
  366. data/spec/integration/knife/download_spec.rb +962 -0
  367. data/spec/integration/knife/list_spec.rb +633 -0
  368. data/spec/integration/knife/raw_spec.rb +166 -0
  369. data/spec/integration/knife/redirection_spec.rb +57 -0
  370. data/spec/integration/knife/show_spec.rb +158 -0
  371. data/spec/integration/knife/upload_spec.rb +1060 -0
  372. data/spec/integration/solo/solo_spec.rb +41 -0
  373. data/spec/spec_helper.rb +55 -1
  374. data/spec/support/chef_helpers.rb +32 -0
  375. data/spec/support/platform_helpers.rb +40 -0
  376. data/spec/support/platforms/win32/spec_service.rb +59 -0
  377. data/spec/support/shared/functional/directory_resource.rb +43 -16
  378. data/spec/support/shared/functional/file_resource.rb +661 -20
  379. data/spec/support/shared/functional/securable_resource.rb +109 -8
  380. data/spec/support/shared/functional/securable_resource_with_reporting.rb +39 -31
  381. data/spec/support/shared/integration/integration_helper.rb +166 -0
  382. data/spec/support/shared/integration/knife_support.rb +171 -0
  383. data/spec/support/shared/unit/execute_resource.rb +125 -0
  384. data/spec/support/shared/unit/file_system_support.rb +8 -48
  385. data/spec/support/shared/unit/provider/file.rb +609 -0
  386. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +407 -0
  387. data/spec/support/shared/unit/script_resource.rb +52 -0
  388. data/spec/support/shared/unit/windows_script_resource.rb +48 -0
  389. data/spec/tiny_server.rb +13 -11
  390. data/spec/unit/application/client_spec.rb +39 -1
  391. data/spec/unit/application/knife_spec.rb +12 -0
  392. data/spec/unit/application/solo_spec.rb +1 -1
  393. data/spec/unit/application_spec.rb +57 -2
  394. data/spec/unit/chef_fs/diff_spec.rb +30 -31
  395. data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
  396. data/spec/unit/chef_fs/file_system_spec.rb +2 -3
  397. data/spec/unit/client_spec.rb +20 -1
  398. data/spec/unit/config_spec.rb +70 -52
  399. data/spec/unit/cookbook/synchronizer_spec.rb +49 -1
  400. data/spec/unit/cookbook/syntax_check_spec.rb +28 -3
  401. data/spec/unit/cookbook_loader_spec.rb +3 -2
  402. data/spec/unit/daemon_spec.rb +7 -7
  403. data/spec/unit/data_bag_spec.rb +7 -0
  404. data/spec/unit/deprecation_spec.rb +86 -0
  405. data/spec/unit/encrypted_data_bag_item_spec.rb +183 -88
  406. data/spec/unit/environment_spec.rb +98 -0
  407. data/spec/unit/exceptions_spec.rb +6 -1
  408. data/spec/unit/file_access_control_spec.rb +21 -1
  409. data/spec/unit/file_content_management/deploy/cp_spec.rb +46 -0
  410. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +103 -0
  411. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +179 -0
  412. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +38 -2
  413. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -2
  414. data/spec/unit/knife/bootstrap_spec.rb +128 -29
  415. data/spec/unit/knife/configure_spec.rb +42 -26
  416. data/spec/unit/knife/cookbook_download_spec.rb +24 -3
  417. data/spec/unit/knife/cookbook_upload_spec.rb +8 -4
  418. data/spec/unit/knife/core/bootstrap_context_spec.rb +78 -61
  419. data/spec/unit/knife/core/subcommand_loader_spec.rb +20 -0
  420. data/spec/unit/knife/core/ui_spec.rb +41 -0
  421. data/spec/unit/knife/node_run_list_set_spec.rb +140 -0
  422. data/spec/unit/knife_spec.rb +21 -0
  423. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +1 -0
  424. data/spec/unit/mixin/params_validate_spec.rb +35 -0
  425. data/spec/unit/mixin/template_spec.rb +69 -57
  426. data/spec/unit/mixin/windows_architecture_helper_spec.rb +83 -0
  427. data/spec/unit/node_spec.rb +7 -0
  428. data/spec/unit/platform_spec.rb +15 -1
  429. data/spec/unit/provider/cookbook_file/content_spec.rb +40 -0
  430. data/spec/unit/provider/cookbook_file_spec.rb +26 -183
  431. data/spec/unit/provider/cron/solaris_spec.rb +1 -1
  432. data/spec/unit/provider/deploy/revision_spec.rb +19 -11
  433. data/spec/unit/provider/deploy_spec.rb +2 -2
  434. data/spec/unit/provider/directory_spec.rb +23 -23
  435. data/spec/unit/provider/execute_spec.rb +27 -1
  436. data/spec/unit/provider/file/content_spec.rb +101 -0
  437. data/spec/unit/provider/file_spec.rb +25 -484
  438. data/spec/unit/provider/git_spec.rb +224 -28
  439. data/spec/unit/provider/group/usermod_spec.rb +3 -1
  440. data/spec/unit/provider/ifconfig/debian_spec.rb +89 -0
  441. data/spec/unit/provider/ifconfig/redhat_spec.rb +71 -0
  442. data/spec/unit/provider/ifconfig_spec.rb +0 -33
  443. data/spec/unit/provider/mount/mount_spec.rb +33 -2
  444. data/spec/unit/provider/mount/windows_spec.rb +4 -1
  445. data/spec/unit/provider/mount_spec.rb +16 -6
  446. data/spec/unit/provider/package/portage_spec.rb +44 -0
  447. data/spec/unit/provider/package/rubygems_spec.rb +44 -1
  448. data/spec/unit/provider/package/smartos_spec.rb +3 -2
  449. data/spec/unit/provider/package/yum_spec.rb +36 -39
  450. data/spec/unit/provider/package/zypper_spec.rb +84 -22
  451. data/spec/unit/provider/package_spec.rb +0 -4
  452. data/spec/unit/provider/powershell_spec.rb +38 -0
  453. data/spec/unit/provider/remote_directory_spec.rb +0 -4
  454. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +211 -0
  455. data/spec/unit/provider/remote_file/content_spec.rb +230 -0
  456. data/spec/unit/provider/remote_file/fetcher_spec.rb +75 -0
  457. data/spec/unit/provider/remote_file/ftp_spec.rb +224 -0
  458. data/spec/unit/provider/remote_file/http_spec.rb +319 -0
  459. data/spec/unit/provider/remote_file/local_file_spec.rb +60 -0
  460. data/spec/unit/provider/remote_file_spec.rb +33 -295
  461. data/spec/unit/provider/route_spec.rb +25 -9
  462. data/spec/unit/provider/service/macosx_spec.rb +176 -152
  463. data/spec/unit/provider/service/solaris_smf_service_spec.rb +21 -18
  464. data/spec/unit/provider/service/systemd_service_spec.rb +2 -2
  465. data/spec/unit/provider/service/upstart_service_spec.rb +2 -2
  466. data/spec/unit/provider/service_spec.rb +3 -3
  467. data/spec/unit/provider/template/content_spec.rb +78 -0
  468. data/spec/unit/provider/template_spec.rb +52 -184
  469. data/spec/unit/provider/user/solaris_spec.rb +80 -0
  470. data/spec/unit/provider/user/useradd_spec.rb +12 -358
  471. data/spec/unit/resource/batch_spec.rb +48 -0
  472. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -0
  473. data/spec/unit/resource/execute_spec.rb +3 -101
  474. data/spec/unit/resource/file_spec.rb +0 -5
  475. data/spec/unit/resource/group_spec.rb +9 -0
  476. data/spec/unit/resource/ifconfig_spec.rb +60 -1
  477. data/spec/unit/resource/link_spec.rb +1 -0
  478. data/spec/unit/resource/mount_spec.rb +37 -0
  479. data/spec/unit/resource/powershell_spec.rb +48 -0
  480. data/spec/unit/resource/remote_file_spec.rb +44 -4
  481. data/spec/unit/resource/route_spec.rb +1 -1
  482. data/spec/unit/resource/script_spec.rb +13 -36
  483. data/spec/unit/resource/template_spec.rb +111 -8
  484. data/spec/unit/resource/user_spec.rb +7 -0
  485. data/spec/unit/resource_collection_spec.rb +61 -32
  486. data/spec/unit/resource_reporter_spec.rb +115 -102
  487. data/spec/unit/resource_spec.rb +170 -1
  488. data/spec/unit/rest/auth_credentials_spec.rb +2 -2
  489. data/spec/unit/rest_spec.rb +6 -2
  490. data/spec/unit/run_context/cookbook_compiler_spec.rb +9 -0
  491. data/spec/unit/runner_spec.rb +1 -1
  492. data/spec/unit/scan_access_control_spec.rb +4 -2
  493. data/spec/unit/shell/shell_session_spec.rb +15 -2
  494. data/spec/unit/util/backup_spec.rb +149 -0
  495. data/spec/unit/util/diff_spec.rb +596 -0
  496. data/spec/unit/util/selinux_spec.rb +172 -0
  497. data/spec/unit/version/platform_spec.rb +61 -0
  498. data/spec/unit/version_constraint/platform_spec.rb +46 -0
  499. data/spec/unit/version_constraint_spec.rb +5 -0
  500. metadata +233 -10
  501. data/lib/chef/chef_fs/file_system/data_bag_item.rb +0 -59
  502. data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +0 -237
  503. data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +0 -568
  504. data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +0 -220
@@ -0,0 +1,40 @@
1
+ #
2
+ # Author:: Lamont Granquist (<lamont@opscode.com>)
3
+ # Copyright:: Copyright (c) 2013 Opscode, Inc.
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::Provider::CookbookFile::Content do
22
+
23
+ let(:new_resource) { mock('Chef::Resource::CookbookFile (new)', :cookbook_name => 'apache2', :cookbook => 'apache2') }
24
+ let(:content) do
25
+ @run_context = mock('Chef::RunContext')
26
+ @current_resource = mock('Chef::Resource::CookbookFile (current)')
27
+ Chef::Provider::CookbookFile::Content.new(new_resource, @current_resource, @run_context)
28
+ end
29
+
30
+ it "prefers the explicit cookbook name on the resource to the implicit one" do
31
+ new_resource.stub!(:cookbook).and_return('nginx')
32
+ content.send(:resource_cookbook).should == 'nginx'
33
+ end
34
+
35
+ it "falls back to the implicit cookbook name on the resource" do
36
+ content.send(:resource_cookbook).should == 'apache2'
37
+ end
38
+
39
+ end
40
+
@@ -1,6 +1,7 @@
1
1
  #
2
2
  # Author:: Daniel DeLeo (<dan@opscode.com>)
3
- # Copyright:: Copyright (c) 2010 Opscode, Inc.
3
+ # Author:: Lamont Granquist (<lamont@opscode.com>)
4
+ # Copyright:: Copyright (c) 2009-2013 Opscode, Inc.
4
5
  # License:: Apache License, Version 2.0
5
6
  #
6
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,196 +20,38 @@
19
20
  require 'spec_helper'
20
21
  require 'ostruct'
21
22
 
22
- describe Chef::Provider::CookbookFile do
23
- before do
24
- Chef::FileAccessControl.any_instance.stub(:set_all)
25
- Chef::FileAccessControl.any_instance.stub(:modified?).and_return(true)
26
- @cookbook_repo = File.expand_path(File.join(CHEF_SPEC_DATA, "cookbooks"))
27
- Chef::Cookbook::FileVendor.on_create { |manifest| Chef::Cookbook::FileSystemFileVendor.new(manifest, @cookbook_repo) }
28
-
29
- @node = Chef::Node.new
30
- @events = Chef::EventDispatch::Dispatcher.new
31
- cl = Chef::CookbookLoader.new(@cookbook_repo)
32
- cl.load_cookbooks
33
- @cookbook_collection = Chef::CookbookCollection.new(cl)
34
- @run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
35
-
36
- @new_resource = Chef::Resource::CookbookFile.new('apache2_module_conf_generate.pl', @run_context)
37
- @new_resource.cookbook_name = 'apache2'
38
- @provider = Chef::Provider::CookbookFile.new(@new_resource, @run_context)
39
-
40
- @file_content=<<-EXPECTED
41
- # apache2_module_conf_generate.pl
42
- # this is just here for show.
43
- EXPECTED
44
-
45
- end
46
-
47
- it "prefers the explicit cookbook name on the resource to the implicit one" do
48
- @new_resource.cookbook('nginx')
49
- @provider.resource_cookbook.should == 'nginx'
50
- end
23
+ require 'support/shared/unit/provider/file'
51
24
 
52
- it "falls back to the implicit cookbook name on the resource" do
53
- @provider.resource_cookbook.should == 'apache2'
54
- end
55
-
56
- describe "when loading the current file state" do
57
-
58
- it "converts windows-y filenames to unix-y ones" do
59
- @new_resource.path('windows\stuff')
60
- @provider.load_current_resource
61
- @new_resource.path.should == 'windows/stuff'
62
- end
63
-
64
- it "sets the current resources path to the same as the new resource" do
65
- @new_resource.path('/tmp/file')
66
- @provider.load_current_resource
67
- @provider.current_resource.path.should == '/tmp/file'
68
- end
69
- end
25
+ describe Chef::Provider::CookbookFile do
26
+ let(:node) { double('Chef::Node') }
27
+ let(:events) { double('Chef::Events').as_null_object } # mock all the methods
28
+ let(:run_context) { double('Chef::RunContext', :node => node, :events => events) }
29
+ let(:enclosing_directory) {
30
+ canonicalize_path(File.expand_path(File.join(CHEF_SPEC_DATA, "templates")))
31
+ }
32
+ let(:resource_path) {
33
+ canonicalize_path(File.expand_path(File.join(enclosing_directory, "seattle.txt")))
34
+ }
70
35
 
71
- describe "when the enclosing directory of the target file location doesn't exist" do
72
- before do
73
- @new_resource.path("/tmp/no/such/intermediate/path/file.txt")
74
- end
36
+ # Subject
75
37
 
76
- it "raises a specific error alerting the user to the problem" do
77
- lambda {@provider.run_action(:create)}.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
78
- end
38
+ let(:provider) do
39
+ provider = described_class.new(resource, run_context)
40
+ provider.stub!(:content).and_return(content)
41
+ provider
79
42
  end
80
- describe "when the file doesn't yet exist" do
81
- before do
82
- @install_to = Dir.tmpdir + '/apache2_modconf.pl'
83
-
84
- @current_resource = @new_resource.dup
85
- @provider.current_resource = @current_resource
86
- end
87
-
88
- after { ::File.exist?(File.dirname(@install_to)) && FileUtils.rm_rf(@install_to) }
89
-
90
- it "loads the current file state" do
91
- @provider.load_current_resource
92
- @provider.current_resource.checksum.should be_nil
93
- end
94
-
95
- it "looks up a file from the cookbook cache" do
96
- expected = CHEF_SPEC_DATA + "/cookbooks/apache2/files/default/apache2_module_conf_generate.pl"
97
- @provider.file_cache_location.should == expected
98
- end
99
-
100
- it "installs the file from the cookbook cache" do
101
- @new_resource.path(@install_to)
102
- @provider.should_receive(:backup_new_resource)
103
- @provider.stub!(:update_new_file_state)
104
- @provider.run_action(:create)
105
- actual = IO.read(@install_to)
106
- actual.should == @file_content
107
- end
108
-
109
- it "installs the file for create_if_missing --> from Provider::File" do
110
- @new_resource.path(@install_to)
111
- @provider.should_receive(:backup_new_resource)
112
- @provider.stub!(:update_new_file_state)
113
- @provider.run_action(:create_if_missing)
114
- actual = IO.read(@install_to)
115
- actual.should == @file_content
116
- end
117
-
118
- it "marks the resource as updated by the last action --> being tested in the converge framework" do
119
- @new_resource.path(@install_to)
120
- @provider.stub!(:backup_new_resource)
121
- @provider.stub!(:set_file_access_controls)
122
- @provider.stub!(:update_new_file_state)
123
- @provider.run_action(:create)
124
- @new_resource.should be_updated
125
- @new_resource.should be_updated_by_last_action
126
- end
127
43
 
44
+ let(:resource) do
45
+ resource = Chef::Resource::CookbookFile.new("seattle", @run_context)
46
+ resource.path(resource_path)
47
+ resource.cookbook_name = 'apache2'
48
+ resource
128
49
  end
129
50
 
130
- describe "when the file exists but has incorrect content" do
131
- before do
132
- @tempfile = Tempfile.open('cookbook_file_spec')
133
- @new_resource.path(@target_file = @tempfile.path)
134
- @tempfile.puts "the wrong content"
135
- @tempfile.close
136
- @current_resource = @new_resource.dup
137
- @provider.current_resource = @current_resource
138
- end
139
-
140
- it "stages the cookbook to a temporary file" do
141
- # prevents file backups where we might not have write access
142
- @provider.should_receive(:backup_new_resource)
143
- @new_resource.path(@install_to)
144
- @provider.should_receive(:deploy_tempfile)
145
- @provider.run_action(:create)
146
- end
147
-
148
- it "overwrites it when the create action is called" do
149
- @provider.should_receive(:backup_new_resource)
150
- @provider.run_action(:create)
151
- actual = IO.read(@target_file)
152
- actual.should == @file_content
153
- end
154
-
155
- it "marks the resource as updated by the last action" do
156
- @provider.should_receive(:backup_new_resource)
157
- @provider.run_action(:create)
158
- @new_resource.should be_updated
159
- @new_resource.should be_updated_by_last_action
160
- end
161
-
162
- it "doesn't overwrite when the create if missing action is called" do
163
- @provider.should_not_receive(:set_file_access_controls)
164
- @provider.run_action(:create_if_missing)
165
- actual = IO.read(@target_file)
166
- actual.should == "the wrong content\n"
167
- end
168
-
169
- it "doesn't mark the resource as updated by the action for create_if_missing" do
170
- @provider.run_action(:create_if_missing)
171
- @new_resource.should_not be_updated
172
- @new_resource.should_not be_updated_by_last_action
173
- end
174
-
175
- after { @tempfile && @tempfile.close! }
51
+ let(:content) do
52
+ content = mock('Chef::Provider::CookbookFile::Content')
176
53
  end
177
54
 
178
- describe "when the file has the correct content" do
179
- before do
180
- Chef::FileAccessControl.any_instance.stub(:modified?).and_return(false)
181
- @tempfile = Tempfile.open('cookbook_file_spec')
182
- # CHEF-2991: We handle CRLF very poorly and we don't know what line endings
183
- # our source file is going to have, so we use binary mode to preserve CRLF if needed.
184
- source_file = CHEF_SPEC_DATA + "/cookbooks/apache2/files/default/apache2_module_conf_generate.pl"
185
- @tempfile.binmode unless File.open(source_file, "rb") { |f| f.read =~ /\r/ }
186
- @new_resource.path(@target_file = @tempfile.path)
187
- @tempfile.write(@file_content)
188
- @tempfile.close
189
- @current_resource = @new_resource.dup
190
- @provider.current_resource = @current_resource
191
- end
192
-
193
- after { @tempfile && @tempfile.unlink}
55
+ it_behaves_like Chef::Provider::File
194
56
 
195
- it "checks access control but does not alter content when action is create" do
196
- @provider.should_receive(:set_all_access_controls)
197
- @provider.should_not_receive(:stage_file_to_tmpdir)
198
- @provider.run_action(:create)
199
- end
200
-
201
- it "does not mark the resource as updated by the last action" do
202
- @provider.run_action(:create)
203
- @new_resource.should_not be_updated
204
- @new_resource.should_not be_updated_by_last_action
205
- end
206
-
207
- it "does not alter content or access control when action is create if missing" do
208
- @provider.should_not_receive(:set_all_access_controls)
209
- @provider.should_not_receive(:stage_file_to_tmpdir)
210
- @provider.run_action(:create_if_missing)
211
- end
212
-
213
- end
214
57
  end
@@ -87,7 +87,7 @@ CRONTAB
87
87
  before :each do
88
88
  @status = mock("Status", :exitstatus => 0)
89
89
  @provider.stub!(:run_command).and_return(@status)
90
- @tempfile = mock("foo", :path => "/tmp/foo", :close => true, :binmode => nil)
90
+ @tempfile = mock("foo", :path => "/tmp/foo", :close => true)
91
91
  Tempfile.stub!(:new).and_return(@tempfile)
92
92
  @tempfile.should_receive(:flush)
93
93
  @tempfile.should_receive(:chmod).with(420)
@@ -51,13 +51,13 @@ describe Chef::Provider::Deploy::Revision do
51
51
  @provider.release_path.should == @expected_release_dir
52
52
  end
53
53
 
54
- it "stores the release dir in the file cache when copying the cached repo" do
54
+ it "stores the release dir in the file cache in the cleanup step" do
55
55
  FileUtils.stub!(:mkdir_p)
56
56
  FileUtils.stub!(:cp_r)
57
- @provider.copy_cached_repo
57
+ @provider.cleanup!
58
58
  @provider.stub!(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
59
59
  @provider.load_current_resource
60
- @provider.copy_cached_repo
60
+ @provider.cleanup!
61
61
  second_release = "/my/deploy/dir/releases/73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2"
62
62
 
63
63
  @provider.all_releases.should == [@expected_release_dir,second_release]
@@ -66,29 +66,37 @@ describe Chef::Provider::Deploy::Revision do
66
66
  it "removes a release from the file cache when it's used again in another release and append it to the end" do
67
67
  FileUtils.stub!(:mkdir_p)
68
68
  FileUtils.stub!(:cp_r)
69
- @provider.copy_cached_repo
69
+ @provider.cleanup!
70
70
  @provider.stub!(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
71
71
  @provider.load_current_resource
72
- @provider.copy_cached_repo
72
+ @provider.cleanup!
73
73
  second_release = "/my/deploy/dir/releases/73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2"
74
74
  @provider.all_releases.should == [@expected_release_dir,second_release]
75
- @provider.copy_cached_repo
75
+ @provider.cleanup!
76
76
 
77
77
  @provider.stub!(:release_slug).and_return("8a3195bf3efa246f743c5dfa83683201880f935c")
78
78
  @provider.load_current_resource
79
- @provider.copy_cached_repo
79
+ @provider.cleanup!
80
80
  @provider.all_releases.should == [second_release, @expected_release_dir]
81
81
  end
82
82
 
83
83
  it "removes a release from the file cache when it's deleted by :cleanup!" do
84
- %w{first second third fourth fifth latest}.each do |release_name|
85
- @provider.send(:release_created, release_name)
84
+ release_paths = %w{first second third fourth fifth}.map do |release_name|
85
+ "/my/deploy/dir/releases/#{release_name}"
86
+ end
87
+ release_paths.each do |release_path|
88
+ @provider.send(:release_created, release_path)
86
89
  end
87
- @provider.all_releases.should == %w{first second third fourth fifth latest}
90
+ @provider.all_releases.should == release_paths
88
91
 
89
92
  FileUtils.stub!(:rm_rf)
90
93
  @provider.cleanup!
91
- @provider.all_releases.should == %w{second third fourth fifth latest}
94
+
95
+ expected_release_paths = (%w{second third fourth fifth} << @resource.revision).map do |release_name|
96
+ "/my/deploy/dir/releases/#{release_name}"
97
+ end
98
+
99
+ @provider.all_releases.should == expected_release_paths
92
100
  end
93
101
 
94
102
  it "regenerates the file cache if it's not available" do
@@ -324,11 +324,11 @@ describe Chef::Provider::Deploy do
324
324
  @provider.copy_cached_repo
325
325
  end
326
326
 
327
- it "calls the internal callback :release_created when copying the cached repo" do
327
+ it "calls the internal callback :release_created when cleaning up the releases" do
328
328
  FileUtils.stub!(:mkdir_p)
329
329
  FileUtils.stub!(:cp_r)
330
330
  @provider.should_receive(:release_created)
331
- @provider.copy_cached_repo
331
+ @provider.cleanup!
332
332
  end
333
333
 
334
334
  it "chowns the whole release dir to user and group specified in the resource" do
@@ -59,7 +59,7 @@ describe Chef::Provider::Directory do
59
59
  end
60
60
 
61
61
  it "describes the access mode as a String of octal integers" do
62
- File.stub!(:exist?).and_return(true)
62
+ File.stub!(:exists?).and_return(true)
63
63
  File.should_receive(:stat).and_return(mock_stat)
64
64
  @directory.load_current_resource
65
65
  @directory.current_resource.mode.should == "0755"
@@ -67,7 +67,7 @@ describe Chef::Provider::Directory do
67
67
 
68
68
  context "when user and group are specified with UID/GID" do
69
69
  it "describes the current owner and group as UID and GID" do
70
- File.stub!(:exist?).and_return(true)
70
+ File.stub!(:exists?).and_return(true)
71
71
  File.should_receive(:stat).and_return(mock_stat)
72
72
  @directory.load_current_resource
73
73
  @directory.current_resource.path.should eql(@new_resource.path)
@@ -81,43 +81,43 @@ describe Chef::Provider::Directory do
81
81
  end
82
82
 
83
83
  # Unix only for now. While file security attribute reporting for windows is
84
- # disabled, unix and windows differ in the number of exist? calls that are
84
+ # disabled, unix and windows differ in the number of exists? calls that are
85
85
  # made by the provider.
86
86
  it "should create a new directory on create, setting updated to true", :unix_only do
87
87
  @new_resource.path "/tmp/foo"
88
88
 
89
- File.should_receive(:exist?).exactly(2).and_return(false)
89
+ File.should_receive(:exists?).at_least(:once).and_return(false)
90
90
  File.should_receive(:directory?).with("/tmp").and_return(true)
91
91
  Dir.should_receive(:mkdir).with(@new_resource.path).once.and_return(true)
92
92
 
93
- @directory.should_receive(:set_all_access_controls)
94
- @directory.stub!(:update_new_file_state)
93
+ @directory.should_receive(:do_acl_changes)
94
+ @directory.stub!(:do_selinux)
95
95
  @directory.run_action(:create)
96
96
  @directory.new_resource.should be_updated
97
97
  end
98
98
 
99
- it "should raise an exception if the parent directory does not exist and recursive is false" do
99
+ it "should raise an exception if the parent directory does not exist and recursive is false" do
100
100
  @new_resource.path "/tmp/some/dir"
101
101
  @new_resource.recursive false
102
- lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
102
+ lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
103
103
  end
104
104
 
105
105
  # Unix only for now. While file security attribute reporting for windows is
106
- # disabled, unix and windows differ in the number of exist? calls that are
106
+ # disabled, unix and windows differ in the number of exists? calls that are
107
107
  # made by the provider.
108
108
  it "should create a new directory when parent directory does not exist if recursive is true and permissions are correct", :unix_only do
109
109
  @new_resource.path "/path/to/dir"
110
110
  @new_resource.recursive true
111
- File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
111
+ File.should_receive(:exists?).with(@new_resource.path).ordered.and_return(false)
112
112
 
113
- File.should_receive(:exist?).with('/path/to').ordered.and_return(false)
114
- File.should_receive(:exist?).with('/path').ordered.and_return(true)
113
+ File.should_receive(:exists?).with('/path/to').ordered.and_return(false)
114
+ File.should_receive(:exists?).with('/path').ordered.and_return(true)
115
115
  File.should_receive(:writable?).with('/path').ordered.and_return(true)
116
- File.should_receive(:exist?).with(@new_resource.path).ordered.and_return(false)
116
+ File.should_receive(:exists?).with(@new_resource.path).ordered.and_return(false)
117
117
 
118
- FileUtils.should_receive(:mkdir_p).with(@new_resource.path).and_return(true)
119
- @directory.should_receive(:set_all_access_controls)
120
- @directory.stub!(:update_new_file_state)
118
+ FileUtils.should_receive(:mkdir_p).with(@new_resource.path).and_return(true)
119
+ @directory.should_receive(:do_acl_changes)
120
+ @directory.stub!(:do_selinux)
121
121
  @directory.run_action(:create)
122
122
  @new_resource.should be_updated
123
123
  end
@@ -131,16 +131,16 @@ describe Chef::Provider::Directory do
131
131
  end
132
132
 
133
133
  # Unix only for now. While file security attribute reporting for windows is
134
- # disabled, unix and windows differ in the number of exist? calls that are
134
+ # disabled, unix and windows differ in the number of exists? calls that are
135
135
  # made by the provider.
136
136
  it "should not create the directory if it already exists", :unix_only do
137
137
  stub_file_cstats
138
138
  @new_resource.path "/tmp/foo"
139
- File.should_receive(:directory?).twice.and_return(true)
139
+ File.should_receive(:directory?).at_least(:once).and_return(true)
140
140
  File.should_receive(:writable?).with("/tmp").and_return(true)
141
- File.should_receive(:exist?).exactly(3).and_return(true)
141
+ File.should_receive(:exists?).at_least(:once).and_return(true)
142
142
  Dir.should_not_receive(:mkdir).with(@new_resource.path)
143
- @directory.should_receive(:set_all_access_controls)
143
+ @directory.should_receive(:do_acl_changes)
144
144
  @directory.run_action(:create)
145
145
  end
146
146
 
@@ -152,14 +152,14 @@ describe Chef::Provider::Directory do
152
152
  end
153
153
 
154
154
  it "should raise an exception if it cannot delete the directory due to bad permissions" do
155
- File.stub!(:exist?).and_return(true)
155
+ File.stub!(:exists?).and_return(true)
156
156
  File.stub!(:writable?).and_return(false)
157
157
  lambda { @directory.run_action(:delete) }.should raise_error(RuntimeError)
158
158
  end
159
159
 
160
160
  it "should take no action when deleting a target directory that does not exist" do
161
161
  @new_resource.path "/an/invalid/path"
162
- File.stub!(:exist?).and_return(false)
162
+ File.stub!(:exists?).and_return(false)
163
163
  Dir.should_not_receive(:delete).with(@new_resource.path)
164
164
  @directory.run_action(:delete)
165
165
  @directory.new_resource.should_not be_updated
@@ -168,7 +168,7 @@ describe Chef::Provider::Directory do
168
168
  it "should raise an exception when deleting a directory when target directory is a file" do
169
169
  stub_file_cstats
170
170
  @new_resource.path "/an/invalid/path"
171
- File.stub!(:exist?).and_return(true)
171
+ File.stub!(:exists?).and_return(true)
172
172
  File.should_receive(:directory?).and_return(false)
173
173
  Dir.should_not_receive(:delete).with(@new_resource.path)
174
174
  lambda { @directory.run_action(:delete) }.should raise_error(RuntimeError)