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
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require 'spec_helper'
20
- require 'support/shared/unit/file_system_support'
21
20
  require 'chef/chef_fs/file_system'
22
21
  require 'chef/chef_fs/file_pattern'
23
22
 
@@ -35,7 +34,7 @@ describe Chef::ChefFS::FileSystem do
35
34
  list_should_yield_paths(fs, '/a', '/a')
36
35
  end
37
36
  it '/a/b' do
38
- list_should_yield_paths(fs, '/a/b')
37
+ list_should_yield_paths(fs, '/a/b', '/a/b')
39
38
  end
40
39
  it '/*' do
41
40
  list_should_yield_paths(fs, '/*', '/')
@@ -105,7 +104,7 @@ describe Chef::ChefFS::FileSystem do
105
104
  end
106
105
  it 'nonexistent /a/ab/blah/bjork' do
107
106
  no_blocking_calls_allowed
108
- list_should_yield_paths(fs, '/a/ab/blah/bjork')
107
+ list_should_yield_paths(fs, '/a/ab/blah/bjork', '/a/ab/blah/bjork')
109
108
  end
110
109
  end
111
110
 
@@ -232,7 +232,7 @@ shared_examples_for Chef::Client do
232
232
  @client.should_receive(:run_started)
233
233
  @client.should_receive(:run_completed_successfully)
234
234
 
235
- if(Chef::Config[:client_fork])
235
+ if(Chef::Config[:client_fork] && !windows?)
236
236
  require 'stringio'
237
237
  if(Chef::Config[:pipe_node])
238
238
  pipe_sim = StringIO.new
@@ -263,6 +263,25 @@ shared_examples_for Chef::Client do
263
263
  end
264
264
  end
265
265
 
266
+ it "should remove the run_lock on failure of #load_node" do
267
+ @run_lock = mock("Chef::RunLock", :acquire => true)
268
+ Chef::RunLock.stub!(:new).and_return(@run_lock)
269
+
270
+ @events = mock("Chef::EventDispatch::Dispatcher").as_null_object
271
+ Chef::EventDispatch::Dispatcher.stub!(:new).and_return(@events)
272
+
273
+ # @events is created on Chef::Client.new, so we need to recreate it after mocking
274
+ @client = Chef::Client.new
275
+ @client.stub!(:load_node).and_raise(Exception)
276
+ @run_lock.should_receive(:release)
277
+ if(Chef::Config[:client_fork] && !windows?)
278
+ @client.should_receive(:fork) do |&block|
279
+ block.call
280
+ end
281
+ end
282
+ lambda { @client.run }.should raise_error(Exception)
283
+ end
284
+
266
285
  describe "when notifying other objects of the status of the chef run" do
267
286
  before do
268
287
  Chef::Client.clear_notifications
@@ -1,5 +1,6 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@opscode.com>)
3
+ # Author:: Kyle Goodwin (<kgoodwin@primerevenue.com>)
3
4
  # Copyright:: Copyright (c) 2008 Opscode, Inc.
4
5
  # License:: Apache License, Version 2.0
5
6
  #
@@ -17,6 +18,7 @@
17
18
  #
18
19
 
19
20
  require 'spec_helper'
21
+ require 'chef/exceptions'
20
22
 
21
23
  describe Chef::Config do
22
24
  before(:all) do
@@ -24,42 +26,36 @@ describe Chef::Config do
24
26
  @original_env = { 'HOME' => ENV['HOME'], 'SYSTEMDRIVE' => ENV['SYSTEMDRIVE'], 'HOMEPATH' => ENV['HOMEPATH'], 'USERPROFILE' => ENV['USERPROFILE'] }
25
27
  end
26
28
 
27
- shared_examples_for "server URL" do
28
- it "should set the registration url" do
29
- Chef::Config.registration_url.should == "https://junglist.gen.nz"
29
+ describe "config attribute writer: chef_server_url" do
30
+ before do
31
+ Chef::Config.chef_server_url = "https://junglist.gen.nz"
30
32
  end
31
33
 
32
- it "should set the template url" do
33
- Chef::Config.template_url.should == "https://junglist.gen.nz"
34
+ it "sets the server url" do
35
+ Chef::Config.chef_server_url.should == "https://junglist.gen.nz"
34
36
  end
35
37
 
36
- it "should set the remotefile url" do
37
- Chef::Config.remotefile_url.should == "https://junglist.gen.nz"
38
- end
38
+ context "when the url has a leading space" do
39
+ before do
40
+ Chef::Config.chef_server_url = " https://junglist.gen.nz"
41
+ end
39
42
 
40
- it "should set the search url" do
41
- Chef::Config.search_url.should == "https://junglist.gen.nz"
42
- end
43
+ it "strips the space from the url when setting" do
44
+ Chef::Config.chef_server_url.should == "https://junglist.gen.nz"
45
+ end
43
46
 
44
- it "should set the role url" do
45
- Chef::Config.role_url.should == "https://junglist.gen.nz"
46
47
  end
47
- end
48
48
 
49
- describe "config attribute writer: chef_server_url" do
50
- before do
51
- Chef::Config.chef_server_url = "https://junglist.gen.nz"
52
- end
53
-
54
- it_behaves_like "server URL"
55
- end
49
+ context "when the url is a frozen string" do
50
+ before do
51
+ Chef::Config.chef_server_url = " https://junglist.gen.nz".freeze
52
+ end
56
53
 
57
- context "when the url has a leading space" do
58
- before do
59
- Chef::Config.chef_server_url = " https://junglist.gen.nz"
54
+ it "strips the space from the url when setting without raising an error" do
55
+ Chef::Config.chef_server_url.should == "https://junglist.gen.nz"
56
+ end
60
57
  end
61
-
62
- it_behaves_like "server URL"
58
+
63
59
  end
64
60
 
65
61
  describe "when configuring formatters" do
@@ -106,14 +102,6 @@ describe Chef::Config do
106
102
 
107
103
  end
108
104
 
109
- context "when the url is a frozen string" do
110
- before do
111
- Chef::Config.chef_server_url = " https://junglist.gen.nz".freeze
112
- end
113
-
114
- it_behaves_like "server URL"
115
- end
116
-
117
105
  describe "class method: manage_secret_key" do
118
106
  before do
119
107
  Chef::FileCache.stub!(:load).and_return(true)
@@ -131,7 +119,7 @@ describe Chef::Config do
131
119
  end
132
120
 
133
121
  it "should not generate and store a chef server cookie id" do
134
- Chef::FileCache.should_not_receive(:store).with("chef_server_cookie_id", /\w{40}/).and_return(true)
122
+ Chef::FileCache.should_not_receive(:store).with("chef_server_cookie_id", /\w{40}/)
135
123
  Chef::Config.manage_secret_key
136
124
  end
137
125
  end
@@ -165,19 +153,7 @@ describe Chef::Config do
165
153
  end
166
154
  end
167
155
 
168
- describe "class method: openid_providers=" do
169
- it "should not log an appropriate deprecation info message" do
170
- Chef::Log.should_not_receive(:info).with("DEPRECATION: openid_providers will be removed, please use authorized_openid_providers").and_return(true)
171
- Chef::Config.openid_providers = %w{opscode.com junglist.gen.nz}
172
- end
173
-
174
- it "should internally configure authorized_openid_providers with the value given" do
175
- Chef::Config.should_receive(:configure).and_return(%w{opscode.com junglist.gen.nz})
176
- Chef::Config.openid_providers = %w{opscode.com junglist.gen.nz}
177
- end
178
- end
179
-
180
- describe "class method: plaform_specific_path" do
156
+ describe "class method: plaform_specific_path" do
181
157
  it "should return given path on non-windows systems" do
182
158
  platform_mock :unix do
183
159
  path = "/etc/chef/cookbooks"
@@ -230,13 +206,19 @@ describe Chef::Config do
230
206
  end
231
207
 
232
208
  it "Chef::Config[:data_bag_path] defaults to /var/chef/data_bags" do
233
- data_bag_path = if windows?
234
- "C:\\chef\\data_bags"
209
+ data_bag_path =
210
+ Chef::Config.platform_specific_path("/var/chef/data_bags")
211
+ Chef::Config[:data_bag_path].should == data_bag_path
212
+ end
213
+
214
+ it "Chef::Config[:environment_path] defaults to /var/chef/environments" do
215
+ environment_path = if windows?
216
+ "C:\\chef\\environments"
235
217
  else
236
- "/var/chef/data_bags"
218
+ "/var/chef/environments"
237
219
  end
238
220
 
239
- Chef::Config[:data_bag_path].should == data_bag_path
221
+ Chef::Config[:environment_path].should == environment_path
240
222
  end
241
223
  end
242
224
 
@@ -261,6 +243,42 @@ describe Chef::Config do
261
243
  end
262
244
  end
263
245
 
246
+ describe "Chef::Config[:encrypted_data_bag_secret]" do
247
+ db_secret_default_path =
248
+ Chef::Config.platform_specific_path("/etc/chef/encrypted_data_bag_secret")
249
+
250
+ let(:db_secret_default_path){ db_secret_default_path }
251
+
252
+ before do
253
+ File.stub(:exist?).with(db_secret_default_path).and_return(secret_exists)
254
+ # ugh...the only way to properly test this since the conditional
255
+ # is evaluated at file load/require time.
256
+ $LOADED_FEATURES.delete_if{|f| f =~ /chef\/config\.rb/}
257
+ require 'chef/config'
258
+ end
259
+
260
+ context "#{db_secret_default_path} exists" do
261
+ let(:secret_exists) { true }
262
+ it "sets the value to #{db_secret_default_path}" do
263
+ Chef::Config[:encrypted_data_bag_secret].should eq db_secret_default_path
264
+ end
265
+ end
266
+
267
+ context "#{db_secret_default_path} does not exist" do
268
+ let(:secret_exists) { false }
269
+ it "sets the value to nil" do
270
+ Chef::Config[:encrypted_data_bag_secret].should be_nil
271
+ end
272
+ end
273
+ end
274
+
275
+ describe "Chef::Config[:log_location]" do
276
+ it "raises ConfigurationError when log_location directory is missing" do
277
+ missing_path = "/tmp/non-existing-dir/file"
278
+ expect{Chef::Config.log_location = missing_path}.to raise_error Chef::Exceptions::ConfigurationError
279
+ end
280
+ end
281
+
264
282
  after(:each) do
265
283
  Chef::Config.configuration = @original_config
266
284
  end
@@ -63,6 +63,7 @@ describe Chef::CookbookSynchronizer do
63
63
  "checksum" => "abc456" }
64
64
  @cookbook_a_manifest["attributes"] = [ @cookbook_a_default_attrs ]
65
65
  @cookbook_a_manifest["templates"] = [{"path" => "templates/default/apache2.conf.erb", "url" => "http://chef.example.com/ffffff"}]
66
+ @cookbook_a_manifest["files"] = [{"path" => "files/default/megaman.conf", "url" => "http://chef.example.com/megaman.conf"}]
66
67
  @cookbook_a.manifest = @cookbook_a_manifest
67
68
  @cookbook_manifest["cookbook_a"] = @cookbook_a
68
69
 
@@ -102,7 +103,7 @@ describe Chef::CookbookSynchronizer do
102
103
  before do
103
104
  # Would rather not stub out methods on the test subject, but setting up
104
105
  # the state is a PITA and tests for this behavior are above.
105
- @synchronizer.should_receive(:clear_obsoleted_cookbooks)
106
+ @synchronizer.stub!(:clear_obsoleted_cookbooks)
106
107
 
107
108
  @server_api = mock("Chef::REST (mock)")
108
109
  @file_cache = mock("Chef::FileCache (mock)")
@@ -162,6 +163,53 @@ describe Chef::CookbookSynchronizer do
162
163
  @synchronizer.sync_cookbooks
163
164
  end
164
165
 
166
+ context "Chef::Config[:no_lazy_load] is true" do
167
+ before do
168
+ Chef::Config[:no_lazy_load] = true
169
+ @synchronizer = Chef::CookbookSynchronizer.new(@cookbook_manifest, @events)
170
+ @synchronizer.stub!(:server_api).and_return(@server_api)
171
+ @synchronizer.stub!(:cache).and_return(@file_cache)
172
+ @synchronizer.stub!(:clear_obsoleted_cookbooks)
173
+
174
+ @cookbook_a_file_default_tempfile = mock("Tempfile for cookbook_a megaman.conf file",
175
+ :path => "/tmp/cookbook_a_file_default_tempfile")
176
+ @cookbook_a_template_default_tempfile = mock("Tempfile for cookbook_a apache.conf.erb template",
177
+ :path => "/tmp/cookbook_a_template_default_tempfile")
178
+ end
179
+
180
+ after do
181
+ Chef::Config[:no_lazy_load] = false
182
+ end
183
+
184
+ it "fetches templates and cookbook files" do
185
+ @file_cache.should_receive(:has_key?).
186
+ with("cookbooks/cookbook_a/files/default/megaman.conf").
187
+ and_return(false)
188
+ @file_cache.should_receive(:has_key?).
189
+ with("cookbooks/cookbook_a/templates/default/apache2.conf.erb").
190
+ and_return(false)
191
+
192
+ @server_api.should_receive(:get_rest).
193
+ with('http://chef.example.com/megaman.conf', true).
194
+ and_return(@cookbook_a_file_default_tempfile)
195
+ @file_cache.should_receive(:move_to).
196
+ with("/tmp/cookbook_a_file_default_tempfile", "cookbooks/cookbook_a/files/default/megaman.conf")
197
+ @file_cache.should_receive(:load).
198
+ with("cookbooks/cookbook_a/files/default/megaman.conf", false).
199
+ and_return("/file-cache/cookbooks/cookbook_a/default/megaman.conf")
200
+
201
+ @server_api.should_receive(:get_rest).
202
+ with('http://chef.example.com/ffffff', true).
203
+ and_return(@cookbook_a_template_default_tempfile)
204
+ @file_cache.should_receive(:move_to).
205
+ with("/tmp/cookbook_a_template_default_tempfile", "cookbooks/cookbook_a/templates/default/apache2.conf.erb")
206
+ @file_cache.should_receive(:load).
207
+ with("cookbooks/cookbook_a/templates/default/apache2.conf.erb", false).
208
+ and_return("/file-cache/cookbooks/cookbook_a/templates/default/apache2.conf.erb")
209
+
210
+ @synchronizer.sync_cookbooks
211
+ end
212
+ end
165
213
  end
166
214
 
167
215
  context "when the cache contains outdated files" do
@@ -33,9 +33,15 @@ describe Chef::Cookbook::SyntaxCheck do
33
33
  @defn_files = %w{client.rb server.rb}.map { |f| File.join(cookbook_path, 'definitions', f)}
34
34
  @recipes = %w{default.rb gigantor.rb one.rb}.map { |f| File.join(cookbook_path, 'recipes', f) }
35
35
  @ruby_files = @attr_files + @defn_files + @recipes
36
-
37
- @template_files = %w{openldap_stuff.conf.erb openldap_variable_stuff.conf.erb test.erb}.map { |f| File.join(cookbook_path, 'templates', 'default', f)}
38
-
36
+ basenames = %w{ helpers_via_partial_test.erb
37
+ helper_test.erb
38
+ openldap_stuff.conf.erb
39
+ openldap_variable_stuff.conf.erb
40
+ test.erb
41
+ some_windows_line_endings.erb
42
+ all_windows_line_endings.erb
43
+ no_windows_line_endings.erb }
44
+ @template_files = basenames.map { |f| File.join(cookbook_path, 'templates', 'default', f)}
39
45
  end
40
46
 
41
47
  it "creates a syntax checker given the cookbook name when Chef::Config.cookbook_path is set" do
@@ -128,6 +134,25 @@ describe Chef::Cookbook::SyntaxCheck do
128
134
 
129
135
  end
130
136
 
137
+ describe "and an ignored file has a syntax error" do
138
+ before do
139
+ cookbook_path = File.join(CHEF_SPEC_DATA, 'cookbooks', 'ignorken')
140
+ Chef::Config[:cookbook_path] = File.dirname(cookbook_path)
141
+ syntax_check.cookbook_path.replace(cookbook_path)
142
+ @ruby_files = [File.join(cookbook_path, 'recipes/default.rb')]
143
+ end
144
+
145
+ it "shows that ignored ruby files do not require a syntax check" do
146
+ syntax_check.untested_ruby_files.sort.should == @ruby_files.sort
147
+ end
148
+
149
+ it "does not indicate that a ruby file has a syntax error" do
150
+ syntax_check.validate_ruby_files.should be_true
151
+ syntax_check.untested_ruby_files.should be_empty
152
+ end
153
+
154
+ end
155
+
131
156
  end
132
157
 
133
158
  describe "and the files have been syntax checked previously" do
@@ -66,8 +66,9 @@ describe Chef::CookbookLoader do
66
66
  seen[0].should == "angrybash"
67
67
  seen[1].should == "apache2"
68
68
  seen[2].should == "borken"
69
- seen[3].should == "java"
70
- seen[4].should == "openldap"
69
+ seen[3].should == "ignorken"
70
+ seen[4].should == "java"
71
+ seen[5].should == "openldap"
71
72
  end
72
73
  end
73
74
 
@@ -154,30 +154,30 @@ describe Chef::Daemon do
154
154
  FileUtils.should_receive(:rm).with("/var/run/chef/chef-client.pid")
155
155
  Chef::Daemon.remove_pid_file
156
156
  end
157
-
157
+
158
158
 
159
159
  end
160
160
 
161
161
  describe "when the pid file exists and the process is forked" do
162
-
162
+
163
163
  before do
164
164
  File.stub!(:exists?).with("/var/run/chef/chef-client.pid").and_return(true)
165
165
  Chef::Daemon.stub!(:forked?) { true }
166
166
  end
167
-
167
+
168
168
  it "should not remove the file" do
169
169
  FileUtils.should_not_receive(:rm)
170
170
  Chef::Daemon.remove_pid_file
171
171
  end
172
-
172
+
173
173
  end
174
-
174
+
175
175
  describe "when the pid file exists and the process is not forked" do
176
176
  before do
177
177
  File.stub!(:exists?).with("/var/run/chef/chef-client.pid").and_return(true)
178
178
  Chef::Daemon.stub!(:forked?) { false }
179
179
  end
180
-
180
+
181
181
  it "should remove the file" do
182
182
  FileUtils.should_receive(:rm)
183
183
  Chef::Daemon.remove_pid_file
@@ -295,7 +295,7 @@ describe Chef::Daemon do
295
295
  it "should log an appropriate error message and fail miserably" do
296
296
  Process.stub!(:initgroups).and_raise(Errno::EPERM)
297
297
  error = "Operation not permitted"
298
- if RUBY_PLATFORM.match("solaris2")
298
+ if RUBY_PLATFORM.match("solaris2") || RUBY_PLATFORM.match("aix")
299
299
  error = "Not owner"
300
300
  end
301
301
  Chef::Application.should_receive(:fatal!).with("Permission denied when trying to change 999:999 to 501:20. #{error}")
@@ -155,6 +155,13 @@ describe Chef::DataBag do
155
155
  data_bag.should == { 'bar' => { 'id' => 'bar', 'name' => 'Bob Bar' }, 'baz' => { 'id' => 'baz', 'name' => 'John Baz' }}
156
156
  end
157
157
 
158
+ it "should return the data bag list" do
159
+ File.should_receive(:directory?).with('/var/chef/data_bags').and_return(true)
160
+ Dir.should_receive(:glob).and_return(["/var/chef/data_bags/foo", "/var/chef/data_bags/bar"])
161
+ data_bag_list = Chef::DataBag.list
162
+ data_bag_list.should == { 'bar' => 'bar', 'foo' => 'foo' }
163
+ end
164
+
158
165
  it 'should raise an error if the configured data_bag_path is invalid' do
159
166
  File.should_receive(:directory?).with('/var/chef/data_bags').and_return(false)
160
167
 
@@ -0,0 +1,86 @@
1
+ #
2
+ # Author:: Serdar Sutay (<serdar@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
+ require 'chef/deprecation/warnings'
21
+
22
+ describe Chef::Deprecation do
23
+
24
+ # Support code for Chef::Deprecation
25
+
26
+ def self.class_from_string(str)
27
+ str.split('::').inject(Object) do |mod, class_name|
28
+ mod.const_get(class_name)
29
+ end
30
+ end
31
+
32
+ module DeprecatedMethods
33
+ def deprecated_method(value)
34
+ @value = value
35
+ end
36
+
37
+ def get_value
38
+ @value
39
+ end
40
+ end
41
+
42
+ class TestClass
43
+ extend Chef::Deprecation::Warnings
44
+ include DeprecatedMethods
45
+ add_deprecation_warnings_for(DeprecatedMethods.instance_methods)
46
+ end
47
+
48
+ method_snapshot_file = File.join(CHEF_SPEC_DATA, "file-providers-method-snapshot-chef-11-4.json")
49
+ method_snapshot = JSON.parse(File.open(method_snapshot_file).read())
50
+
51
+ method_snapshot.each do |class_name, old_methods|
52
+ class_object = class_from_string(class_name)
53
+ current_methods = class_object.public_instance_methods.map(&:to_sym)
54
+
55
+ it "defines all methods on #{class_object} that were available in 11.0" do
56
+ old_methods.each do |old_method|
57
+ current_methods.should include(old_method.to_sym)
58
+ end
59
+ end
60
+ end
61
+
62
+ context 'deprecation warning messages' do
63
+ before(:each) do
64
+ @warning_output = [ ]
65
+ Chef::Log.stub!(:warn) { |msg| @warning_output << msg }
66
+ end
67
+
68
+ it 'should be enabled for deprecated methods' do
69
+ TestClass.new.deprecated_method(10)
70
+ @warning_output.should_not be_empty
71
+ end
72
+
73
+ it 'should contain stack trace' do
74
+ TestClass.new.deprecated_method(10)
75
+ @warning_output.join("").include?(".rb").should be_true
76
+ end
77
+ end
78
+
79
+ it 'deprecated methods should still be called' do
80
+ test_instance = TestClass.new
81
+ test_instance.deprecated_method(10)
82
+ test_instance.get_value.should == 10
83
+ end
84
+
85
+ end
86
+