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
@@ -1,169 +0,0 @@
1
- #
2
- # Author:: Bryan McLellan <btm@loftninjas.org>
3
- # Copyright:: Copyright (c) 2014 Chef Software, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require 'chef/util/dsc/lcm_output_parser'
20
-
21
- describe Chef::Util::DSC::LocalConfigurationManager::Parser do
22
- context 'empty input parameter' do
23
- it 'returns an empty array for a 0 length string' do
24
- Chef::Util::DSC::LocalConfigurationManager::Parser::parse('').should be_empty
25
- end
26
-
27
- it 'returns an empty array for a nil input' do
28
- Chef::Util::DSC::LocalConfigurationManager::Parser::parse('').should be_empty
29
- end
30
- end
31
-
32
- context 'correctly formatted output from lcm' do
33
- it 'returns an empty array for a log with no resources' do
34
- str = <<EOF
35
- logtype: [machinename]: LCM: [ Start Set ]
36
- logtype: [machinename]: LCM: [ End Set ]
37
- EOF
38
- Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str).should be_empty
39
- end
40
-
41
- it 'returns a single resource when only 1 logged with the correct name' do
42
- str = <<EOF
43
- logtype: [machinename]: LCM: [ Start Set ]
44
- logtype: [machinename]: LCM: [ Start Resource ] [name]
45
- logtype: [machinename]: LCM: [ End Resource ] [name]
46
- logtype: [machinename]: LCM: [ End Set ]
47
- EOF
48
- resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
49
- resources.length.should eq(1)
50
- resources[0].name.should eq('[name]')
51
- end
52
-
53
- it 'identifies when a resource changes the state of the system' do
54
- str = <<EOF
55
- logtype: [machinename]: LCM: [ Start Set ]
56
- logtype: [machinename]: LCM: [ Start Resource ] [name]
57
- logtype: [machinename]: LCM: [ Start Set ] [name]
58
- logtype: [machinename]: LCM: [ End Set ] [name]
59
- logtype: [machinename]: LCM: [ End Resource ] [name]
60
- logtype: [machinename]: LCM: [ End Set ]
61
- EOF
62
- resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
63
- resources[0].changes_state?.should be_true
64
- end
65
-
66
- it 'preserves the log provided for how the system changed the state' do
67
- str = <<EOF
68
- logtype: [machinename]: LCM: [ Start Set ]
69
- logtype: [machinename]: LCM: [ Start Resource ] [name]
70
- logtype: [machinename]: LCM: [ Start Set ] [name]
71
- logtype: [machinename]: [message]
72
- logtype: [machinename]: LCM: [ End Set ] [name]
73
- logtype: [machinename]: LCM: [ End Resource ] [name]
74
- logtype: [machinename]: LCM: [ End Set ]
75
- EOF
76
- resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
77
- resources[0].change_log.should match_array(["[name]","[message]","[name]"])
78
- end
79
-
80
- it 'should return false for changes_state?' do
81
- str = <<EOF
82
- logtype: [machinename]: LCM: [ Start Set ]
83
- logtype: [machinename]: LCM: [ Start Resource ] [name]
84
- logtype: [machinename]: LCM: [ Skip Set ] [name]
85
- logtype: [machinename]: LCM: [ End Resource ] [name]
86
- logtype: [machinename]: LCM: [ End Set ]
87
- EOF
88
- resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
89
- resources[0].changes_state?.should be_false
90
- end
91
-
92
- it 'should return an empty array for change_log if changes_state? is false' do
93
- str = <<EOF
94
- logtype: [machinename]: LCM: [ Start Set ]
95
- logtype: [machinename]: LCM: [ Start Resource ] [name]
96
- logtype: [machinename]: LCM: [ Skip Set ] [name]
97
- logtype: [machinename]: LCM: [ End Resource ] [name]
98
- logtype: [machinename]: LCM: [ End Set ]
99
- EOF
100
- resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
101
- resources[0].change_log.should be_empty
102
- end
103
- end
104
-
105
- context 'Incorrectly formatted output from LCM' do
106
- it 'should allow missing a [End Resource] when its the last one and still find all the resource' do
107
- str = <<-EOF
108
- logtype: [machinename]: LCM: [ Start Set ]
109
- logtype: [machinename]: LCM: [ Start Resource ] [name]
110
- logtype: [machinename]: LCM: [ Start Test ]
111
- logtype: [machinename]: LCM: [ End Test ]
112
- logtype: [machinename]: LCM: [ Skip Set ]
113
- logtype: [machinename]: LCM: [ End Resource ]
114
- logtype: [machinename]: LCM: [ Start Resource ] [name2]
115
- logtype: [machinename]: LCM: [ Start Test ]
116
- logtype: [machinename]: LCM: [ End Test ]
117
- logtype: [machinename]: LCM: [ Start Set ]
118
- logtype: [machinename]: LCM: [ End Set ]
119
- logtype: [machinename]: LCM: [ End Set ]
120
- EOF
121
-
122
- resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
123
- resources[0].changes_state?.should be_false
124
- resources[1].changes_state?.should be_true
125
- end
126
-
127
- it 'should allow missing a [End Resource] when its the first one and still find all the resource' do
128
- str = <<-EOF
129
- logtype: [machinename]: LCM: [ Start Set ]
130
- logtype: [machinename]: LCM: [ Start Resource ] [name]
131
- logtype: [machinename]: LCM: [ Start Test ]
132
- logtype: [machinename]: LCM: [ End Test ]
133
- logtype: [machinename]: LCM: [ Skip Set ]
134
- logtype: [machinename]: LCM: [ Start Resource ] [name2]
135
- logtype: [machinename]: LCM: [ Start Test ]
136
- logtype: [machinename]: LCM: [ End Test ]
137
- logtype: [machinename]: LCM: [ Start Set ]
138
- logtype: [machinename]: LCM: [ End Set ]
139
- logtype: [machinename]: LCM: [ End Resource ]
140
- logtype: [machinename]: LCM: [ End Set ]
141
- EOF
142
-
143
- resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
144
- resources[0].changes_state?.should be_false
145
- resources[1].changes_state?.should be_true
146
- end
147
-
148
- it 'should allow missing set and end resource and assume an unconverged resource in this case' do
149
- str = <<-EOF
150
- logtype: [machinename]: LCM: [ Start Set ]
151
- logtype: [machinename]: LCM: [ Start Resource ] [name]
152
- logtype: [machinename]: LCM: [ Start Test ]
153
- logtype: [machinename]: LCM: [ End Test ]
154
- logtype: [machinename]: LCM: [ Start Resource ] [name2]
155
- logtype: [machinename]: LCM: [ Start Test ]
156
- logtype: [machinename]: LCM: [ End Test ]
157
- logtype: [machinename]: LCM: [ Start Set ]
158
- logtype: [machinename]: LCM: [ End Set ]
159
- logtype: [machinename]: LCM: [ End Resource ]
160
- logtype: [machinename]: LCM: [ End Set ]
161
- EOF
162
- resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
163
- resources[0].changes_state?.should be_true
164
- resources[0].name.should eql('[name]')
165
- resources[1].changes_state?.should be_true
166
- resources[1].name.should eql('[name2]')
167
- end
168
- end
169
- end
@@ -1,139 +0,0 @@
1
- #
2
- # Author:: Adam Edwards <adamed@getchef.com>
3
- # Copyright:: Copyright (c) 2014 Chef Software, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require 'chef'
20
- require 'chef/util/dsc/local_configuration_manager'
21
-
22
- describe Chef::Util::DSC::LocalConfigurationManager do
23
-
24
- let(:lcm) { Chef::Util::DSC::LocalConfigurationManager.new(nil, 'tmp') }
25
-
26
- let(:normal_lcm_output) { <<-EOH
27
- logtype: [machinename]: LCM: [ Start Set ]
28
- logtype: [machinename]: LCM: [ Start Resource ] [name]
29
- logtype: [machinename]: LCM: [ End Resource ] [name]
30
- logtype: [machinename]: LCM: [ End Set ]
31
- EOH
32
- }
33
-
34
- let(:no_whatif_lcm_output) { <<-EOH
35
- Start-DscConfiguration : A parameter cannot be found\r\n that matches parameter name 'whatif'.
36
- At line:1 char:123
37
- + run-somecommand -whatif
38
- + ~~~~~~~~
39
- + CategoryInfo : InvalidArgument: (:) [Start-DscConfiguration], ParameterBindingException
40
- + FullyQualifiedErrorId : NamedParameterNotFound,SomeCompany.SomeAssembly.Commands.RunSomeCommand
41
- EOH
42
- }
43
-
44
- let(:dsc_resource_import_failure_output) { <<-EOH
45
- PowerShell provider MSFT_xWebsite failed to execute Test-TargetResource functionality with error message: Please ensure that WebAdministration module is installed. + CategoryInfo : InvalidOperation: (:) [], CimException + FullyQualifiedErrorId : ProviderOperationExecutionFailure + PSComputerName : . PowerShell provider MSFT_xWebsite failed to execute Test-TargetResource functionality with error message: Please ensure that WebAdministration module is installed. + CategoryInfo : InvalidOperation: (:) [], CimException + FullyQualifiedErrorId : ProviderOperationExecutionFailure + PSComputerName : . The SendConfigurationApply function did not succeed. + CategoryInfo : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException + FullyQualifiedErrorId : MI RESULT 1 + PSComputerName : .
46
- EOH
47
- }
48
-
49
- let(:lcm_status) {
50
- double("LCM cmdlet status", :stderr => lcm_standard_error, :return_value => lcm_standard_output, :succeeded? => lcm_cmdlet_success)
51
- }
52
-
53
- describe 'test_configuration method invocation' do
54
- context 'when interacting with the LCM using a PowerShell cmdlet' do
55
- before(:each) do
56
- allow(lcm).to receive(:run_configuration_cmdlet).and_return(lcm_status)
57
- end
58
- context 'that returns successfully' do
59
- before(:each) do
60
- allow(lcm).to receive(:run_configuration_cmdlet).and_return(lcm_status)
61
- end
62
-
63
- let(:lcm_standard_output) { normal_lcm_output }
64
- let(:lcm_standard_error) { nil }
65
- let(:lcm_cmdlet_success) { true }
66
-
67
- it 'should successfully return resource information for normally formatted output when cmdlet the cmdlet succeeds' do
68
- test_configuration_result = lcm.test_configuration('config')
69
- expect(test_configuration_result.class).to be(Array)
70
- expect(test_configuration_result.length).to be > 0
71
- expect(Chef::Log).not_to receive(:warn)
72
- end
73
- end
74
-
75
- context 'that fails due to missing what-if switch in DSC resource cmdlet implementation' do
76
- let(:lcm_standard_output) { '' }
77
- let(:lcm_standard_error) { no_whatif_lcm_output }
78
- let(:lcm_cmdlet_success) { false }
79
-
80
- it 'returns true when passed to #whatif_not_supported?' do
81
- expect(lcm.send(:whatif_not_supported?, no_whatif_lcm_output)).to be_true
82
- end
83
-
84
- it 'should should return a (possibly empty) array of ResourceInfo instances' do
85
- expect(Chef::Log).to receive(:warn)
86
- expect(lcm).to receive(:whatif_not_supported?).and_call_original
87
- test_configuration_result = nil
88
- expect {test_configuration_result = lcm.test_configuration('config')}.not_to raise_error
89
- expect(test_configuration_result.class).to be(Array)
90
- end
91
- end
92
-
93
- context 'that fails due to a DSC resource not being imported before StartDSCConfiguration -whatif is executed' do
94
- let(:lcm_standard_output) { '' }
95
- let(:lcm_standard_error) { dsc_resource_import_failure_output }
96
- let(:lcm_cmdlet_success) { false }
97
-
98
- it 'should log a warning if the message is formatted as expected when a resource import failure occurs' do
99
- expect(Chef::Log).to receive(:warn)
100
- expect(lcm).to receive(:dsc_module_import_failure?).and_call_original
101
- test_configuration_result = nil
102
- expect {test_configuration_result = lcm.test_configuration('config')}.not_to raise_error
103
- end
104
-
105
- it 'should return a (possibly empty) array of ResourceInfo instances' do
106
- expect(Chef::Log).to receive(:warn)
107
- test_configuration_result = nil
108
- expect {test_configuration_result = lcm.test_configuration('config')}.not_to raise_error
109
- expect(test_configuration_result.class).to be(Array)
110
- end
111
- end
112
-
113
- context 'that fails due to an unknown PowerShell cmdlet error' do
114
- let(:lcm_standard_output) { 'some output' }
115
- let(:lcm_standard_error) { 'Abort, Retry, Fail?' }
116
- let(:lcm_cmdlet_success) { false }
117
-
118
- it 'should log a warning' do
119
- expect(Chef::Log).to receive(:warn)
120
- expect(lcm).to receive(:dsc_module_import_failure?).and_call_original
121
- expect {lcm.test_configuration('config')}.not_to raise_error
122
- end
123
- end
124
- end
125
-
126
- it 'should identify a correctly formatted error message as a resource import failure' do
127
- expect(lcm.send(:dsc_module_import_failure?, dsc_resource_import_failure_output)).to be(true)
128
- end
129
-
130
- it 'should not identify an incorrectly formatted error message as a resource import failure' do
131
- expect(lcm.send(:dsc_module_import_failure?, dsc_resource_import_failure_output.gsub('module', 'gibberish'))).to be(false)
132
- end
133
-
134
- it 'should not identify a message without a CimException reference as a resource import failure' do
135
- expect(lcm.send(:dsc_module_import_failure?, dsc_resource_import_failure_output.gsub('CimException', 'ArgumentException'))).to be(false)
136
- end
137
- end
138
- end
139
-
@@ -1,106 +0,0 @@
1
- #
2
- # Author:: Jay Mundrawala <jdm@getchef.com>
3
- # Copyright:: Copyright (c) 2014 Chef Software, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require 'chef'
20
- require 'chef/util/powershell/cmdlet'
21
-
22
- describe Chef::Util::Powershell::Cmdlet do
23
- before (:all) do
24
- @node = Chef::Node.new
25
- @cmdlet = Chef::Util::Powershell::Cmdlet.new(@node, 'Some-Commandlet')
26
- end
27
-
28
- describe '#validate_switch_name!' do
29
- it 'should not raise an error if a name contains all upper case letters' do
30
- @cmdlet.send(:validate_switch_name!, "HELLO")
31
- end
32
-
33
- it 'should not raise an error if the name contains all lower case letters' do
34
- @cmdlet.send(:validate_switch_name!, "hello")
35
- end
36
-
37
- it 'should not raise an error if no special characters are used except _' do
38
- @cmdlet.send(:validate_switch_name!, "hello_world")
39
- end
40
-
41
- %w{! @ # $ % ^ & * & * ( ) - = + \{ \} . ? < > \\ /}.each do |sym|
42
- it "raises an Argument error if it configuration name contains #{sym}" do
43
- expect {
44
- @cmdlet.send(:validate_switch_name!, "Hello#{sym}")
45
- }.to raise_error(ArgumentError)
46
- end
47
- end
48
- end
49
-
50
- describe '#escape_parameter_value' do
51
- # Is this list really complete?
52
- %w{` " # '}.each do |c|
53
- it "escapse #{c}" do
54
- @cmdlet.send(:escape_parameter_value, "stuff #{c}").should eql("stuff `#{c}")
55
- end
56
- end
57
-
58
- it 'does not do anything to a string without special characters' do
59
- @cmdlet.send(:escape_parameter_value, 'stuff').should eql('stuff')
60
- end
61
- end
62
-
63
- describe '#escape_string_parameter_value' do
64
- it "surrounds a string with ''" do
65
- @cmdlet.send(:escape_string_parameter_value, 'stuff').should eql("'stuff'")
66
- end
67
- end
68
-
69
- describe '#command_switches_string' do
70
- it 'raises an ArgumentError if the key is not a symbol' do
71
- expect {
72
- @cmdlet.send(:command_switches_string, {'foo' => 'bar'})
73
- }.to raise_error(ArgumentError)
74
- end
75
-
76
- it 'does not allow invalid switch names' do
77
- expect {
78
- @cmdlet.send(:command_switches_string, {:foo! => 'bar'})
79
- }.to raise_error(ArgumentError)
80
- end
81
-
82
- it 'ignores switches with a false value' do
83
- @cmdlet.send(:command_switches_string, {:foo => false}).should eql('')
84
- end
85
-
86
- it 'should correctly handle a value type of string' do
87
- @cmdlet.send(:command_switches_string, {:foo => 'bar'}).should eql("-foo 'bar'")
88
- end
89
-
90
- it 'should correctly handle a value type of string even when it is 0 length' do
91
- @cmdlet.send(:command_switches_string, {:foo => ''}).should eql("-foo ''")
92
- end
93
-
94
- it 'should not quote integers' do
95
- @cmdlet.send(:command_switches_string, {:foo => 1}).should eql("-foo 1")
96
- end
97
-
98
- it 'should not quote floats' do
99
- @cmdlet.send(:command_switches_string, {:foo => 1.0}).should eql("-foo 1.0")
100
- end
101
-
102
- it 'has just the switch when the value is true' do
103
- @cmdlet.send(:command_switches_string, {:foo => true}).should eql("-foo")
104
- end
105
- end
106
- end