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,71 @@
1
+ #
2
+ # Author:: Xabier de Zuazo (xabier@onddo.com)
3
+ # Copyright:: Copyright (c) 2013 Onddo Labs, SL.
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/exceptions'
21
+
22
+ describe Chef::Provider::Ifconfig::Redhat do
23
+ before do
24
+ @node = Chef::Node.new
25
+ @cookbook_collection = Chef::CookbookCollection.new([])
26
+ @events = Chef::EventDispatch::Dispatcher.new
27
+ @run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
28
+ #This new_resource can be called anything --> it is not the same as in ifconfig.rb
29
+ @new_resource = Chef::Resource::Ifconfig.new("10.0.0.1", @run_context)
30
+ @new_resource.mask "255.255.254.0"
31
+ @new_resource.metric "1"
32
+ @new_resource.mtu "1500"
33
+ @new_resource.device "eth0"
34
+ @provider = Chef::Provider::Ifconfig::Redhat.new(@new_resource, @run_context)
35
+ @current_resource = Chef::Resource::Ifconfig.new("10.0.0.1", @run_context)
36
+
37
+ status = mock("Status", :exitstatus => 0)
38
+ @provider.instance_variable_set("@status", status)
39
+ @provider.current_resource = @current_resource
40
+ end
41
+
42
+ describe "generate_config for action_add" do
43
+
44
+ it "should write network-script for centos" do
45
+ @provider.stub!(:load_current_resource)
46
+ @provider.stub!(:run_command)
47
+ config_filename = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
48
+ config_file = StringIO.new
49
+ File.should_receive(:new).with(config_filename, "w").and_return(config_file)
50
+
51
+ @provider.run_action(:add)
52
+ config_file.string.should match(/^\s*DEVICE=eth0\s*$/)
53
+ config_file.string.should match(/^\s*IPADDR=10\.0\.0\.1\s*$/)
54
+ config_file.string.should match(/^\s*NETMASK=255\.255\.254\.0\s*$/)
55
+ end
56
+ end
57
+
58
+ describe "delete_config for action_delete" do
59
+
60
+ it "should delete network-script if it exists for centos" do
61
+ @current_resource.device @new_resource.device
62
+ @provider.stub!(:load_current_resource)
63
+ @provider.stub!(:run_command)
64
+ config_filename = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
65
+ File.should_receive(:exist?).with(config_filename).and_return(true)
66
+ FileUtils.should_receive(:rm_f).with(config_filename, :verbose => false)
67
+
68
+ @provider.run_action(:delete)
69
+ end
70
+ end
71
+ end
@@ -177,37 +177,4 @@ describe Chef::Provider::Ifconfig do
177
177
  @new_resource.should_not be_updated
178
178
  end
179
179
  end
180
-
181
- describe Chef::Provider::Ifconfig, "generate_config for action_add" do
182
- #%w[ centos redhat fedora ].each do |platform|
183
-
184
- it "should write network-script for centos" do
185
- @provider.stub!(:load_current_resource)
186
- @node.automatic_attrs[:platform] = "centos"
187
- @provider.stub!(:run_command)
188
- config_filename = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
189
- config_file = StringIO.new
190
- File.should_receive(:new).with(config_filename, "w").and_return(config_file)
191
-
192
- @provider.run_action(:add)
193
- config_file.string.should match(/^\s*DEVICE=eth0\s*$/)
194
- config_file.string.should match(/^\s*IPADDR=10.0.0.1\s*$/)
195
- config_file.string.should match(/^\s*NETMASK=255.255.254.0\s*$/)
196
- end
197
- end
198
-
199
- describe Chef::Provider::Ifconfig, "delete_config for action_delete" do
200
-
201
- it "should delete network-script if it exists for centos" do
202
- @node.automatic_attrs[:platform] = "centos"
203
- @current_resource.device "eth0"
204
- @provider.stub!(:load_current_resource)
205
- @provider.stub!(:run_command)
206
- config_filename = "/etc/sysconfig/network-scripts/ifcfg-#{@new_resource.device}"
207
- File.should_receive(:exist?).with(config_filename).and_return(true)
208
- FileUtils.should_receive(:rm_f).with(config_filename, :verbose => false)
209
-
210
- @provider.run_action(:delete)
211
- end
212
- end
213
180
  end
@@ -108,13 +108,18 @@ describe Chef::Provider::Mount::Mount do
108
108
  it "does not expect the device to exist for tmpfs" do
109
109
  @new_resource.fstype("tmpfs")
110
110
  @new_resource.device("whatever")
111
- lambda { @provider.load_current_resource() }.should_not raise_error
111
+ lambda { @provider.load_current_resource();@provider.mountable? }.should_not raise_error
112
112
  end
113
113
 
114
114
  it "does not expect the device to exist for Fuse filesystems" do
115
115
  @new_resource.fstype("fuse")
116
116
  @new_resource.device("nilfs#xxx")
117
- lambda { @provider.load_current_resource() }.should_not raise_error
117
+ lambda { @provider.load_current_resource();@provider.mountable? }.should_not raise_error
118
+ end
119
+
120
+ it "does not expect the device to exist if it's none" do
121
+ @new_resource.device("none")
122
+ lambda { @provider.load_current_resource();@provider.mountable? }.should_not raise_error
118
123
  end
119
124
 
120
125
  it "should set mounted true if the mount point is found in the mounts list" do
@@ -216,6 +221,32 @@ describe Chef::Provider::Mount::Mount do
216
221
  @provider.load_current_resource
217
222
  @provider.current_resource.enabled.should be_false
218
223
  end
224
+
225
+ it "should not mangle the mount options if the device in fstab is a symlink" do
226
+ target = "/dev/mapper/target"
227
+ options = "rw,noexec,noauto"
228
+
229
+ ::File.stub!(:symlink?).with(@new_resource.device).and_return(true)
230
+ ::File.stub!(:readlink).with(@new_resource.device).and_return(target)
231
+
232
+ fstab = "#{@new_resource.device} #{@new_resource.mount_point} #{@new_resource.fstype} #{options} 1 2\n"
233
+ ::File.stub!(:foreach).with("/etc/fstab").and_yield fstab
234
+ @provider.load_current_resource
235
+ @provider.current_resource.options.should eq(options.split(','))
236
+ end
237
+
238
+ it "should not mangle the mount options if the symlink target is in fstab" do
239
+ target = "/dev/mapper/target"
240
+ options = "rw,noexec,noauto"
241
+
242
+ ::File.stub!(:symlink?).with(@new_resource.device).and_return(true)
243
+ ::File.stub!(:readlink).with(@new_resource.device).and_return(target)
244
+
245
+ fstab = "#{target} #{@new_resource.mount_point} #{@new_resource.fstype} #{options} 1 2\n"
246
+ ::File.stub!(:foreach).with("/etc/fstab").and_yield fstab
247
+ @provider.load_current_resource
248
+ @provider.current_resource.options.should eq(options.split(','))
249
+ end
219
250
  end
220
251
 
221
252
  context "after the mount's state has been discovered" do
@@ -99,7 +99,10 @@ describe Chef::Provider::Mount::Windows do
99
99
  end
100
100
 
101
101
  it "should mount the filesystem if it is not mounted" do
102
- @vol.should_receive(:add).with(@new_resource.device)
102
+ @vol.should_receive(:add).with(:remote => @new_resource.device,
103
+ :username => @new_resource.username,
104
+ :domainname => @new_resource.domain,
105
+ :password => @new_resource.password)
103
106
  @provider.mount_fs
104
107
  end
105
108
 
@@ -51,7 +51,7 @@ describe Chef::Provider::Mount do
51
51
 
52
52
  it "should not mount the filesystem if it is mounted" do
53
53
  @current_resource.stub!(:mounted).and_return(true)
54
- @provider.should_not_receive(:mount_fs).and_return(true)
54
+ @provider.should_not_receive(:mount_fs)
55
55
  @provider.run_action(:mount)
56
56
  @new_resource.should_not be_updated_by_last_action
57
57
  end
@@ -68,7 +68,7 @@ describe Chef::Provider::Mount do
68
68
 
69
69
  it "should not umount the filesystem if it is not mounted" do
70
70
  @current_resource.stub!(:mounted).and_return(false)
71
- @provider.should_not_receive(:umount_fs).and_return(true)
71
+ @provider.should_not_receive(:umount_fs)
72
72
  @provider.run_action(:umount)
73
73
  @new_resource.should_not be_updated_by_last_action
74
74
  end
@@ -108,14 +108,24 @@ describe Chef::Provider::Mount do
108
108
  describe "when enabling the filesystem to be mounted" do
109
109
  it "should enable the mount if it isn't enable" do
110
110
  @current_resource.stub!(:enabled).and_return(false)
111
- @provider.should_receive(:enable_fs).with.and_return(true)
111
+ @provider.should_not_receive(:mount_options_unchanged?)
112
+ @provider.should_receive(:enable_fs).and_return(true)
112
113
  @provider.run_action(:enable)
113
114
  @new_resource.should be_updated_by_last_action
114
115
  end
115
116
 
116
- it "should not enable the mount if it is enabled" do
117
+ it "should enable the mount if it is enabled and mount options have changed" do
117
118
  @current_resource.stub!(:enabled).and_return(true)
118
- @provider.should_not_receive(:enable_fs).with.and_return(true)
119
+ @provider.should_receive(:mount_options_unchanged?).and_return(false)
120
+ @provider.should_receive(:enable_fs).and_return(true)
121
+ @provider.run_action(:enable)
122
+ @new_resource.should be_updated_by_last_action
123
+ end
124
+
125
+ it "should not enable the mount if it is enabled and mount options have not changed" do
126
+ @current_resource.stub!(:enabled).and_return(true)
127
+ @provider.should_receive(:mount_options_unchanged?).and_return(true)
128
+ @provider.should_not_receive(:enable_fs).and_return(true)
119
129
  @provider.run_action(:enable)
120
130
  @new_resource.should_not be_updated_by_last_action
121
131
  end
@@ -131,7 +141,7 @@ describe Chef::Provider::Mount do
131
141
 
132
142
  it "should not disable the mount if it isn't enabled" do
133
143
  @current_resource.stub!(:enabled).and_return(false)
134
- @provider.should_not_receive(:disable_fs).with.and_return(true)
144
+ @provider.should_not_receive(:disable_fs)
135
145
  @provider.run_action(:disable)
136
146
  @new_resource.should_not be_updated_by_last_action
137
147
  end
@@ -230,6 +230,50 @@ EOF
230
230
  lambda { @provider.candidate_version }.should raise_error(Chef::Exceptions::Package)
231
231
  end
232
232
 
233
+ it "should find the candidate_version if a category is specifed and there are category duplicates" do
234
+ output = <<EOF
235
+ Searching...
236
+ [ Results for search key : git ]
237
+ [ Applications found : 14 ]
238
+
239
+ * app-misc/digitemp [ Masked ]
240
+ Latest version available: 3.5.0
241
+ Latest version installed: [ Not Installed ]
242
+ Size of files: 261 kB
243
+ Homepage: http://www.digitemp.com/ http://www.ibutton.com/
244
+ Description: Temperature logging and reporting using Dallas Semiconductor's iButtons and 1-Wire protocol
245
+ License: GPL-2
246
+
247
+ * app-misc/git
248
+ Latest version available: 4.3.20
249
+ Latest version installed: [ Not Installed ]
250
+ Size of files: 416 kB
251
+ Homepage: http://www.gnu.org/software/git/
252
+ Description: GNU Interactive Tools - increase speed and efficiency of most daily task
253
+ License: GPL-2
254
+
255
+ * dev-util/git
256
+ Latest version available: 1.6.0.6
257
+ Latest version installed: ignore
258
+ Size of files: 2,725 kB
259
+ Homepage: http://git.or.cz/
260
+ Description: GIT - the stupid content tracker, the revision control system heavily used by the Linux kernel team
261
+ License: GPL-2
262
+
263
+ * dev-util/gitosis [ Masked ]
264
+ Latest version available: 0.2_p20080825
265
+ Latest version installed: [ Not Installed ]
266
+ Size of files: 31 kB
267
+ Homepage: http://eagain.net/gitweb/?p=gitosis.git;a=summary
268
+ Description: gitosis -- software for hosting git repositories
269
+ License: GPL-2
270
+ EOF
271
+
272
+ @status = mock("Status", :exitstatus => 0)
273
+ @provider = Chef::Provider::Package::Portage.new(@new_resource, @run_context)
274
+ @provider.should_receive(:popen4).and_yield(nil, nil, StringIO.new(output), nil).and_return(@status)
275
+ @provider.candidate_version.should == "1.6.0.6"
276
+ end
233
277
  end
234
278
 
235
279
  describe Chef::Provider::Package::Portage, "install_package" do
@@ -95,6 +95,49 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
95
95
  @gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0')).should == Gem::Version.new('1.3.0')
96
96
  end
97
97
 
98
+ it "finds a matching gem candidate version on rubygems 2.0.0+" do
99
+ dep = Gem::Dependency.new('rspec', '>= 0')
100
+ dep_installer = Gem::DependencyInstaller.new
101
+ @gem_env.stub!(:dependency_installer).and_return(dep_installer)
102
+ best_gem = mock("best gem match", :spec => gemspec("rspec", Gem::Version.new("1.3.0")), :source => "https://rubygems.org")
103
+ available_set = mock("Gem::AvailableSet test double")
104
+ available_set.should_receive(:pick_best!)
105
+ available_set.should_receive(:set).and_return([best_gem])
106
+ dep_installer.should_receive(:find_gems_with_sources).with(dep).and_return(available_set)
107
+ @gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0')).should == Gem::Version.new('1.3.0')
108
+ end
109
+
110
+ context "when rubygems was upgraded from 1.8->2.0" do
111
+ # https://github.com/rubygems/rubygems/issues/404
112
+ # tl;dr rubygems 1.8 and 2.0 can both be in the load path, which means that
113
+ # require "rubygems/format" will load even though rubygems 2.0 doesn't have
114
+ # that file.
115
+
116
+ before do
117
+ if defined?(Gem::Format)
118
+ # tests are running under rubygems 1.8, or 2.0 upgraded from 1.8
119
+ @remove_gem_format = false
120
+ else
121
+ Gem.const_set(:Format, Object.new)
122
+ @remove_gem_format = true
123
+ end
124
+ Gem::Package.stub!(:respond_to?).with(:open).and_return(false)
125
+ end
126
+
127
+ after do
128
+ if @remove_gem_format
129
+ Gem.send(:remove_const, :Format)
130
+ end
131
+ end
132
+
133
+ it "finds a matching gem candidate version on rubygems 2.0+ with some rubygems 1.8 code loaded" do
134
+ package = mock("Gem::Package", :spec => "a gemspec from package")
135
+ Gem::Package.should_receive(:new).with("/path/to/package.gem").and_return(package)
136
+ @gem_env.spec_from_file("/path/to/package.gem").should == "a gemspec from package"
137
+ end
138
+
139
+ end
140
+
98
141
  it "gives the candidate version as nil if none is found" do
99
142
  dep = Gem::Dependency.new('rspec', '>= 0')
100
143
  latest = []
@@ -213,7 +256,7 @@ describe Chef::Provider::Package::Rubygems::AlternateGemEnvironment do
213
256
  it "determines the installed versions of gems from the source index (part2: the unmockening)" do
214
257
  $stdout.stub!(:write)
215
258
  path_to_gem = if windows?
216
- `where gem`.split[-1]
259
+ `where gem`.split[1]
217
260
  else
218
261
  `which gem`.strip
219
262
  end
@@ -1,5 +1,6 @@
1
1
  #
2
2
  # Author:: Trevor O (trevoro@joyent.com)
3
+ # Author:: Yukihiko Sawanobori (sawanoboriyu@higanworks.com)
3
4
  # Copyright:: Copyright (c) 2012 Opscode
4
5
  # License:: Apache License, Version 2.0
5
6
  #
@@ -72,8 +73,8 @@ describe Chef::Provider::Package::SmartOS, "load_current_resource" do
72
73
 
73
74
  it "run pkgin and install the package" do
74
75
  out = OpenStruct.new(:stdout => nil)
75
- @provider.should_receive(:shell_out!).with("pkg_info -E \"varnish*\"", {:env => nil, :returns=>[0,1]}).and_return(@shell_out)
76
- @provider.should_receive(:shell_out!).with("pkgin -y install varnish-2.1.5nb2", {:env=>nil}).and_return(out)
76
+ @provider.should_receive(:shell_out!).with("/opt/local/sbin/pkg_info -E \"varnish*\"", {:env => nil, :returns=>[0,1]}).and_return(@shell_out)
77
+ @provider.should_receive(:shell_out!).with("/opt/local/bin/pkgin -y install varnish-2.1.5nb2", {:env=>nil}).and_return(out)
77
78
  @provider.load_current_resource
78
79
  @provider.install_package("varnish", "2.1.5nb2")
79
80
  end
@@ -39,7 +39,6 @@ describe Chef::Provider::Package::Yum do
39
39
  )
40
40
  Chef::Provider::Package::Yum::YumCache.stub!(:instance).and_return(@yum_cache)
41
41
  @provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
42
- @stderr = StringIO.new
43
42
  @pid = mock("PID")
44
43
  end
45
44
 
@@ -542,7 +541,7 @@ describe Chef::Provider::Package::Yum do
542
541
  it "should call action_upgrade in the parent if the candidate version is nil" do
543
542
  @provider.load_current_resource
544
543
  @current_resource = Chef::Resource::Package.new('cups')
545
- @provider.candidate_version = nil
544
+ @provider.candidate_version = nil
546
545
  @provider.should_not_receive(:upgrade_package)
547
546
  @provider.action_upgrade
548
547
  end
@@ -600,7 +599,7 @@ describe Chef::Provider::Package::Yum do
600
599
  @provider.stub!(:output_of_command).and_return([@status, "", ""])
601
600
  @provider.should_receive(:output_of_command).once.with(
602
601
  "yum -d0 -e0 -y install emacs-1.0",
603
- {}
602
+ {:timeout => Chef::Config[:yum_timeout]}
604
603
  )
605
604
  @provider.yum_command("yum -d0 -e0 -y install emacs-1.0")
606
605
  end
@@ -610,7 +609,7 @@ describe Chef::Provider::Package::Yum do
610
609
  @provider.stub!(:output_of_command).and_return([@status, "failure failure", "problem problem"])
611
610
  @provider.should_receive(:output_of_command).once.with(
612
611
  "yum -d0 -e0 -y install emacs-1.0",
613
- {}
612
+ {:timeout => Chef::Config[:yum_timeout]}
614
613
  )
615
614
  lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec)
616
615
  end
@@ -620,7 +619,7 @@ describe Chef::Provider::Package::Yum do
620
619
  @provider.stub!(:output_of_command).and_return([@status, "error: %pre(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2", ""])
621
620
  @provider.should_receive(:output_of_command).once.with(
622
621
  "yum -d0 -e0 -y install emacs-1.0",
623
- {}
622
+ {:timeout => Chef::Config[:yum_timeout]}
624
623
  )
625
624
  # will still raise an exception, can't stub out the subsequent call
626
625
  lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec)
@@ -631,7 +630,7 @@ describe Chef::Provider::Package::Yum do
631
630
  @provider.stub!(:output_of_command).and_return([@status, "error: %post(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2", ""])
632
631
  @provider.should_receive(:output_of_command).twice.with(
633
632
  "yum -d0 -e0 -y install emacs-1.0",
634
- {}
633
+ {:timeout => Chef::Config[:yum_timeout]}
635
634
  )
636
635
  # will still raise an exception, can't stub out the subsequent call
637
636
  lambda { @provider.yum_command("yum -d0 -e0 -y install emacs-1.0") }.should raise_error(Chef::Exceptions::Exec)
@@ -1155,7 +1154,7 @@ describe Chef::Provider::Package::Yum::RPMDbPackage do
1155
1154
 
1156
1155
  describe "repoid" do
1157
1156
  it "should return the source repository repoid" do
1158
- @rpm_x.repoid.should be == "base"
1157
+ @rpm_x.repoid.should be == "base"
1159
1158
  @rpm_y.repoid.should be == "extras"
1160
1159
  @rpm_z.repoid.should be == "other"
1161
1160
  end
@@ -1544,7 +1543,10 @@ describe Chef::Provider::Package::Yum::YumCache do
1544
1543
  end
1545
1544
 
1546
1545
  before(:each) do
1547
- yum_dump_good_output = <<EOF
1546
+ @stdin = mock("STDIN", :nil_object => true)
1547
+ @stdout = mock("STDOUT", :nil_object => true)
1548
+
1549
+ @stdout_good = <<EOF
1548
1550
  [option installonlypkgs] kernel kernel-bigmem kernel-enterprise
1549
1551
  erlang-mochiweb 0 1.4.1 5.el5 x86_64 ['erlang-mochiweb = 1.4.1-5.el5', 'mochiweb = 1.4.1-5.el5'] i installed
1550
1552
  zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
@@ -1560,9 +1562,16 @@ znc-extra 0 0.098 1.el5 x86_64 [] a base
1560
1562
  znc-modtcl 0 0.098 1.el5 x86_64 [] a base
1561
1563
  znc-test.beta1 0 0.098 1.el5 x86_64 [] a extras
1562
1564
  znc-test.test.beta1 0 0.098 1.el5 x86_64 [] a base
1565
+ EOF
1566
+ @stdout_bad_type = <<EOF
1567
+ zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
1568
+ zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] c base
1569
+ zlib-devel 0 1.2.3 3 i386 [] a extras
1570
+ zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] bad installed
1571
+ znc-modtcl 0 0.098 1.el5 x86_64 [] a base
1563
1572
  EOF
1564
1573
 
1565
- yum_dump_bad_output_separators = <<EOF
1574
+ @stdout_bad_separators = <<EOF
1566
1575
  zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
1567
1576
  zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] i base bad
1568
1577
  zlib-devel 0 1.2.3 3 i386 [] a extras
@@ -1570,36 +1579,20 @@ bad zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] i installed
1570
1579
  znc-modtcl 0 0.098 1.el5 x86_64 [] a base bad
1571
1580
  EOF
1572
1581
 
1573
- yum_dump_bad_output_type = <<EOF
1574
- zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
1575
- zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] c base
1576
- zlib-devel 0 1.2.3 3 i386 [] a extras
1577
- zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] bad installed
1578
- znc-modtcl 0 0.098 1.el5 x86_64 [] a base
1579
- EOF
1582
+ @stdout_no_output = ""
1580
1583
 
1581
- yum_dump_error = <<EOF
1584
+ @stderr = <<EOF
1582
1585
  yum-dump Config Error: File contains no section headers.
1583
1586
  file: file://///etc/yum.repos.d/CentOS-Base.repo, line: 12
1584
1587
  'qeqwewe\n'
1585
1588
  EOF
1586
-
1587
- @status = mock("Status", :exitstatus => 0)
1588
- @status_bad = mock("Status", :exitstatus => 1)
1589
- @stdin = mock("STDIN", :nil_object => true)
1590
- @stdout = mock("STDOUT", :nil_object => true)
1591
- @stdout_good = yum_dump_good_output.split("\n")
1592
- @stdout_bad_type = yum_dump_bad_output_type.split("\n")
1593
- @stdout_bad_separators = yum_dump_bad_output_separators.split("\n")
1594
- @stderr = mock("STDERR", :nil_object => true)
1595
- @stderr.stub!(:readlines).and_return(yum_dump_error.split("\n"))
1596
- @pid = mock("PID", :nil_object => true)
1589
+ @status = mock("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_good, :stderr => @stderr)
1597
1590
 
1598
1591
  # new singleton each time
1599
1592
  Chef::Provider::Package::Yum::YumCache.reset_instance
1600
1593
  @yc = Chef::Provider::Package::Yum::YumCache.instance
1601
1594
  # load valid data
1602
- @yc.stub!(:popen4).and_yield(@pid, @stdin, @stdout_good, @stderr).and_return(@status)
1595
+ @yc.stub!(:shell_out!).and_return(@status)
1603
1596
  end
1604
1597
 
1605
1598
  describe "initialize" do
@@ -1618,7 +1611,7 @@ EOF
1618
1611
 
1619
1612
  describe "refresh" do
1620
1613
  it "should implicitly call yum-dump.py only once by default after being instantiated" do
1621
- @yc.should_receive(:popen4).once
1614
+ @yc.should_receive(:shell_out!).once
1622
1615
  @yc.installed_version("zlib")
1623
1616
  @yc.reset
1624
1617
  @yc.installed_version("zlib")
@@ -1626,48 +1619,52 @@ EOF
1626
1619
 
1627
1620
  it "should run yum-dump.py using the system python when next_refresh is for :all" do
1628
1621
  @yc.reload
1629
- @yc.should_receive(:popen4).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides$}, :waitlast=>true)
1622
+ @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides$}, :timeout=>Chef::Config[:yum_timeout])
1630
1623
  @yc.refresh
1631
1624
  end
1632
1625
 
1633
1626
  it "should run yum-dump.py with the installed flag when next_refresh is for :installed" do
1634
1627
  @yc.reload_installed
1635
- @yc.should_receive(:popen4).with(%r{^/usr/bin/python .*/yum-dump.py --installed$}, :waitlast=>true)
1628
+ @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --installed$}, :timeout=>Chef::Config[:yum_timeout])
1636
1629
  @yc.refresh
1637
1630
  end
1638
1631
 
1639
1632
  it "should run yum-dump.py with the all-provides flag when next_refresh is for :provides" do
1640
1633
  @yc.reload_provides
1641
- @yc.should_receive(:popen4).with(%r{^/usr/bin/python .*/yum-dump.py --options --all-provides$}, :waitlast=>true)
1634
+ @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --all-provides$}, :timeout=>Chef::Config[:yum_timeout])
1642
1635
  @yc.refresh
1643
1636
  end
1644
1637
 
1645
1638
  it "should pass extra_repo_control args to yum-dump.py" do
1646
1639
  @yc.enable_extra_repo_control("--enablerepo=foo --disablerepo=bar")
1647
- @yc.should_receive(:popen4).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar$}, :waitlast=>true)
1640
+ @yc.should_receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar$}, :timeout=>Chef::Config[:yum_timeout])
1648
1641
  @yc.refresh
1649
1642
  end
1650
1643
 
1651
1644
  it "should warn about invalid data with too many separators" do
1652
- @yc.stub!(:popen4).and_yield(@pid, @stdin, @stdout_bad_separators, @stderr).and_return(@status)
1645
+ @status = mock("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_bad_separators, :stderr => @stderr)
1646
+ @yc.stub!(:shell_out!).and_return(@status)
1653
1647
  Chef::Log.should_receive(:warn).exactly(3).times.with(%r{Problem parsing})
1654
1648
  @yc.refresh
1655
1649
  end
1656
1650
 
1657
1651
  it "should warn about invalid data with an incorrect type" do
1658
- @yc.stub!(:popen4).and_yield(@pid, @stdin, @stdout_bad_type, @stderr).and_return(@status)
1652
+ @status = mock("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_bad_type, :stderr => @stderr)
1653
+ @yc.stub!(:shell_out!).and_return(@status)
1659
1654
  Chef::Log.should_receive(:warn).exactly(2).times.with(%r{Problem parsing})
1660
1655
  @yc.refresh
1661
1656
  end
1662
1657
 
1663
1658
  it "should warn about no output from yum-dump.py" do
1664
- @yc.stub!(:popen4).and_yield(@pid, @stdin, [], @stderr).and_return(@status)
1659
+ @status = mock("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_no_output, :stderr => @stderr)
1660
+ @yc.stub!(:shell_out!).and_return(@status)
1665
1661
  Chef::Log.should_receive(:warn).exactly(1).times.with(%r{no output from yum-dump.py})
1666
1662
  @yc.refresh
1667
1663
  end
1668
1664
 
1669
1665
  it "should raise exception yum-dump.py exits with a non zero status" do
1670
- @yc.stub!(:popen4).and_yield(@pid, @stdin, [], @stderr).and_return(@status_bad)
1666
+ @status = mock("Status", :exitstatus => 1, :stdin => @stdin, :stdout => @stdout_no_output, :stderr => @stderr)
1667
+ @yc.stub!(:shell_out!).and_return(@status)
1671
1668
  lambda { @yc.refresh}.should raise_error(Chef::Exceptions::Package, %r{CentOS-Base.repo, line: 12})
1672
1669
  end
1673
1670
 
@@ -1792,7 +1789,7 @@ EOF
1792
1789
  end
1793
1790
 
1794
1791
  it "should return nil when no match for package-version, no arch" do
1795
- @yc.package_repository("zisofs-tools", "pretend", nil).should be == nil
1792
+ @yc.package_repository("zisofs-tools", "pretend", nil).should be == nil
1796
1793
  @yc.package_repository("zisofs-tools", "pretend").should be == nil
1797
1794
  @yc.package_repository("pretend", "1.0.6-3.2.2").should be == nil
1798
1795
  end