chef 15.4.45-universal-mingw32 → 15.5.9-universal-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 (246) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -3
  3. data/Rakefile +5 -3
  4. data/chef.gemspec +2 -1
  5. data/ext/win32-eventlog/Rakefile +9 -1
  6. data/ext/win32-eventlog/{chef-log.man → chef-log.man.erb} +4 -4
  7. data/lib/chef/application.rb +2 -2
  8. data/lib/chef/application/client.rb +1 -1
  9. data/lib/chef/application/knife.rb +1 -0
  10. data/lib/chef/application/solo.rb +1 -1
  11. data/lib/chef/chef_class.rb +1 -6
  12. data/lib/chef/chef_fs.rb +1 -1
  13. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  14. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +2 -2
  15. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +2 -2
  16. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +7 -1
  18. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +4 -3
  19. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
  20. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +1 -1
  21. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -3
  22. data/lib/chef/chef_fs/knife.rb +1 -1
  23. data/lib/chef/chef_fs/path_utils.rb +2 -2
  24. data/lib/chef/client.rb +4 -5
  25. data/lib/chef/config.rb +3 -2
  26. data/lib/chef/cookbook/chefignore.rb +16 -11
  27. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  28. data/lib/chef/cookbook/syntax_check.rb +5 -3
  29. data/lib/chef/cookbook_loader.rb +3 -3
  30. data/lib/chef/cookbook_uploader.rb +1 -1
  31. data/lib/chef/data_collector.rb +2 -2
  32. data/lib/chef/data_collector/run_end_message.rb +1 -0
  33. data/lib/chef/deprecated.rb +4 -0
  34. data/lib/chef/dsl/core.rb +1 -1
  35. data/lib/chef/dsl/platform_introspection.rb +9 -18
  36. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  37. data/lib/chef/file_content_management/deploy.rb +3 -3
  38. data/lib/chef/file_content_management/deploy/mv_windows.rb +2 -2
  39. data/lib/chef/file_content_management/tempfile.rb +1 -1
  40. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  41. data/lib/chef/http.rb +1 -1
  42. data/lib/chef/http/socketless_chef_zero_client.rb +1 -1
  43. data/lib/chef/knife.rb +4 -3
  44. data/lib/chef/knife/config_get.rb +2 -1
  45. data/lib/chef/knife/configure.rb +1 -1
  46. data/lib/chef/knife/cookbook_metadata_from_file.rb +6 -0
  47. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  48. data/lib/chef/knife/core/status_presenter.rb +1 -1
  49. data/lib/chef/knife/ssh.rb +6 -0
  50. data/lib/chef/local_mode.rb +1 -1
  51. data/lib/chef/mash.rb +21 -232
  52. data/lib/chef/mixin/file_class.rb +2 -2
  53. data/lib/chef/mixin/lazy_module_include.rb +1 -1
  54. data/lib/chef/mixin/path_sanity.rb +3 -39
  55. data/lib/chef/mixin/securable.rb +1 -1
  56. data/lib/chef/mixin/shell_out.rb +4 -5
  57. data/lib/chef/mixin/template.rb +1 -1
  58. data/lib/chef/mixin/user_context.rb +3 -3
  59. data/lib/chef/mixin/which.rb +10 -38
  60. data/lib/chef/mixin/windows_architecture_helper.rb +6 -6
  61. data/lib/chef/mixin/windows_env_helper.rb +5 -5
  62. data/lib/chef/node/attribute.rb +2 -2
  63. data/lib/chef/node_map.rb +17 -4
  64. data/lib/chef/platform/query_helpers.rb +4 -2
  65. data/lib/chef/platform/rebooter.rb +1 -1
  66. data/lib/chef/platform/service_helpers.rb +14 -85
  67. data/lib/chef/provider.rb +2 -0
  68. data/lib/chef/provider/file.rb +2 -2
  69. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  70. data/lib/chef/provider/link.rb +3 -3
  71. data/lib/chef/provider/mount/solaris.rb +1 -1
  72. data/lib/chef/provider/package/yum.rb +1 -1
  73. data/lib/chef/provider/registry_key.rb +1 -1
  74. data/lib/chef/provider/remote_directory.rb +3 -3
  75. data/lib/chef/provider/remote_file/fetcher.rb +2 -2
  76. data/lib/chef/provider/remote_file/local_file.rb +1 -1
  77. data/lib/chef/provider/script.rb +3 -3
  78. data/lib/chef/provider/service.rb +5 -2
  79. data/lib/chef/provider/service/arch.rb +1 -1
  80. data/lib/chef/provider/service/debian.rb +4 -4
  81. data/lib/chef/provider/service/init.rb +1 -1
  82. data/lib/chef/provider/service/insserv.rb +4 -4
  83. data/lib/chef/provider/service/invokercd.rb +4 -4
  84. data/lib/chef/provider/service/redhat.rb +4 -4
  85. data/lib/chef/provider/service/systemd.rb +19 -3
  86. data/lib/chef/provider/service/upstart.rb +3 -3
  87. data/lib/chef/provider/subversion.rb +1 -1
  88. data/lib/chef/provider/systemd_unit.rb +26 -2
  89. data/lib/chef/provider/windows_path.rb +3 -3
  90. data/lib/chef/provider/windows_task.rb +4 -4
  91. data/lib/chef/resource.rb +1 -0
  92. data/lib/chef/resource/bash.rb +2 -0
  93. data/lib/chef/resource/batch.rb +2 -0
  94. data/lib/chef/resource/breakpoint.rb +3 -1
  95. data/lib/chef/resource/build_essential.rb +3 -3
  96. data/lib/chef/resource/chef_sleep.rb +70 -0
  97. data/lib/chef/resource/cookbook_file.rb +2 -1
  98. data/lib/chef/resource/csh.rb +2 -0
  99. data/lib/chef/resource/directory.rb +2 -0
  100. data/lib/chef/resource/dmg_package.rb +1 -1
  101. data/lib/chef/resource/dnf_package.rb +1 -1
  102. data/lib/chef/resource/execute.rb +2 -0
  103. data/lib/chef/resource/file.rb +2 -1
  104. data/lib/chef/resource/git.rb +2 -0
  105. data/lib/chef/resource/group.rb +1 -1
  106. data/lib/chef/resource/homebrew_package.rb +1 -1
  107. data/lib/chef/resource/http_request.rb +2 -0
  108. data/lib/chef/resource/ifconfig.rb +3 -1
  109. data/lib/chef/resource/ksh.rb +2 -0
  110. data/lib/chef/resource/link.rb +4 -2
  111. data/lib/chef/resource/locale.rb +1 -1
  112. data/lib/chef/resource/log.rb +2 -0
  113. data/lib/chef/resource/ohai.rb +2 -0
  114. data/lib/chef/resource/perl.rb +2 -0
  115. data/lib/chef/resource/python.rb +2 -0
  116. data/lib/chef/resource/reboot.rb +2 -0
  117. data/lib/chef/resource/registry_key.rb +2 -0
  118. data/lib/chef/resource/remote_directory.rb +3 -2
  119. data/lib/chef/resource/remote_file.rb +1 -0
  120. data/lib/chef/resource/ruby.rb +2 -0
  121. data/lib/chef/resource/ruby_block.rb +2 -0
  122. data/lib/chef/resource/scm.rb +2 -0
  123. data/lib/chef/resource/script.rb +2 -0
  124. data/lib/chef/resource/service.rb +9 -1
  125. data/lib/chef/resource/solaris_package.rb +1 -1
  126. data/lib/chef/resource/subversion.rb +2 -0
  127. data/lib/chef/resource/sudo.rb +1 -1
  128. data/lib/chef/resource/systemd_unit.rb +1 -0
  129. data/lib/chef/resource/template.rb +2 -0
  130. data/lib/chef/resource/user.rb +2 -0
  131. data/lib/chef/resource/user/aix_user.rb +2 -0
  132. data/lib/chef/resource/user/linux_user.rb +2 -0
  133. data/lib/chef/resource/user/pw_user.rb +2 -0
  134. data/lib/chef/resource/user/solaris_user.rb +2 -0
  135. data/lib/chef/resource/user/windows_user.rb +2 -0
  136. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  137. data/lib/chef/resource/windows_ad_join.rb +1 -1
  138. data/lib/chef/resource/windows_env.rb +1 -1
  139. data/lib/chef/resource/windows_feature.rb +2 -2
  140. data/lib/chef/resource/windows_feature_powershell.rb +1 -1
  141. data/lib/chef/resource/windows_firewall_rule.rb +11 -6
  142. data/lib/chef/resource/windows_script.rb +3 -1
  143. data/lib/chef/resource/yum_package.rb +1 -1
  144. data/lib/chef/resource_reporter.rb +1 -1
  145. data/lib/chef/resources.rb +1 -0
  146. data/lib/chef/run_context.rb +1 -1
  147. data/lib/chef/run_lock.rb +5 -5
  148. data/lib/chef/search/query.rb +0 -3
  149. data/lib/chef/train_transport.rb +3 -1
  150. data/lib/chef/util/powershell/ps_credential.rb +2 -2
  151. data/lib/chef/util/selinux.rb +1 -1
  152. data/lib/chef/util/windows/logon_session.rb +2 -2
  153. data/lib/chef/version.rb +1 -1
  154. data/lib/chef/win32/eventlog.rb +2 -2
  155. data/spec/data/cookbooks/starter/chefignore +8 -0
  156. data/spec/data/cookbooks/starter/files/sample.txt +1 -0
  157. data/spec/data/cookbooks/starter/metadata.rb +2 -0
  158. data/spec/data/cookbooks/starter/recipes/default.rb +4 -0
  159. data/spec/functional/event_loggers/windows_eventlog_spec.rb +1 -1
  160. data/spec/functional/mixin/user_context_spec.rb +2 -2
  161. data/spec/functional/rebooter_spec.rb +1 -1
  162. data/spec/functional/resource/cookbook_file_spec.rb +2 -2
  163. data/spec/functional/resource/template_spec.rb +1 -1
  164. data/spec/functional/version_spec.rb +1 -1
  165. data/spec/functional/win32/crypto_spec.rb +1 -1
  166. data/spec/functional/win32/security_spec.rb +1 -1
  167. data/spec/functional/win32/service_manager_spec.rb +1 -1
  168. data/spec/functional/win32/sid_spec.rb +2 -2
  169. data/spec/functional/win32/version_info_spec.rb +1 -1
  170. data/spec/functional/win32/versions_spec.rb +1 -1
  171. data/spec/integration/knife/config_get_profile_spec.rb +2 -2
  172. data/spec/integration/knife/config_get_spec.rb +9 -2
  173. data/spec/integration/knife/config_list_profiles_spec.rb +2 -2
  174. data/spec/integration/knife/config_use_profile_spec.rb +2 -2
  175. data/spec/integration/knife/list_spec.rb +2 -2
  176. data/spec/integration/solo/solo_spec.rb +1 -1
  177. data/spec/support/matchers/leak.rb +1 -1
  178. data/spec/support/mock/platform.rb +1 -1
  179. data/spec/support/platform_helpers.rb +2 -0
  180. data/spec/support/shared/integration/integration_helper.rb +1 -1
  181. data/spec/support/shared/integration/knife_support.rb +1 -1
  182. data/spec/support/shared/unit/provider/file.rb +4 -4
  183. data/spec/unit/application/client_spec.rb +2 -2
  184. data/spec/unit/application/knife_spec.rb +17 -0
  185. data/spec/unit/application_spec.rb +1 -1
  186. data/spec/unit/chef_fs/file_pattern_spec.rb +2 -2
  187. data/spec/unit/chef_fs/path_util_spec.rb +3 -3
  188. data/spec/unit/client_spec.rb +2 -2
  189. data/spec/unit/cookbook/chefignore_spec.rb +31 -11
  190. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +1 -1
  191. data/spec/unit/cookbook/syntax_check_spec.rb +2 -2
  192. data/spec/unit/cookbook_loader_spec.rb +2 -2
  193. data/spec/unit/cookbook_uploader_spec.rb +6 -1
  194. data/spec/unit/data_bag_spec.rb +2 -2
  195. data/spec/unit/data_collector_spec.rb +7 -0
  196. data/spec/unit/dsl/platform_introspection_spec.rb +31 -1
  197. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +1 -1
  198. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +1 -1
  199. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +7 -0
  200. data/spec/unit/knife/cookbook_show_spec.rb +1 -1
  201. data/spec/unit/knife/core/gem_glob_loader_spec.rb +1 -1
  202. data/spec/unit/knife/core/hashed_command_loader_spec.rb +1 -1
  203. data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
  204. data/spec/unit/knife/core/ui_spec.rb +2 -2
  205. data/spec/unit/knife/data_bag_from_file_spec.rb +2 -2
  206. data/spec/unit/knife/environment_from_file_spec.rb +2 -2
  207. data/spec/unit/knife/ssh_spec.rb +27 -17
  208. data/spec/unit/knife/status_spec.rb +1 -1
  209. data/spec/unit/knife/supermarket_install_spec.rb +1 -1
  210. data/spec/unit/mixin/path_sanity_spec.rb +3 -3
  211. data/spec/unit/mixin/shell_out_spec.rb +2 -3
  212. data/spec/unit/mixin/template_spec.rb +4 -4
  213. data/spec/unit/mixin/user_context_spec.rb +3 -3
  214. data/spec/unit/node_map_spec.rb +12 -12
  215. data/spec/unit/platform/query_helpers_spec.rb +9 -9
  216. data/spec/unit/provider/execute_spec.rb +1 -1
  217. data/spec/unit/provider/link_spec.rb +5 -5
  218. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  219. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  220. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  221. data/spec/unit/provider/package/windows_spec.rb +2 -2
  222. data/spec/unit/provider/remote_file/fetcher_spec.rb +2 -2
  223. data/spec/unit/provider/remote_file/local_file_spec.rb +1 -1
  224. data/spec/unit/provider/remote_file/network_file_spec.rb +1 -1
  225. data/spec/unit/provider/script_spec.rb +2 -2
  226. data/spec/unit/provider/service/systemd_service_spec.rb +26 -2
  227. data/spec/unit/provider/subversion_spec.rb +3 -3
  228. data/spec/unit/provider/systemd_unit_spec.rb +53 -4
  229. data/spec/unit/provider/user/dscl_spec.rb +1 -1
  230. data/spec/unit/provider_resolver_spec.rb +41 -61
  231. data/spec/unit/resource/chef_sleep_spec.rb +30 -0
  232. data/spec/unit/resource/cookbook_file_spec.rb +3 -3
  233. data/spec/unit/resource/remote_file_spec.rb +3 -3
  234. data/spec/unit/resource/windows_firewall_rule_spec.rb +69 -12
  235. data/spec/unit/role_spec.rb +2 -2
  236. data/spec/unit/shell_spec.rb +1 -1
  237. data/spec/unit/util/selinux_spec.rb +2 -2
  238. data/spec/unit/win32/error_spec.rb +1 -1
  239. data/spec/unit/win32/link_spec.rb +1 -1
  240. data/spec/unit/win32/security_spec.rb +1 -1
  241. data/spec/unit/windows_service_spec.rb +1 -1
  242. data/tasks/docs.rb +10 -2
  243. data/tasks/rspec.rb +8 -6
  244. metadata +33 -9
  245. data/lib/chef/mixin/train_helpers.rb +0 -60
  246. data/spec/unit/mash_spec.rb +0 -51
@@ -104,8 +104,8 @@ describe Chef::NodeMap do
104
104
  end
105
105
 
106
106
  it "returns nil when the platform_family does not match" do
107
- allow(node).to receive(:[]).with(:os).and_return("linux")
108
- allow(node).to receive(:[]).with(:platform_family).and_return("debian")
107
+ node.automatic["os"] = "linux"
108
+ node.automatic["platform_family"] = "debian"
109
109
  expect(node_map.get(node, :thing)).to eql(nil)
110
110
  end
111
111
  end
@@ -174,26 +174,26 @@ describe Chef::NodeMap do
174
174
  end
175
175
 
176
176
  it "returns the value when the node matches" do
177
- allow(node).to receive(:[]).with(:platform_family).and_return("rhel")
178
- allow(node).to receive(:[]).with(:platform_version).and_return("7.0")
177
+ node.automatic["platform_family"] = "rhel"
178
+ node.automatic["platform_version"] = "7.0"
179
179
  expect(node_map.get(node, :thing)).to eql(:foo)
180
180
  end
181
181
 
182
182
  it "returns nil when the block does not match" do
183
- allow(node).to receive(:[]).with(:platform_family).and_return("rhel")
184
- allow(node).to receive(:[]).with(:platform_version).and_return("6.4")
183
+ node.automatic["platform_family"] = "rhel"
184
+ node.automatic["platform_version"] = "6.4"
185
185
  expect(node_map.get(node, :thing)).to eql(nil)
186
186
  end
187
187
 
188
188
  it "returns nil when the platform_family filter does not match" do
189
- allow(node).to receive(:[]).with(:platform_family).and_return("debian")
190
- allow(node).to receive(:[]).with(:platform_version).and_return("7.0")
189
+ node.automatic["platform_family"] = "debian"
190
+ node.automatic["platform_version"] = "7.0"
191
191
  expect(node_map.get(node, :thing)).to eql(nil)
192
192
  end
193
193
 
194
194
  it "returns nil when both do not match" do
195
- allow(node).to receive(:[]).with(:platform_family).and_return("debian")
196
- allow(node).to receive(:[]).with(:platform_version).and_return("6.0")
195
+ node.automatic["platform_family"] = "debian"
196
+ node.automatic["platform_version"] = "6.0"
197
197
  expect(node_map.get(node, :thing)).to eql(nil)
198
198
  end
199
199
 
@@ -203,8 +203,8 @@ describe Chef::NodeMap do
203
203
  end
204
204
 
205
205
  it "returns the value when the node matches" do
206
- allow(node).to receive(:[]).with(:platform_family).and_return("rhel")
207
- allow(node).to receive(:[]).with(:platform_version).and_return("7.0")
206
+ node.automatic["platform_family"] = "rhel"
207
+ node.automatic["platform_version"] = "7.0"
208
208
  expect(node_map.get(node, :thing)).to eql(:foo)
209
209
  end
210
210
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Bryan McLellan <btm@loftninjas.org>
3
- # Copyright:: Copyright 2014-2016, Chef Software, Inc.
3
+ # Copyright:: Copyright 2014-2018, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -43,13 +43,13 @@ describe "Chef::Platform#windows_nano_server?" do
43
43
  end
44
44
 
45
45
  it "returns false early when not on windows" do
46
- allow(ChefConfig).to receive(:windows?).and_return(false)
46
+ allow(ChefUtils).to receive(:windows?).and_return(false)
47
47
  expect(Chef::Platform).to_not receive(:require)
48
48
  expect(Chef::Platform.windows_nano_server?).to be false
49
49
  end
50
50
 
51
51
  it "returns true when the registry value is 1" do
52
- allow(ChefConfig).to receive(:windows?).and_return(true)
52
+ allow(ChefUtils).to receive(:windows?).and_return(true)
53
53
  allow(Chef::Platform).to receive(:require).with("win32/registry")
54
54
  expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
55
55
  .with(key, access)
@@ -59,7 +59,7 @@ describe "Chef::Platform#windows_nano_server?" do
59
59
  end
60
60
 
61
61
  it "returns false when the registry value is not 1" do
62
- allow(ChefConfig).to receive(:windows?).and_return(true)
62
+ allow(ChefUtils).to receive(:windows?).and_return(true)
63
63
  allow(Chef::Platform).to receive(:require).with("win32/registry")
64
64
  expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
65
65
  .with(key, access)
@@ -69,7 +69,7 @@ describe "Chef::Platform#windows_nano_server?" do
69
69
  end
70
70
 
71
71
  it "returns false when the registry value does not exist" do
72
- allow(ChefConfig).to receive(:windows?).and_return(true)
72
+ allow(ChefUtils).to receive(:windows?).and_return(true)
73
73
  allow(Chef::Platform).to receive(:require).with("win32/registry")
74
74
  expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
75
75
  .with(key, access)
@@ -80,7 +80,7 @@ describe "Chef::Platform#windows_nano_server?" do
80
80
  end
81
81
 
82
82
  it "returns false when the registry key does not exist" do
83
- allow(ChefConfig).to receive(:windows?).and_return(true)
83
+ allow(ChefUtils).to receive(:windows?).and_return(true)
84
84
  allow(Chef::Platform).to receive(:require).with("win32/registry")
85
85
  expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
86
86
  .with(key, access)
@@ -114,13 +114,13 @@ describe "Chef::Platform#supports_msi?" do
114
114
  end
115
115
 
116
116
  it "returns false early when not on windows" do
117
- allow(ChefConfig).to receive(:windows?).and_return(false)
117
+ allow(ChefUtils).to receive(:windows?).and_return(false)
118
118
  expect(Chef::Platform).to_not receive(:require)
119
119
  expect(Chef::Platform.supports_msi?).to be false
120
120
  end
121
121
 
122
122
  it "returns true when the registry key exists" do
123
- allow(ChefConfig).to receive(:windows?).and_return(true)
123
+ allow(ChefUtils).to receive(:windows?).and_return(true)
124
124
  allow(Chef::Platform).to receive(:require).with("win32/registry")
125
125
  expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
126
126
  .with(key, access)
@@ -129,7 +129,7 @@ describe "Chef::Platform#supports_msi?" do
129
129
  end
130
130
 
131
131
  it "returns false when the registry key does not exist" do
132
- allow(ChefConfig).to receive(:windows?).and_return(true)
132
+ allow(ChefUtils).to receive(:windows?).and_return(true)
133
133
  allow(Chef::Platform).to receive(:require).with("win32/registry")
134
134
  expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
135
135
  .with(key, access)
@@ -42,7 +42,7 @@ describe Chef::Provider::Execute do
42
42
 
43
43
  before do
44
44
  allow(Chef::EventDispatch::EventsOutputStream).to receive(:new) { @live_stream }
45
- allow(ChefConfig).to receive(:windows?) { false }
45
+ allow(ChefUtils).to receive(:windows?) { false }
46
46
  @original_log_level = Chef::Log.level
47
47
  Chef::Log.level = :info
48
48
  allow(STDOUT).to receive(:tty?).and_return(false)
@@ -1,7 +1,7 @@
1
1
  #
2
2
  # Author:: AJ Christensen (<aj@junglist.gen.nz>)
3
3
  # Author:: John Keiser (<jkeiser@chef.io>)
4
- # Copyright:: Copyright 2008-2016, Chef Software Inc.
4
+ # Copyright:: Copyright 2008-2018, Chef Software Inc.
5
5
  # License:: Apache License, Version 2.0
6
6
  #
7
7
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@ require "ostruct"
21
21
 
22
22
  require "spec_helper"
23
23
 
24
- if Chef::Platform.windows?
24
+ if ChefUtils.windows?
25
25
  require "chef/win32/file" # probably need this in spec_helper
26
26
  end
27
27
 
@@ -41,7 +41,7 @@ describe Chef::Resource::Link do
41
41
  end
42
42
 
43
43
  def canonicalize(path)
44
- Chef::Platform.windows? ? path.tr("/", '\\') : path
44
+ ChefUtils.windows? ? path.tr("/", '\\') : path
45
45
  end
46
46
 
47
47
  describe "when the target is a symlink" do
@@ -359,7 +359,7 @@ describe Chef::Resource::Link do
359
359
  provider.new_resource.name
360
360
  ).and_return(resource_link)
361
361
  allow(resource_link).to receive(:verify_links_supported!)
362
- allow(Chef::Platform).to receive(:windows?).and_return(true)
362
+ allow(ChefUtils).to receive(:windows?).and_return(true)
363
363
  end
364
364
 
365
365
  context "soft links" do
@@ -389,7 +389,7 @@ describe Chef::Resource::Link do
389
389
 
390
390
  context "on Linux platform" do
391
391
  before(:each) do
392
- allow(Chef::Platform).to receive(:windows?).and_return(false)
392
+ allow(ChefUtils).to receive(:windows?).and_return(false)
393
393
  end
394
394
 
395
395
  context "soft links" do
@@ -120,7 +120,7 @@ describe Chef::Provider::Package::Openbsd do
120
120
  describe "delete a package" do
121
121
  before do
122
122
  @name = "ihavetoes"
123
- @new_resource = Chef::Resource::Package.new(@name)
123
+ @new_resource = Chef::Resource::Package.new(@name)
124
124
  @current_resource = Chef::Resource::Package.new(@name)
125
125
  @provider = Chef::Provider::Package::Openbsd.new(@new_resource, @run_context)
126
126
  @provider.current_resource = @current_resource
@@ -25,7 +25,7 @@ describe Chef::Provider::Package::SmartOS, "load_current_resource" do
25
25
  @node = Chef::Node.new
26
26
  @events = Chef::EventDispatch::Dispatcher.new
27
27
  @run_context = Chef::RunContext.new(@node, {}, @events)
28
- @new_resource = Chef::Resource::Package.new("varnish")
28
+ @new_resource = Chef::Resource::Package.new("varnish")
29
29
  @current_resource = Chef::Resource::Package.new("varnish")
30
30
 
31
31
  @status = double("Status", exitstatus: 0)
@@ -19,7 +19,7 @@
19
19
  require "spec_helper"
20
20
  require "chef/provider/package/windows/exe"
21
21
 
22
- unless Chef::Platform.windows?
22
+ unless ChefUtils.windows?
23
23
  class Chef
24
24
  module ReservedNames::Win32
25
25
  class File
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Bryan McLellan <btm@loftninjas.org>
3
- # Copyright:: Copyright 2014-2017, Chef Software Inc.
3
+ # Copyright:: Copyright 2014-2018, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +22,7 @@ require "chef/provider/package/windows/msi"
22
22
 
23
23
  describe Chef::Provider::Package::Windows, :windows_only do
24
24
  before(:each) do
25
- allow(Chef::Util::PathHelper).to receive(:windows?).and_return(true)
25
+ allow(ChefUtils).to receive(:windows?).and_return(true)
26
26
  allow(Chef::FileCache).to receive(:create_cache_path).with("package/").and_return(cache_path)
27
27
  end
28
28
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Lamont Granquist (<lamont@chef.io>)
3
- # Copyright:: Copyright 2013-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2013-2018, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,7 @@ describe Chef::Provider::RemoteFile::Fetcher do
27
27
  describe "when passed a network share" do
28
28
  before do
29
29
  expect(Chef::Provider::RemoteFile::NetworkFile).to receive(:new).and_return(fetcher_instance)
30
- allow(Chef::Platform).to receive(:windows?).and_return(true)
30
+ allow(ChefUtils).to receive(:windows?).and_return(true)
31
31
  end
32
32
 
33
33
  context "when host is a name" do
@@ -31,7 +31,7 @@ describe Chef::Provider::RemoteFile::LocalFile do
31
31
  context "when parsing source path on windows" do
32
32
 
33
33
  before do
34
- allow(Chef::Platform).to receive(:windows?).and_return(true)
34
+ allow(ChefUtils).to receive(:windows?).and_return(true)
35
35
  end
36
36
 
37
37
  describe "when given local unix path" do
@@ -33,7 +33,7 @@ describe Chef::Provider::RemoteFile::NetworkFile do
33
33
  let(:source_file) { double("::File", read: nil) }
34
34
 
35
35
  before do
36
- allow(Chef::Platform).to receive(:windows?).and_return(true)
36
+ allow(ChefUtils).to receive(:windows?).and_return(true)
37
37
  end
38
38
 
39
39
  it "stages the local file to a temporary file" do
@@ -59,7 +59,7 @@ describe Chef::Provider::Script, "action_run" do
59
59
  context "when configuring the script file's security" do
60
60
  context "when not running on Windows" do
61
61
  before do
62
- allow(::Chef::Platform).to receive(:windows?).and_return(false)
62
+ allow(ChefUtils).to receive(:windows?).and_return(false)
63
63
  end
64
64
  context "#set_owner_and_group" do
65
65
  it "sets the owner and group for the script file" do
@@ -73,7 +73,7 @@ describe Chef::Provider::Script, "action_run" do
73
73
 
74
74
  context "when running on Windows" do
75
75
  before do
76
- allow(::Chef::Platform).to receive(:windows?).and_return(true)
76
+ allow(ChefUtils).to receive(:windows?).and_return(true)
77
77
  expect(new_resource.user).to eq(nil)
78
78
  stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_READ", 1)
79
79
  stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE", 4)
@@ -36,11 +36,11 @@ describe Chef::Provider::Service::Systemd do
36
36
  let(:provider) { Chef::Provider::Service::Systemd.new(new_resource, run_context) }
37
37
 
38
38
  let(:shell_out_success) do
39
- double("shell_out", exitstatus: 0, error?: false)
39
+ double("shell_out", exitstatus: 0, error?: false, stdout: "")
40
40
  end
41
41
 
42
42
  let(:shell_out_failure) do
43
- double("shell_out", exitstatus: 1, error?: true)
43
+ double("shell_out", exitstatus: 1, error?: true, stdout: "")
44
44
  end
45
45
 
46
46
  let(:current_resource) { Chef::Resource::Service.new(service_name) }
@@ -56,6 +56,7 @@ describe Chef::Provider::Service::Systemd do
56
56
  allow(provider).to receive(:is_active?).and_return(false)
57
57
  allow(provider).to receive(:is_enabled?).and_return(false)
58
58
  allow(provider).to receive(:is_masked?).and_return(false)
59
+ allow(provider).to receive(:is_indirect?).and_return(false)
59
60
  end
60
61
 
61
62
  it "should create a current resource with the name of the new resource" do
@@ -359,6 +360,29 @@ describe Chef::Provider::Service::Systemd do
359
360
  expect(provider.is_masked?).to be false
360
361
  end
361
362
  end
363
+
364
+ describe "is_indirect?" do
365
+ before(:each) do
366
+ provider.current_resource = current_resource
367
+ current_resource.service_name(service_name)
368
+ allow(provider).to receive(:which).with("systemctl").and_return(systemctl_path.to_s)
369
+ end
370
+
371
+ it "should return true if '#{systemctl_path} --system is-enabled service_name' returns 'indirect'" do
372
+ expect(provider).to receive(:shell_out).with("#{systemctl_path} --system is-enabled #{service_name_escaped}", {}).and_return(double(stdout: "indirect", exitstatus: shell_out_success))
373
+ expect(provider.is_indirect?).to be true
374
+ end
375
+
376
+ it "should return false if '#{systemctl_path} --system is-enabled service_name' returns 0 and outputs something other than 'indirect'" do
377
+ expect(provider).to receive(:shell_out).with("#{systemctl_path} --system is-enabled #{service_name_escaped}", {}).and_return(double(stdout: "enabled", exitstatus: shell_out_success))
378
+ expect(provider.is_indirect?).to be false
379
+ end
380
+
381
+ it "should return false if '#{systemctl_path} --system is-enabled service_name' returns anything except 0 and outputs somethign other than 'indirect''" do
382
+ expect(provider).to receive(:shell_out).with("#{systemctl_path} --system is-enabled #{service_name_escaped}", {}).and_return(double(stdout: "enabled", exitstatus: shell_out_failure))
383
+ expect(provider.is_indirect?).to be false
384
+ end
385
+ end
362
386
  end
363
387
  end
364
388
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Daniel DeLeo (<dan@kallistec.com>)
3
- # Copyright:: Copyright 2008-2017, Chef Software Inc.
3
+ # Copyright:: Copyright 2008-2018, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -274,7 +274,7 @@ describe Chef::Provider::Subversion do
274
274
 
275
275
  it "selects 'svn' as the binary by default" do
276
276
  @resource.svn_binary nil
277
- allow(ChefConfig).to receive(:windows?) { false }
277
+ allow(ChefUtils).to receive(:windows?) { false }
278
278
  expect(@provider).to receive(:svn_binary).and_return("svn")
279
279
  expect(@provider.export_command).to eql(
280
280
  "svn export --force -q -r12345 http://svn.example.org/trunk/ /my/deploy/dir"
@@ -283,7 +283,7 @@ describe Chef::Provider::Subversion do
283
283
 
284
284
  it "selects an svn binary with an exe extension on windows" do
285
285
  @resource.svn_binary nil
286
- allow(ChefConfig).to receive(:windows?) { true }
286
+ allow(ChefUtils).to receive(:windows?) { true }
287
287
  expect(@provider).to receive(:svn_binary).and_return("svn.exe")
288
288
  expect(@provider.export_command).to eql(
289
289
  "svn.exe export --force -q -r12345 http://svn.example.org/trunk/ /my/deploy/dir"
@@ -65,11 +65,19 @@ describe Chef::Provider::SystemdUnit do
65
65
  end
66
66
 
67
67
  let(:shell_out_masked) do
68
- double("shell_out", exit_status: 0, error?: false, stdout: "masked")
68
+ double("shell_out", exitstatus: 0, error?: false, stdout: "masked")
69
69
  end
70
70
 
71
71
  let(:shell_out_static) do
72
- double("shell_out", exit_status: 0, error?: false, stdout: "static")
72
+ double("shell_out", exitstatus: 0, error?: false, stdout: "static")
73
+ end
74
+
75
+ let(:shell_out_disabled) do
76
+ double("shell_out", exitstatus: 1, error?: true, stdout: "disabled")
77
+ end
78
+
79
+ let(:shell_out_indirect) do
80
+ double("shell_out", exitstatus: 0, error?: true, stdout: "indirect")
73
81
  end
74
82
 
75
83
  before(:each) do
@@ -859,7 +867,7 @@ describe Chef::Provider::SystemdUnit do
859
867
  current_resource.user(user_name)
860
868
  expect(provider).to receive(:shell_out_compacted)
861
869
  .with(systemctl_path, "--user", "is-enabled", unit_name, user_cmd_opts)
862
- .and_return(shell_out_failure)
870
+ .and_return(shell_out_disabled)
863
871
  expect(provider.enabled?).to be false
864
872
  end
865
873
  end
@@ -875,7 +883,7 @@ describe Chef::Provider::SystemdUnit do
875
883
  it "returns false when unit is not enabled" do
876
884
  expect(provider).to receive(:shell_out_compacted)
877
885
  .with(systemctl_path, "--system", "is-enabled", unit_name)
878
- .and_return(shell_out_failure)
886
+ .and_return(shell_out_disabled)
879
887
  expect(provider.enabled?).to be false
880
888
  end
881
889
  end
@@ -962,6 +970,47 @@ describe Chef::Provider::SystemdUnit do
962
970
  end
963
971
  end
964
972
  end
973
+
974
+ describe "#indirect?" do
975
+ before(:each) do
976
+ provider.current_resource = current_resource
977
+ allow(provider).to receive(:which).with("systemctl").and_return(systemctl_path.to_s)
978
+ end
979
+
980
+ context "when a user is specified" do
981
+ it "returns true when the unit is indirect" do
982
+ current_resource.user(user_name)
983
+ expect(provider).to receive(:shell_out_compacted)
984
+ .with(systemctl_path, "--user", "is-enabled", unit_name, user_cmd_opts)
985
+ .and_return(shell_out_indirect)
986
+ expect(provider.indirect?).to be true
987
+ end
988
+
989
+ it "returns false when the unit is not indirect" do
990
+ current_resource.user(user_name)
991
+ expect(provider).to receive(:shell_out_compacted)
992
+ .with(systemctl_path, "--user", "is-enabled", unit_name, user_cmd_opts)
993
+ .and_return(shell_out_static)
994
+ expect(provider.indirect?).to be false
995
+ end
996
+ end
997
+
998
+ context "when no user is specified" do
999
+ it "returns true when the unit is indirect" do
1000
+ expect(provider).to receive(:shell_out_compacted)
1001
+ .with(systemctl_path, "--system", "is-enabled", unit_name)
1002
+ .and_return(shell_out_indirect)
1003
+ expect(provider.indirect?).to be true
1004
+ end
1005
+
1006
+ it "returns false when the unit is not indirect" do
1007
+ expect(provider).to receive(:shell_out_compacted)
1008
+ .with(systemctl_path, "--system", "is-enabled", unit_name)
1009
+ .and_return(shell_out_static)
1010
+ expect(provider.indirect?).to be false
1011
+ end
1012
+ end
1013
+ end
965
1014
  end
966
1015
  end
967
1016
  end