chef 11.18.12-x86-mingw32 → 12.0.0.alpha.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +10 -0
  3. data/README.md +1 -1
  4. data/distro/common/html/_sources/index.txt +5 -2
  5. data/distro/common/html/_sources/knife_serve.txt +19 -0
  6. data/distro/common/html/_sources/knife_ssl_check.txt +2 -2
  7. data/distro/common/html/_sources/knife_ssl_fetch.txt +2 -2
  8. data/distro/common/html/_static/basic.css +1 -1
  9. data/distro/common/html/_static/doctools.js +1 -1
  10. data/distro/common/html/_static/searchtools.js +1 -1
  11. data/distro/common/html/_static/websupport.js +1 -1
  12. data/distro/common/html/ctl_chef_client.html +19 -9
  13. data/distro/common/html/ctl_chef_server.html +7 -1
  14. data/distro/common/html/ctl_chef_shell.html +3 -4
  15. data/distro/common/html/ctl_chef_solo.html +12 -7
  16. data/distro/common/html/index.html +19 -12
  17. data/distro/common/html/knife.html +1 -2
  18. data/distro/common/html/knife_bootstrap.html +16 -5
  19. data/distro/common/html/knife_client.html +8 -5
  20. data/distro/common/html/knife_common_options.html +11 -12
  21. data/distro/common/html/knife_configure.html +2 -3
  22. data/distro/common/html/knife_cookbook.html +16 -17
  23. data/distro/common/html/knife_cookbook_site.html +19 -18
  24. data/distro/common/html/knife_data_bag.html +6 -7
  25. data/distro/common/html/knife_delete.html +2 -3
  26. data/distro/common/html/knife_deps.html +2 -3
  27. data/distro/common/html/knife_diff.html +3 -4
  28. data/distro/common/html/knife_download.html +6 -7
  29. data/distro/common/html/knife_edit.html +0 -1
  30. data/distro/common/html/knife_environment.html +3 -4
  31. data/distro/common/html/knife_exec.html +0 -1
  32. data/distro/common/html/knife_index_rebuild.html +0 -1
  33. data/distro/common/html/knife_list.html +5 -6
  34. data/distro/common/html/knife_node.html +13 -6
  35. data/distro/common/html/knife_raw.html +0 -1
  36. data/distro/common/html/knife_recipe_list.html +0 -1
  37. data/distro/common/html/knife_role.html +1 -2
  38. data/distro/common/html/knife_search.html +2 -3
  39. data/distro/common/html/knife_serve.html +79 -0
  40. data/distro/common/html/knife_show.html +1 -2
  41. data/distro/common/html/knife_ssh.html +2 -3
  42. data/distro/common/html/knife_ssl_check.html +12 -9
  43. data/distro/common/html/knife_ssl_fetch.html +9 -10
  44. data/distro/common/html/knife_status.html +2 -3
  45. data/distro/common/html/knife_tag.html +0 -1
  46. data/distro/common/html/knife_upload.html +3 -4
  47. data/distro/common/html/knife_user.html +2 -3
  48. data/distro/common/html/knife_using.html +0 -1
  49. data/distro/common/html/knife_xargs.html +3 -4
  50. data/distro/common/html/search.html +0 -1
  51. data/distro/common/html/searchindex.js +1 -1
  52. data/lib/chef/api_client.rb +1 -1
  53. data/lib/chef/application.rb +24 -67
  54. data/lib/chef/application/client.rb +1 -1
  55. data/lib/chef/application/knife.rb +1 -1
  56. data/lib/chef/chef_fs/chef_fs_data_store.rb +2 -3
  57. data/lib/chef/chef_fs/command_line.rb +2 -3
  58. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -5
  59. data/lib/chef/chef_fs/file_system/acl_entry.rb +1 -2
  60. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +1 -2
  61. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +2 -2
  62. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +2 -3
  63. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +4 -5
  64. data/lib/chef/config.rb +26 -2
  65. data/lib/chef/config_fetcher.rb +1 -1
  66. data/lib/chef/cookbook/cookbook_version_loader.rb +4 -4
  67. data/lib/chef/cookbook/metadata.rb +1 -1
  68. data/lib/chef/cookbook/synchronizer.rb +50 -8
  69. data/lib/chef/cookbook_uploader.rb +9 -23
  70. data/lib/chef/cookbook_version.rb +3 -2
  71. data/lib/chef/data_bag.rb +1 -1
  72. data/lib/chef/data_bag_item.rb +1 -1
  73. data/lib/chef/dsl/recipe.rb +1 -14
  74. data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
  75. data/lib/chef/environment.rb +1 -1
  76. data/lib/chef/exceptions.rb +2 -24
  77. data/lib/chef/file_content_management/tempfile.rb +8 -1
  78. data/lib/chef/formatters/base.rb +0 -7
  79. data/lib/chef/http.rb +12 -19
  80. data/lib/chef/http/json_input.rb +12 -1
  81. data/lib/chef/json_compat.rb +45 -64
  82. data/lib/chef/knife.rb +2 -5
  83. data/lib/chef/knife/bootstrap.rb +2 -2
  84. data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
  85. data/lib/chef/knife/bootstrap/centos5-gems.erb +2 -2
  86. data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
  87. data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
  88. data/lib/chef/knife/bootstrap/fedora13-gems.erb +2 -2
  89. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
  90. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +2 -2
  91. data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +2 -2
  92. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  93. data/lib/chef/knife/cookbook_site_install.rb +10 -34
  94. data/lib/chef/knife/cookbook_site_list.rb +1 -1
  95. data/lib/chef/knife/cookbook_site_search.rb +1 -1
  96. data/lib/chef/knife/cookbook_site_share.rb +3 -3
  97. data/lib/chef/knife/cookbook_site_show.rb +3 -3
  98. data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
  99. data/lib/chef/knife/cookbook_upload.rb +1 -1
  100. data/lib/chef/knife/core/subcommand_loader.rb +0 -24
  101. data/lib/chef/knife/core/ui.rb +8 -7
  102. data/lib/chef/knife/deps.rb +2 -3
  103. data/lib/chef/knife/serve.rb +2 -1
  104. data/lib/chef/local_mode.rb +105 -0
  105. data/lib/chef/mixin/file_class.rb +1 -4
  106. data/lib/chef/mixin/shell_out.rb +15 -0
  107. data/lib/chef/mixin/windows_architecture_helper.rb +0 -16
  108. data/lib/chef/node.rb +1 -1
  109. data/lib/chef/platform/query_helpers.rb +1 -5
  110. data/lib/chef/policy_builder/expand_node_object.rb +3 -0
  111. data/lib/chef/provider.rb +2 -0
  112. data/lib/chef/provider/cookbook_file.rb +0 -1
  113. data/lib/chef/provider/deploy.rb +0 -1
  114. data/lib/chef/provider/deploy/revision.rb +1 -1
  115. data/lib/chef/provider/env.rb +10 -25
  116. data/lib/chef/provider/env/windows.rb +23 -10
  117. data/lib/chef/provider/execute.rb +0 -3
  118. data/lib/chef/provider/file.rb +0 -3
  119. data/lib/chef/provider/git.rb +0 -6
  120. data/lib/chef/provider/group/dscl.rb +9 -27
  121. data/lib/chef/provider/group/gpasswd.rb +0 -3
  122. data/lib/chef/provider/group/groupmod.rb +0 -4
  123. data/lib/chef/provider/group/suse.rb +0 -3
  124. data/lib/chef/provider/group/usermod.rb +0 -3
  125. data/lib/chef/provider/link.rb +22 -5
  126. data/lib/chef/provider/log.rb +15 -4
  127. data/lib/chef/provider/mdadm.rb +0 -3
  128. data/lib/chef/provider/mount/mount.rb +0 -2
  129. data/lib/chef/provider/mount/solaris.rb +0 -2
  130. data/lib/chef/provider/package.rb +0 -1
  131. data/lib/chef/provider/package/apt.rb +0 -3
  132. data/lib/chef/provider/package/dpkg.rb +0 -1
  133. data/lib/chef/provider/package/easy_install.rb +0 -4
  134. data/lib/chef/provider/package/freebsd/base.rb +0 -3
  135. data/lib/chef/provider/package/freebsd/pkgng.rb +0 -2
  136. data/lib/chef/provider/package/freebsd/port.rb +0 -2
  137. data/lib/chef/provider/package/ips.rb +0 -3
  138. data/lib/chef/provider/package/paludis.rb +0 -5
  139. data/lib/chef/provider/package/portage.rb +0 -2
  140. data/lib/chef/provider/package/rpm.rb +2 -4
  141. data/lib/chef/provider/package/rubygems.rb +0 -4
  142. data/lib/chef/provider/package/smartos.rb +0 -3
  143. data/lib/chef/provider/package/windows/msi.rb +0 -2
  144. data/lib/chef/provider/package/yum.rb +0 -4
  145. data/lib/chef/provider/package/zypper.rb +0 -3
  146. data/lib/chef/provider/registry_key.rb +0 -2
  147. data/lib/chef/provider/remote_directory.rb +0 -1
  148. data/lib/chef/provider/remote_file.rb +0 -1
  149. data/lib/chef/provider/remote_file/cache_control_data.rb +1 -3
  150. data/lib/chef/provider/remote_file/content.rb +0 -1
  151. data/lib/chef/provider/remote_file/fetcher.rb +0 -2
  152. data/lib/chef/provider/remote_file/ftp.rb +0 -1
  153. data/lib/chef/provider/resource_update.rb +0 -3
  154. data/lib/chef/provider/service/freebsd.rb +0 -3
  155. data/lib/chef/provider/service/init.rb +0 -3
  156. data/lib/chef/provider/service/macosx.rb +0 -1
  157. data/lib/chef/provider/service/redhat.rb +0 -2
  158. data/lib/chef/provider/service/simple.rb +0 -3
  159. data/lib/chef/provider/service/solaris.rb +0 -3
  160. data/lib/chef/provider/service/systemd.rb +15 -14
  161. data/lib/chef/provider/service/windows.rb +0 -3
  162. data/lib/chef/provider/subversion.rb +0 -2
  163. data/lib/chef/provider/template.rb +0 -2
  164. data/lib/chef/provider/template/content.rb +0 -1
  165. data/lib/chef/provider/user/dscl.rb +156 -549
  166. data/lib/chef/provider/user/solaris.rb +0 -1
  167. data/lib/chef/provider/user/useradd.rb +0 -3
  168. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  169. data/lib/chef/providers.rb +0 -1
  170. data/lib/chef/resource.rb +1 -4
  171. data/lib/chef/resource/freebsd_package.rb +2 -10
  172. data/lib/chef/resource/lwrp_base.rb +1 -12
  173. data/lib/chef/resource/user.rb +0 -18
  174. data/lib/chef/resource_collection.rb +1 -1
  175. data/lib/chef/resource_reporter.rb +10 -10
  176. data/lib/chef/resources.rb +0 -1
  177. data/lib/chef/role.rb +3 -3
  178. data/lib/chef/run_list.rb +1 -1
  179. data/lib/chef/tasks/chef_repo.rake +131 -264
  180. data/lib/chef/user.rb +1 -1
  181. data/lib/chef/util/path_helper.rb +2 -2
  182. data/lib/chef/version.rb +9 -1
  183. data/lib/chef/win32/api/system.rb +0 -9
  184. data/spec/data/bootstrap/test-hints.erb +1 -1
  185. data/spec/data/bootstrap/test.erb +1 -1
  186. data/spec/functional/dsl/reboot_pending_spec.rb +53 -58
  187. data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
  188. data/spec/functional/knife/exec_spec.rb +1 -1
  189. data/spec/functional/mixin/shell_out_spec.rb +48 -0
  190. data/spec/functional/resource/base.rb +0 -10
  191. data/spec/functional/resource/group_spec.rb +1 -5
  192. data/spec/functional/resource/link_spec.rb +8 -0
  193. data/spec/functional/resource/{user/useradd_spec.rb → user_spec.rb} +1 -1
  194. data/spec/integration/knife/chef_fs_data_store_spec.rb +3 -3
  195. data/spec/integration/knife/chef_repo_path_spec.rb +1 -6
  196. data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
  197. data/spec/integration/knife/chefignore_spec.rb +1 -1
  198. data/spec/integration/knife/common_options_spec.rb +50 -3
  199. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  200. data/spec/integration/knife/delete_spec.rb +1 -1
  201. data/spec/integration/knife/deps_spec.rb +1 -1
  202. data/spec/integration/knife/diff_spec.rb +3 -3
  203. data/spec/integration/knife/download_spec.rb +3 -3
  204. data/spec/integration/knife/list_spec.rb +1 -1
  205. data/spec/integration/knife/raw_spec.rb +1 -11
  206. data/spec/integration/knife/redirection_spec.rb +1 -1
  207. data/spec/integration/knife/serve_spec.rb +2 -2
  208. data/spec/integration/knife/show_spec.rb +1 -1
  209. data/spec/integration/knife/upload_spec.rb +9 -9
  210. data/spec/spec_helper.rb +0 -9
  211. data/spec/support/pedant/pedant_config.rb +2 -1
  212. data/spec/support/pedant/run_pedant.rb +2 -1
  213. data/spec/support/platform_helpers.rb +5 -24
  214. data/spec/support/shared/integration/integration_helper.rb +2 -1
  215. data/spec/support/shared/matchers.rb +17 -0
  216. data/spec/tiny_server.rb +1 -2
  217. data/spec/unit/api_client_spec.rb +3 -3
  218. data/spec/unit/application_spec.rb +9 -32
  219. data/spec/unit/config_fetcher_spec.rb +1 -1
  220. data/spec/unit/cookbook/metadata_spec.rb +3 -7
  221. data/spec/unit/cookbook/synchronizer_spec.rb +441 -226
  222. data/spec/unit/cookbook_loader_spec.rb +1 -1
  223. data/spec/unit/cookbook_uploader_spec.rb +160 -0
  224. data/spec/unit/cookbook_version_spec.rb +0 -4
  225. data/spec/unit/data_bag_item_spec.rb +1 -5
  226. data/spec/unit/data_bag_spec.rb +1 -5
  227. data/spec/unit/deprecation_spec.rb +1 -1
  228. data/spec/unit/dsl/recipe_spec.rb +12 -0
  229. data/spec/unit/encrypted_data_bag_item_spec.rb +7 -14
  230. data/spec/unit/environment_spec.rb +3 -7
  231. data/spec/unit/exceptions_spec.rb +0 -6
  232. data/spec/unit/http/json_input_spec.rb +128 -0
  233. data/spec/unit/json_compat_spec.rb +17 -58
  234. data/spec/unit/knife/client_create_spec.rb +3 -3
  235. data/spec/unit/knife/configure_client_spec.rb +6 -5
  236. data/spec/unit/knife/cookbook_delete_spec.rb +1 -1
  237. data/spec/unit/knife/cookbook_download_spec.rb +5 -5
  238. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -0
  239. data/spec/unit/knife/cookbook_metadata_spec.rb +1 -1
  240. data/spec/unit/knife/cookbook_site_download_spec.rb +10 -11
  241. data/spec/unit/knife/cookbook_site_install_spec.rb +116 -161
  242. data/spec/unit/knife/cookbook_site_share_spec.rb +8 -8
  243. data/spec/unit/knife/cookbook_upload_spec.rb +3 -2
  244. data/spec/unit/knife/core/bootstrap_context_spec.rb +3 -3
  245. data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -66
  246. data/spec/unit/knife/data_bag_from_file_spec.rb +2 -1
  247. data/spec/unit/knife/tag_create_spec.rb +3 -3
  248. data/spec/unit/knife/tag_delete_spec.rb +3 -3
  249. data/spec/unit/knife/user_create_spec.rb +1 -1
  250. data/spec/unit/knife_spec.rb +14 -14
  251. data/spec/unit/lwrp_spec.rb +1 -21
  252. data/spec/unit/mixin/shell_out_spec.rb +92 -0
  253. data/spec/unit/node_spec.rb +0 -4
  254. data/spec/unit/platform/query_helpers_spec.rb +0 -23
  255. data/spec/unit/provider/env/windows_spec.rb +34 -70
  256. data/spec/unit/provider/env_spec.rb +11 -76
  257. data/spec/unit/provider/group/dscl_spec.rb +1 -38
  258. data/spec/unit/provider/log_spec.rb +18 -0
  259. data/spec/unit/provider/package/rpm_spec.rb +0 -12
  260. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +1 -1
  261. data/spec/unit/provider/service/systemd_service_spec.rb +44 -27
  262. data/spec/unit/provider/user/dscl_spec.rb +264 -660
  263. data/spec/unit/provider/user/useradd_spec.rb +0 -1
  264. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +2 -2
  265. data/spec/unit/provider_spec.rb +12 -0
  266. data/spec/unit/recipe_spec.rb +0 -41
  267. data/spec/unit/resource_collection_spec.rb +1 -5
  268. data/spec/unit/resource_reporter_spec.rb +3 -51
  269. data/spec/unit/resource_spec.rb +3 -14
  270. data/spec/unit/rest_spec.rb +1 -4
  271. data/spec/unit/role_spec.rb +0 -10
  272. data/spec/unit/run_list_spec.rb +1 -5
  273. data/spec/unit/user_spec.rb +1 -5
  274. metadata +20 -100
  275. data/lib/chef/mixin/windows_env_helper.rb +0 -56
  276. data/lib/chef/provider/dsc_script.rb +0 -175
  277. data/lib/chef/resource/dsc_script.rb +0 -126
  278. data/lib/chef/streaming_cookbook_uploader.rb +0 -205
  279. data/lib/chef/util/dsc/configuration_generator.rb +0 -115
  280. data/lib/chef/util/dsc/lcm_output_parser.rb +0 -133
  281. data/lib/chef/util/dsc/local_configuration_manager.rb +0 -141
  282. data/lib/chef/util/dsc/resource_info.rb +0 -26
  283. data/lib/chef/util/powershell/cmdlet.rb +0 -136
  284. data/lib/chef/util/powershell/cmdlet_result.rb +0 -46
  285. data/spec/data/mac_users/10.7-8.plist.xml +0 -559
  286. data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
  287. data/spec/data/mac_users/10.7.plist.xml +0 -559
  288. data/spec/data/mac_users/10.7.shadow.xml +0 -11
  289. data/spec/data/mac_users/10.8.plist.xml +0 -559
  290. data/spec/data/mac_users/10.8.shadow.xml +0 -21
  291. data/spec/data/mac_users/10.9.plist.xml +0 -560
  292. data/spec/data/mac_users/10.9.shadow.xml +0 -21
  293. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +0 -51
  294. data/spec/functional/resource/dsc_script_spec.rb +0 -382
  295. data/spec/functional/resource/env_spec.rb +0 -182
  296. data/spec/functional/resource/user/dscl_spec.rb +0 -199
  297. data/spec/functional/util/powershell/cmdlet_spec.rb +0 -113
  298. data/spec/support/lib/chef/resource/zen_follower.rb +0 -46
  299. data/spec/support/shared/shared_examples.rb +0 -10
  300. data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +0 -63
  301. data/spec/unit/formatters/base_spec.rb +0 -48
  302. data/spec/unit/provider/dsc_script_spec.rb +0 -174
  303. data/spec/unit/resource/dsc_script_spec.rb +0 -98
  304. data/spec/unit/util/dsc/configuration_generator_spec.rb +0 -171
  305. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +0 -169
  306. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +0 -139
  307. data/spec/unit/util/powershell/cmdlet_spec.rb +0 -106
@@ -19,7 +19,7 @@ require 'support/shared/integration/integration_helper'
19
19
  require 'chef/knife/list'
20
20
  require 'chef/knife/show'
21
21
 
22
- describe 'chefignore tests', :workstation do
22
+ describe 'chefignore tests' do
23
23
  extend IntegrationSupport
24
24
  include KnifeSupport
25
25
 
@@ -18,7 +18,7 @@
18
18
  require 'support/shared/integration/integration_helper'
19
19
  require 'chef/knife/raw'
20
20
 
21
- describe 'knife common options', :workstation do
21
+ describe 'knife common options' do
22
22
  extend IntegrationSupport
23
23
  include KnifeSupport
24
24
 
@@ -53,10 +53,9 @@ describe 'knife common options', :workstation do
53
53
  # 0.0.0.0 is not a valid address to bind to on windows.
54
54
  context 'And chef_zero.host is 0.0.0.0', :unix_only do
55
55
  before(:each) { Chef::Config.chef_zero.host = '0.0.0.0' }
56
-
56
+
57
57
  it 'knife raw /nodes/x should retrieve the role' do
58
58
  knife('raw /nodes/x').should_succeed /"name": "x"/
59
- Chef::Config.chef_server_url.should == 'http://0.0.0.0:8889'
60
59
  end
61
60
  end
62
61
 
@@ -109,5 +108,53 @@ EOM
109
108
  knife('raw -z --chef-zero-port=9999 /nodes/x').should_succeed /"name": "x"/
110
109
  Chef::Config.chef_server_url.should == 'http://localhost:9999'
111
110
  end
111
+
112
+ context 'when the default port (8889) is already bound' do
113
+ before :each do
114
+ begin
115
+ @server = ChefZero::Server.new(:host => 'localhost', :port => 8889)
116
+ @server.start_background
117
+ rescue Errno::EADDRINUSE
118
+ # OK. Don't care who has it in use, as long as *someone* does.
119
+ end
120
+ end
121
+ after :each do
122
+ @server.stop if @server
123
+ end
124
+
125
+ it 'knife raw -z /nodes/x retrieves the node' do
126
+ knife('raw -z /nodes/x').should_succeed /"name": "x"/
127
+ expect(URI(Chef::Config.chef_server_url).port).to be > 8889
128
+ end
129
+ end
130
+
131
+ context 'when port 9999 is already bound' do
132
+ before :each do
133
+ begin
134
+ @server = ChefZero::Server.new(:host => 'localhost', :port => 9999)
135
+ @server.start_background
136
+ rescue Errno::EADDRINUSE
137
+ # OK. Don't care who has it in use, as long as *someone* does.
138
+ end
139
+ end
140
+ after :each do
141
+ @server.stop if @server
142
+ end
143
+
144
+ it 'knife raw -z --chef-zero-port=9999-20000 /nodes/x' do
145
+ knife('raw -z --chef-zero-port=9999-20000 /nodes/x').should_succeed /"name": "x"/
146
+ expect(URI(Chef::Config.chef_server_url).port).to be > 9999
147
+ end
148
+
149
+ it 'knife raw -z --chef-zero-port=9999-9999,19423' do
150
+ knife('raw -z --chef-zero-port=9999-9999,19423 /nodes/x').should_succeed /"name": "x"/
151
+ expect(URI(Chef::Config.chef_server_url).port).to be == 19423
152
+ end
153
+ end
154
+
155
+ it 'knife raw -z --chef-zero-port=9999 /nodes/x retrieves the node' do
156
+ knife('raw -z --chef-zero-port=9999 /nodes/x').should_succeed /"name": "x"/
157
+ Chef::Config.chef_server_url.should == 'http://localhost:9999'
158
+ end
112
159
  end
113
160
  end
@@ -18,7 +18,7 @@
18
18
  require 'support/shared/integration/integration_helper'
19
19
  require 'chef/mixin/shell_out'
20
20
 
21
- describe "Knife cookbook API integration with IPv6", :workstation do
21
+ describe "Knife cookbook API integration with IPv6" do
22
22
  extend IntegrationSupport
23
23
  include Chef::Mixin::ShellOut
24
24
 
@@ -20,7 +20,7 @@ require 'chef/knife/delete'
20
20
  require 'chef/knife/list'
21
21
  require 'chef/knife/raw'
22
22
 
23
- describe 'knife delete', :workstation do
23
+ describe 'knife delete' do
24
24
  extend IntegrationSupport
25
25
  include KnifeSupport
26
26
 
@@ -19,7 +19,7 @@ require 'support/shared/integration/integration_helper'
19
19
  require 'support/shared/context/config'
20
20
  require 'chef/knife/deps'
21
21
 
22
- describe 'knife deps', :workstation do
22
+ describe 'knife deps' do
23
23
  extend IntegrationSupport
24
24
  include KnifeSupport
25
25
 
@@ -18,7 +18,7 @@
18
18
  require 'support/shared/integration/integration_helper'
19
19
  require 'chef/knife/diff'
20
20
 
21
- describe 'knife diff', :workstation do
21
+ describe 'knife diff' do
22
22
  extend IntegrationSupport
23
23
  include KnifeSupport
24
24
 
@@ -275,7 +275,7 @@ EOM
275
275
  when_the_repository 'has an environment with bad JSON' do
276
276
  file 'environments/x.json', '{'
277
277
  it 'knife diff reports an error and does a textual diff' do
278
- knife('diff /environments/x.json').should_succeed(/- "name": "x"/, :stderr => /WARN: Parse error reading #{path_to('environments/x.json')} as JSON: parse error: premature EOF\n/)
278
+ knife('diff /environments/x.json').should_succeed(/- "name": "x"/, :stderr => "WARN: Parse error reading #{path_to('environments/x.json')} as JSON: A JSON text must at least contain two octets!\n")
279
279
  end
280
280
  end
281
281
  end
@@ -528,7 +528,7 @@ EOM
528
528
  when_the_repository 'has an environment with bad JSON' do
529
529
  file 'environments/x.json', '{'
530
530
  it 'knife diff reports an error and does a textual diff' do
531
- knife('diff /environments/x.json').should_succeed(/- "name": "x"/, :stderr => /WARN: Parse error reading #{path_to('environments/x.json')} as JSON: parse error: premature EOF\n/)
531
+ knife('diff /environments/x.json').should_succeed(/- "name": "x"/, :stderr => "WARN: Parse error reading #{path_to('environments/x.json')} as JSON: A JSON text must at least contain two octets!\n")
532
532
  end
533
533
  end
534
534
  end
@@ -19,7 +19,7 @@ require 'support/shared/integration/integration_helper'
19
19
  require 'chef/knife/download'
20
20
  require 'chef/knife/diff'
21
21
 
22
- describe 'knife download', :workstation do
22
+ describe 'knife download' do
23
23
  extend IntegrationSupport
24
24
  include KnifeSupport
25
25
 
@@ -496,7 +496,7 @@ EOM
496
496
  when_the_repository 'has an environment with bad JSON' do
497
497
  file 'environments/x.json', '{'
498
498
  it 'knife download succeeds' do
499
- knife('download /environments/x.json').should_succeed "Updated /environments/x.json\n", :stderr => /WARN: Parse error reading #{path_to('environments/x.json')} as JSON: parse error: premature EOF\n/
499
+ knife('download /environments/x.json').should_succeed "Updated /environments/x.json\n", :stderr => "WARN: Parse error reading #{path_to('environments/x.json')} as JSON: A JSON text must at least contain two octets!\n"
500
500
  knife('diff --name-status /environments/x.json').should_succeed ''
501
501
  end
502
502
  end
@@ -946,7 +946,7 @@ EOM
946
946
  when_the_repository 'has an environment with bad JSON' do
947
947
  file 'environments/x.json', '{'
948
948
  it 'knife download succeeds' do
949
- knife('download /environments/x.json').should_succeed "Updated /environments/x.json\n", :stderr => /WARN: Parse error reading #{path_to('environments/x.json')} as JSON: parse error: premature EOF\n/
949
+ knife('download /environments/x.json').should_succeed "Updated /environments/x.json\n", :stderr => "WARN: Parse error reading #{path_to('environments/x.json')} as JSON: A JSON text must at least contain two octets!\n"
950
950
  knife('diff --name-status /environments/x.json').should_succeed ''
951
951
  end
952
952
  end
@@ -19,7 +19,7 @@ require 'support/shared/integration/integration_helper'
19
19
  require 'support/shared/context/config'
20
20
  require 'chef/knife/list'
21
21
 
22
- describe 'knife list', :workstation do
22
+ describe 'knife list' do
23
23
  extend IntegrationSupport
24
24
  include KnifeSupport
25
25
 
@@ -20,7 +20,7 @@ require 'support/shared/context/config'
20
20
  require 'chef/knife/raw'
21
21
  require 'chef/knife/show'
22
22
 
23
- describe 'knife raw', :workstation do
23
+ describe 'knife raw' do
24
24
  extend IntegrationSupport
25
25
  include KnifeSupport
26
26
  include AppServerSupport
@@ -44,16 +44,12 @@ describe 'knife raw', :workstation do
44
44
  "chef_type": "node",
45
45
  "chef_environment": "_default",
46
46
  "override": {
47
-
48
47
  },
49
48
  "normal": {
50
-
51
49
  },
52
50
  "default": {
53
-
54
51
  },
55
52
  "automatic": {
56
-
57
53
  },
58
54
  "run_list": [
59
55
 
@@ -74,16 +70,13 @@ EOM
74
70
  "json_class": "Chef::Role",
75
71
  "chef_type": "role",
76
72
  "default_attributes": {
77
-
78
73
  },
79
74
  "override_attributes": {
80
-
81
75
  },
82
76
  "run_list": [
83
77
 
84
78
  ],
85
79
  "env_run_lists": {
86
-
87
80
  }
88
81
  }
89
82
  EOM
@@ -118,16 +111,13 @@ EOM
118
111
  "json_class": "Chef::Role",
119
112
  "chef_type": "role",
120
113
  "default_attributes": {
121
-
122
114
  },
123
115
  "override_attributes": {
124
-
125
116
  },
126
117
  "run_list": [
127
118
 
128
119
  ],
129
120
  "env_run_lists": {
130
-
131
121
  }
132
122
  }
133
123
  EOM
@@ -19,7 +19,7 @@ require 'support/shared/integration/integration_helper'
19
19
  require 'support/shared/context/config'
20
20
  require 'chef/knife/list'
21
21
 
22
- describe 'redirection', :workstation do
22
+ describe 'redirection' do
23
23
  extend IntegrationSupport
24
24
  include KnifeSupport
25
25
  include AppServerSupport
@@ -19,7 +19,7 @@ require 'support/shared/integration/integration_helper'
19
19
  require 'chef/knife/serve'
20
20
  require 'chef/server_api'
21
21
 
22
- describe 'knife serve', :workstation do
22
+ describe 'knife serve' do
23
23
  extend IntegrationSupport
24
24
  include KnifeSupport
25
25
  include AppServerSupport
@@ -31,7 +31,7 @@ describe 'knife serve', :workstation do
31
31
  exception = nil
32
32
  t = Thread.new do
33
33
  begin
34
- knife('serve')
34
+ knife('serve --chef-zero-port=8889')
35
35
  rescue
36
36
  exception = $!
37
37
  end
@@ -19,7 +19,7 @@ require 'support/shared/integration/integration_helper'
19
19
  require 'support/shared/context/config'
20
20
  require 'chef/knife/show'
21
21
 
22
- describe 'knife show', :workstation do
22
+ describe 'knife show' do
23
23
  extend IntegrationSupport
24
24
  include KnifeSupport
25
25
 
@@ -20,7 +20,7 @@ require 'chef/knife/upload'
20
20
  require 'chef/knife/diff'
21
21
  require 'chef/knife/raw'
22
22
 
23
- describe 'knife upload', :workstation do
23
+ describe 'knife upload' do
24
24
  extend IntegrationSupport
25
25
  include KnifeSupport
26
26
 
@@ -237,7 +237,7 @@ Created /data_bags/x/y.json
237
237
  EOM
238
238
  knife('diff --name-status /data_bags').should_succeed <<EOM
239
239
  EOM
240
- Chef::JSONCompat.parse(knife('raw /data/x/y').stdout, :create_additions => false).keys.sort.should == [ 'foo', 'id' ]
240
+ JSON.parse(knife('raw /data/x/y').stdout, :create_additions => false).keys.sort.should == [ 'foo', 'id' ]
241
241
  end
242
242
 
243
243
  it 'knife upload /data_bags/x /data_bags/x/y.json uploads x once' do
@@ -256,7 +256,7 @@ Created /data_bags/x
256
256
  Created /data_bags/x/y.json
257
257
  EOM
258
258
  knife('diff --name-status /data_bags').should_succeed ''
259
- result = Chef::JSONCompat.parse(knife('raw /data/x/y').stdout, :create_additions => false)
259
+ result = JSON.parse(knife('raw /data/x/y').stdout, :create_additions => false)
260
260
  result.keys.sort.should == [ 'chef_type', 'data_bag', 'id' ]
261
261
  result['chef_type'].should == 'aaa'
262
262
  result['data_bag'].should == 'bbb'
@@ -528,8 +528,8 @@ EOM
528
528
  when_the_repository 'has an environment with bad JSON' do
529
529
  file 'environments/x.json', '{'
530
530
  it 'knife upload tries and fails' do
531
- knife('upload /environments/x.json').should_fail /WARN: Parse error reading #{path_to('environments/x.json')} as JSON: parse error: premature EOF\n.+ERROR: \/environments\/x.json failed to write: Parse error reading JSON: parse error: premature EOF\n/m
532
- knife('diff --name-status /environments/x.json').should_succeed "M\t/environments/x.json\n", :stderr => /WARN: Parse error reading #{path_to('environments/x.json')} as JSON: parse error: premature EOF\n/
531
+ knife('upload /environments/x.json').should_fail "WARN: Parse error reading #{path_to('environments/x.json')} as JSON: A JSON text must at least contain two octets!\nERROR: /environments/x.json failed to write: Parse error reading JSON: A JSON text must at least contain two octets!\n"
532
+ knife('diff --name-status /environments/x.json').should_succeed "M\t/environments/x.json\n", :stderr => "WARN: Parse error reading #{path_to('environments/x.json')} as JSON: A JSON text must at least contain two octets!\n"
533
533
  end
534
534
  end
535
535
 
@@ -554,7 +554,7 @@ EOM
554
554
  when_the_repository 'has an environment with bad JSON' do
555
555
  file 'environments/x.json', '{'
556
556
  it 'knife upload tries and fails' do
557
- knife('upload /environments/x.json').should_fail /ERROR: \/environments failed to create_child: Parse error reading JSON creating child 'x.json': parse error: premature EOF\n/
557
+ knife('upload /environments/x.json').should_fail "ERROR: /environments failed to create_child: Parse error reading JSON creating child 'x.json': A JSON text must at least contain two octets!\n"
558
558
  knife('diff --name-status /environments/x.json').should_succeed "A\t/environments/x.json\n"
559
559
  end
560
560
  end
@@ -1007,8 +1007,8 @@ EOM
1007
1007
  when_the_repository 'has an environment with bad JSON' do
1008
1008
  file 'environments/x.json', '{'
1009
1009
  it 'knife upload tries and fails' do
1010
- knife('upload /environments/x.json').should_fail /WARN: Parse error reading #{path_to('environments/x.json')} as JSON: parse error: premature EOF\n.+ERROR: \/environments\/x.json failed to write: Parse error reading JSON: parse error: premature EOF\n/m
1011
- knife('diff --name-status /environments/x.json').should_succeed "M\t/environments/x.json\n", :stderr => /WARN: Parse error reading #{path_to('environments/x.json')} as JSON: parse error: premature EOF\n/
1010
+ knife('upload /environments/x.json').should_fail "WARN: Parse error reading #{path_to('environments/x.json')} as JSON: A JSON text must at least contain two octets!\nERROR: /environments/x.json failed to write: Parse error reading JSON: A JSON text must at least contain two octets!\n"
1011
+ knife('diff --name-status /environments/x.json').should_succeed "M\t/environments/x.json\n", :stderr => "WARN: Parse error reading #{path_to('environments/x.json')} as JSON: A JSON text must at least contain two octets!\n"
1012
1012
  end
1013
1013
  end
1014
1014
 
@@ -1033,7 +1033,7 @@ EOM
1033
1033
  when_the_repository 'has an environment with bad JSON' do
1034
1034
  file 'environments/x.json', '{'
1035
1035
  it 'knife upload tries and fails' do
1036
- knife('upload /environments/x.json').should_fail /ERROR: \/environments failed to create_child: Parse error reading JSON creating child 'x.json': parse error: premature EOF\n/
1036
+ knife('upload /environments/x.json').should_fail "ERROR: /environments failed to create_child: Parse error reading JSON creating child 'x.json': A JSON text must at least contain two octets!\n"
1037
1037
  knife('diff --name-status /environments/x.json').should_succeed "A\t/environments/x.json\n"
1038
1038
  end
1039
1039
  end
@@ -97,9 +97,6 @@ RSpec.configure do |config|
97
97
  config.filter_run :focus => true
98
98
  config.filter_run_excluding :external => true
99
99
 
100
- # Only run these tests on platforms that are also chef workstations
101
- config.filter_run_excluding :workstation if solaris?
102
-
103
100
  # Tests that randomly fail, but may have value.
104
101
  config.filter_run_excluding :volatile => true
105
102
  config.filter_run_excluding :volatile_on_solaris => true if solaris?
@@ -110,11 +107,8 @@ RSpec.configure do |config|
110
107
  config.filter_run_excluding :not_supported_on_win2k3 => true if windows_win2k3?
111
108
  config.filter_run_excluding :not_supported_on_solaris => true if solaris?
112
109
  config.filter_run_excluding :win2k3_only => true unless windows_win2k3?
113
- config.filter_run_excluding :windows_2008r2_or_later => true unless windows_2008r2_or_later?
114
110
  config.filter_run_excluding :windows64_only => true unless windows64?
115
111
  config.filter_run_excluding :windows32_only => true unless windows32?
116
- config.filter_run_excluding :windows_powershell_dsc_only => true unless windows_powershell_dsc?
117
- config.filter_run_excluding :windows_powershell_no_dsc_only => true unless ! windows_powershell_dsc?
118
112
  config.filter_run_excluding :windows_domain_joined_only => true unless windows_domain_joined?
119
113
  config.filter_run_excluding :solaris_only => true unless solaris?
120
114
  config.filter_run_excluding :system_windows_service_gem_only => true unless system_windows_service_gem?
@@ -185,6 +179,3 @@ module WEBrick
185
179
  end
186
180
  end
187
181
  end
188
-
189
- # Enough stuff needs json serialization that I'm just adding it here for equality asserts
190
- require 'chef/json_compat'
@@ -21,7 +21,8 @@
21
21
  ################################################################################
22
22
  # You MUST specify the address of the server the API requests will be
23
23
  # sent to. Only specify protocol, hostname, and port.
24
- chef_server 'http://127.0.0.1:8889'
24
+ # NOTE this is assigned in run_pedant.rb, because it's possible 8889 will not be the port chosen.
25
+ #chef_server 'http://127.0.0.1:8889'
25
26
 
26
27
  # If you are doing development testing, you can specify the address of
27
28
  # the Solr server. The presence of this parameter will enable tests
@@ -26,7 +26,7 @@ def start_server(chef_repo_path)
26
26
  chef_fs = Chef::ChefFS::Config.new.local_fs
27
27
  data_store = Chef::ChefFS::ChefFSDataStore.new(chef_fs)
28
28
  data_store = ChefZero::DataStore::V1ToV2Adapter.new(data_store, 'chef', :org_defaults => ChefZero::DataStore::V1ToV2Adapter::ORG_DEFAULTS)
29
- server = ChefZero::Server.new(:port => 8889, :data_store => data_store)#, :log_level => :debug)
29
+ server = ChefZero::Server.new(:port => 8889.upto(9999), :data_store => data_store)#, :log_level => :debug)
30
30
  server.start_background
31
31
  server
32
32
  end
@@ -46,6 +46,7 @@ begin
46
46
 
47
47
  Pedant.config.suite = 'api'
48
48
  Pedant.config[:config_file] = 'spec/support/pedant/pedant_config.rb'
49
+ Pedant.config.chef_server = server.url
49
50
  Pedant.setup([
50
51
  '--skip-knife',
51
52
  '--skip-validation',
@@ -27,6 +27,11 @@ def windows?
27
27
  !!(RUBY_PLATFORM =~ /mswin|mingw|windows/)
28
28
  end
29
29
 
30
+ def ohai
31
+ # This is defined in spec_helper; it has the `platform` populated.
32
+ OHAI_SYSTEM
33
+ end
34
+
30
35
  require 'wmi-lite/wmi' if windows?
31
36
 
32
37
  def windows_domain_joined?
@@ -43,30 +48,6 @@ def windows_win2k3?
43
48
  (host['version'] && host['version'].start_with?("5.2"))
44
49
  end
45
50
 
46
- def windows_2008r2_or_later?
47
- return false unless windows?
48
- wmi = WmiLite::Wmi.new
49
- host = wmi.first_of('Win32_OperatingSystem')
50
- version = host['version']
51
- return false unless version
52
- components = version.split('.').map do | component |
53
- component.to_i
54
- end
55
- components.length >=2 && components[0] >= 6 && components[1] >= 1
56
- end
57
-
58
- def windows_powershell_dsc?
59
- return false unless windows?
60
- supports_dsc = false
61
- begin
62
- wmi = WmiLite::Wmi.new('root/microsoft/windows/desiredstateconfiguration')
63
- lcm = wmi.query("SELECT * FROM meta_class WHERE __this ISA 'MSFT_DSCLocalConfigurationManager'")
64
- supports_dsc = !! lcm
65
- rescue WmiLite::WmiException
66
- end
67
- supports_dsc
68
- end
69
-
70
51
  def mac_osx_106?
71
52
  if File.exists? "/usr/bin/sw_vers"
72
53
  result = shell_out("/usr/bin/sw_vers")
@@ -21,6 +21,7 @@ require 'tmpdir'
21
21
  require 'fileutils'
22
22
  require 'chef/config'
23
23
  require 'chef_zero/rspec'
24
+ require 'json'
24
25
  require 'support/shared/integration/knife_support'
25
26
  require 'support/shared/integration/app_server_support'
26
27
  require 'spec_helper'
@@ -68,7 +69,7 @@ module IntegrationSupport
68
69
  File.open(filename, 'w') do |file|
69
70
  raw = case contents
70
71
  when Hash
71
- Chef::JSONCompat.to_json_pretty(contents)
72
+ JSON.pretty_generate(contents)
72
73
  when Array
73
74
  contents.join("\n")
74
75
  else