chef 12.4.3-universal-mingw32 → 12.5.1-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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +21 -25
- data/Gemfile +46 -0
- data/README.md +4 -4
- data/Rakefile +4 -110
- data/bin/chef-service-manager +3 -1
- data/distro/common/html/knife_cookbook_site.html +18 -18
- data/distro/common/man/man1/knife-cookbook-site.1 +11 -11
- data/lib/chef.rb +1 -1
- data/lib/chef/application.rb +1 -1
- data/lib/chef/application/apply.rb +19 -1
- data/lib/chef/application/client.rb +11 -5
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +1 -1
- data/lib/chef/application/windows_service_manager.rb +19 -12
- data/lib/chef/chef_class.rb +46 -0
- data/lib/chef/chef_fs/config.rb +22 -24
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +3 -1
- data/lib/chef/chef_fs/file_pattern.rb +4 -15
- data/lib/chef/chef_fs/file_system/acl_dir.rb +3 -4
- data/lib/chef/chef_fs/file_system/acls_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +0 -5
- data/lib/chef/chef_fs/file_system/base_fs_object.rb +5 -2
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +2 -9
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +2 -9
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +10 -17
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +1 -12
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +15 -11
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +8 -2
- data/lib/chef/chef_fs/file_system/cookbook_dir.rb +4 -4
- data/lib/chef/chef_fs/file_system/cookbooks_acl_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +3 -11
- data/lib/chef/chef_fs/file_system/data_bags_dir.rb +3 -5
- data/lib/chef/chef_fs/file_system/environments_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/file_system_entry.rb +7 -4
- data/lib/chef/chef_fs/file_system/memory_dir.rb +2 -3
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +15 -0
- data/lib/chef/chef_fs/file_system/nodes_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -2
- data/lib/chef/chef_fs/file_system/rest_list_dir.rb +4 -9
- data/lib/chef/chef_fs/knife.rb +35 -7
- data/lib/chef/chef_fs/path_utils.rb +65 -34
- data/lib/chef/client.rb +2 -3
- data/lib/chef/config.rb +34 -2
- data/lib/chef/{mixin/wstring.rb → constants.rb} +9 -13
- data/lib/chef/cookbook/metadata.rb +25 -3
- data/lib/chef/cookbook/synchronizer.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +3 -3
- data/lib/chef/delayed_evaluator.rb +21 -0
- data/lib/chef/deprecation/mixin/template.rb +1 -2
- data/lib/chef/deprecation/provider/cookbook_file.rb +1 -1
- data/lib/chef/deprecation/provider/file.rb +1 -1
- data/lib/chef/deprecation/provider/remote_directory.rb +52 -0
- data/lib/chef/deprecation/provider/remote_file.rb +1 -2
- data/lib/chef/deprecation/provider/template.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +3 -4
- data/lib/chef/dsl/reboot_pending.rb +3 -2
- data/lib/chef/dsl/recipe.rb +26 -7
- data/lib/chef/dsl/resources.rb +2 -2
- data/lib/chef/event_dispatch/base.rb +51 -22
- data/lib/chef/event_dispatch/dispatcher.rb +21 -6
- data/lib/chef/event_dispatch/dsl.rb +64 -0
- data/lib/chef/exceptions.rb +28 -1
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/base.rb +3 -0
- data/lib/chef/formatters/doc.rb +56 -6
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +36 -0
- data/lib/chef/formatters/minimal.rb +2 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -1
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/knife.rb +35 -55
- data/lib/chef/knife/bootstrap.rb +41 -0
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -0
- data/lib/chef/knife/bootstrap/client_builder.rb +16 -0
- data/lib/chef/knife/bootstrap/templates/README.md +3 -4
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +1 -1
- data/lib/chef/knife/cookbook_create.rb +1 -1
- data/lib/chef/knife/cookbook_site_download.rb +1 -1
- data/lib/chef/knife/cookbook_site_install.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +6 -6
- data/lib/chef/knife/cookbook_site_unshare.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +12 -4
- data/lib/chef/knife/core/custom_manifest_loader.rb +69 -0
- data/lib/chef/knife/core/gem_glob_loader.rb +138 -0
- data/lib/chef/knife/core/hashed_command_loader.rb +80 -0
- data/lib/chef/knife/core/node_presenter.rb +24 -1
- data/lib/chef/knife/core/object_loader.rb +1 -0
- data/lib/chef/knife/core/subcommand_loader.rb +131 -146
- data/lib/chef/knife/node_run_list_remove.rb +12 -1
- data/lib/chef/knife/null.rb +10 -0
- data/lib/chef/knife/rehash.rb +62 -0
- data/lib/chef/knife/search.rb +3 -3
- data/lib/chef/knife/ssh.rb +52 -30
- data/lib/chef/knife/ssl_check.rb +3 -2
- data/lib/chef/knife/user_edit.rb +1 -2
- data/lib/chef/local_mode.rb +5 -0
- data/lib/chef/log.rb +5 -1
- data/lib/chef/mixin/deprecation.rb +8 -8
- data/lib/chef/mixin/params_validate.rb +362 -135
- data/lib/chef/mixin/template.rb +48 -0
- data/lib/chef/mixin/which.rb +1 -1
- data/lib/chef/mixin/wide_string.rb +72 -0
- data/lib/chef/mixin/windows_architecture_helper.rb +15 -39
- data/lib/chef/mixin/windows_env_helper.rb +4 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +51 -0
- data/lib/chef/monkey_patches/win32/registry.rb +72 -0
- data/lib/chef/node.rb +116 -3
- data/lib/chef/node_map.rb +2 -2
- data/lib/chef/platform/handler_map.rb +0 -5
- data/lib/chef/platform/provider_mapping.rb +5 -6
- data/lib/chef/platform/query_helpers.rb +46 -4
- data/lib/chef/platform/rebooter.rb +1 -1
- data/lib/chef/platform/service_helpers.rb +30 -32
- data/lib/chef/policy_builder.rb +1 -8
- data/lib/chef/policy_builder/dynamic.rb +186 -0
- data/lib/chef/policy_builder/expand_node_object.rb +30 -15
- data/lib/chef/policy_builder/policyfile.rb +155 -18
- data/lib/chef/property.rb +568 -0
- data/lib/chef/provider.rb +222 -13
- data/lib/chef/provider/batch.rb +8 -0
- data/lib/chef/provider/deploy.rb +5 -7
- data/lib/chef/provider/directory.rb +14 -2
- data/lib/chef/provider/dsc_resource.rb +5 -9
- data/lib/chef/provider/group/pw.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/lwrp_base.rb +1 -75
- data/lib/chef/provider/mount.rb +7 -3
- data/lib/chef/provider/package.rb +1 -1
- data/lib/chef/provider/package/dpkg.rb +5 -11
- data/lib/chef/provider/package/rpm.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +17 -5
- data/lib/chef/provider/powershell_script.rb +59 -23
- data/lib/chef/provider/registry_key.rb +5 -5
- data/lib/chef/provider/remote_directory.rb +190 -102
- data/lib/chef/provider/service.rb +12 -2
- data/lib/chef/provider/service/aix.rb +1 -1
- data/lib/chef/provider/service/debian.rb +3 -5
- data/lib/chef/provider/service/freebsd.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +3 -3
- data/lib/chef/provider/service/init.rb +3 -3
- data/lib/chef/provider/service/insserv.rb +2 -4
- data/lib/chef/provider/service/invokercd.rb +2 -4
- data/lib/chef/provider/service/macosx.rb +5 -1
- data/lib/chef/provider/service/openbsd.rb +2 -1
- data/lib/chef/provider/service/redhat.rb +52 -16
- data/lib/chef/provider/service/simple.rb +2 -2
- data/lib/chef/provider/service/systemd.rb +3 -5
- data/lib/chef/provider/service/upstart.rb +4 -6
- data/lib/chef/provider/subversion.rb +13 -7
- data/lib/chef/provider/template/content.rb +16 -6
- data/lib/chef/provider/user/solaris.rb +32 -4
- data/lib/chef/provider/windows_script.rb +3 -5
- data/lib/chef/provider_resolver.rb +2 -2
- data/lib/chef/recipe.rb +1 -8
- data/lib/chef/resource.rb +563 -90
- data/lib/chef/resource/action_class.rb +83 -0
- data/lib/chef/resource/chef_gem.rb +3 -3
- data/lib/chef/resource/deploy.rb +8 -2
- data/lib/chef/resource/dsc_script.rb +2 -0
- data/lib/chef/resource/file/verification.rb +7 -1
- data/lib/chef/resource/lwrp_base.rb +1 -7
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/service.rb +10 -2
- data/lib/chef/resource/subversion.rb +5 -0
- data/lib/chef/resource/windows_script.rb +6 -2
- data/lib/chef/resource/yum_package.rb +10 -1
- data/lib/chef/resource_resolver.rb +3 -3
- data/lib/chef/run_context.rb +402 -83
- data/lib/chef/run_list/versioned_recipe_list.rb +15 -0
- data/lib/chef/run_lock.rb +30 -21
- data/lib/chef/util/powershell/ps_credential.rb +4 -0
- data/lib/chef/util/windows.rb +0 -32
- data/lib/chef/util/windows/net_group.rb +85 -106
- data/lib/chef/util/windows/net_use.rb +35 -71
- data/lib/chef/util/windows/net_user.rb +0 -1
- data/lib/chef/util/windows/volume.rb +19 -19
- data/lib/chef/version.rb +3 -3
- data/lib/chef/win32/api.rb +1 -0
- data/lib/chef/win32/api/file.rb +20 -0
- data/lib/chef/win32/api/net.rb +163 -43
- data/lib/chef/win32/api/registry.rb +51 -0
- data/lib/chef/win32/api/system.rb +23 -0
- data/lib/chef/win32/api/unicode.rb +0 -43
- data/lib/chef/win32/crypto.rb +2 -1
- data/lib/chef/win32/file.rb +28 -3
- data/lib/chef/win32/mutex.rb +1 -2
- data/lib/chef/win32/net.rb +162 -8
- data/lib/chef/win32/process.rb +13 -0
- data/lib/chef/win32/registry.rb +35 -30
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/security/token.rb +1 -1
- data/lib/chef/win32/system.rb +62 -0
- data/lib/chef/win32/unicode.rb +7 -2
- data/lib/chef/win32/version.rb +0 -4
- data/lib/chef/workstation_config_loader.rb +3 -158
- data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -0
- data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -0
- data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -0
- data/spec/data/dsc_lcm.pfx +0 -0
- data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -0
- data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +33 -43
- data/spec/functional/knife/cookbook_delete_spec.rb +17 -7
- data/spec/functional/knife/ssh_spec.rb +16 -0
- data/spec/functional/rebooter_spec.rb +1 -1
- data/spec/functional/resource/deploy_revision_spec.rb +1 -1
- data/spec/functional/resource/dsc_resource_spec.rb +2 -0
- data/spec/functional/resource/dsc_script_spec.rb +91 -2
- data/spec/functional/resource/group_spec.rb +67 -44
- data/spec/functional/resource/{powershell_spec.rb → powershell_script_spec.rb} +107 -18
- data/spec/functional/resource/windows_service_spec.rb +1 -1
- data/spec/functional/run_lock_spec.rb +368 -189
- data/spec/functional/win32/{registry_helper_spec.rb → registry_spec.rb} +16 -23
- data/spec/functional/win32/service_manager_spec.rb +2 -2
- data/spec/integration/client/client_spec.rb +51 -0
- data/spec/integration/knife/chef_repo_path_spec.rb +13 -11
- data/spec/integration/knife/download_spec.rb +4 -0
- data/spec/integration/knife/list_spec.rb +8 -0
- data/spec/integration/knife/upload_spec.rb +1 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +1 -16
- data/spec/integration/recipes/remote_directory.rb +74 -0
- data/spec/integration/recipes/resource_action_spec.rb +363 -0
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +423 -0
- data/spec/integration/recipes/resource_load_spec.rb +206 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/support/platform_helpers.rb +13 -0
- data/spec/support/shared/context/win32.rb +34 -0
- data/spec/support/shared/functional/win32_service.rb +2 -1
- data/spec/support/shared/functional/windows_script.rb +63 -26
- data/spec/support/shared/unit/mock_shellout.rb +46 -0
- data/spec/support/shared/unit/provider/file.rb +10 -4
- data/spec/unit/application/client_spec.rb +16 -3
- data/spec/unit/application/knife_spec.rb +2 -2
- data/spec/unit/application/solo_spec.rb +4 -3
- data/spec/unit/chef_class_spec.rb +23 -4
- data/spec/unit/chef_fs/path_util_spec.rb +108 -0
- data/spec/unit/client_spec.rb +6 -1
- data/spec/unit/config_spec.rb +31 -0
- data/spec/unit/cookbook/metadata_spec.rb +23 -3
- data/spec/unit/cookbook/syntax_check_spec.rb +3 -0
- data/spec/unit/deprecation_spec.rb +3 -6
- data/spec/unit/dsl/reboot_pending_spec.rb +12 -6
- data/spec/unit/event_dispatch/dispatcher_spec.rb +65 -3
- data/spec/unit/event_dispatch/dsl_spec.rb +83 -0
- data/spec/unit/formatters/doc_spec.rb +32 -0
- data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +26 -0
- data/spec/unit/json_compat_spec.rb +4 -3
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +27 -0
- data/spec/unit/knife/bootstrap_spec.rb +55 -3
- data/spec/unit/knife/cookbook_site_share_spec.rb +3 -3
- data/spec/unit/knife/core/bootstrap_context_spec.rb +21 -4
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +41 -0
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +210 -0
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +93 -0
- data/spec/unit/knife/core/subcommand_loader_spec.rb +16 -192
- data/spec/unit/knife/node_run_list_remove_spec.rb +17 -0
- data/spec/unit/knife/ssl_check_spec.rb +4 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +10 -10
- data/spec/unit/mixin/params_validate_spec.rb +4 -2
- data/spec/unit/mixin/template_spec.rb +5 -1
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +13 -8
- data/spec/unit/node_spec.rb +220 -0
- data/spec/unit/platform/query_helpers_spec.rb +146 -3
- data/spec/unit/policy_builder/dynamic_spec.rb +275 -0
- data/spec/unit/policy_builder/expand_node_object_spec.rb +37 -38
- data/spec/unit/policy_builder/policyfile_spec.rb +260 -46
- data/spec/unit/property/state_spec.rb +506 -0
- data/spec/unit/property/validation_spec.rb +663 -0
- data/spec/unit/property_spec.rb +1094 -0
- data/spec/unit/provider/deploy_spec.rb +5 -5
- data/spec/unit/provider/directory_spec.rb +35 -0
- data/spec/unit/provider/dsc_resource_spec.rb +3 -10
- data/spec/unit/provider/ifconfig_spec.rb +22 -2
- data/spec/unit/provider/mount/aix_spec.rb +2 -1
- data/spec/unit/provider/mount/mount_spec.rb +6 -0
- data/spec/unit/provider/mount/windows_spec.rb +14 -0
- data/spec/unit/provider/mount_spec.rb +12 -1
- data/spec/unit/provider/package/dpkg_spec.rb +8 -1
- data/spec/unit/provider/package/rpm_spec.rb +18 -1
- data/spec/unit/provider/package/rubygems_spec.rb +18 -0
- data/spec/unit/provider/package/yum_spec.rb +97 -24
- data/spec/unit/provider/powershell_script_spec.rb +106 -0
- data/spec/unit/provider/registry_key_spec.rb +12 -0
- data/spec/unit/provider/remote_directory_spec.rb +1 -2
- data/spec/unit/provider/service/aix_service_spec.rb +3 -3
- data/spec/unit/provider/service/gentoo_service_spec.rb +4 -4
- data/spec/unit/provider/service/macosx_spec.rb +4 -4
- data/spec/unit/provider/service/openbsd_service_spec.rb +10 -8
- data/spec/unit/provider/service/redhat_spec.rb +88 -8
- data/spec/unit/provider/service/upstart_service_spec.rb +11 -7
- data/spec/unit/provider/service/windows_spec.rb +211 -200
- data/spec/unit/provider/subversion_spec.rb +50 -31
- data/spec/unit/provider/template/content_spec.rb +93 -2
- data/spec/unit/provider/user/solaris_spec.rb +66 -9
- data/spec/unit/provider_resolver_spec.rb +707 -650
- data/spec/unit/provider_spec.rb +1 -3
- data/spec/unit/recipe_spec.rb +0 -4
- data/spec/unit/resource/deploy_spec.rb +7 -1
- data/spec/unit/resource/dsc_script_spec.rb +4 -0
- data/spec/unit/resource/file/verification_spec.rb +33 -5
- data/spec/unit/resource/{powershell_spec.rb → powershell_script_spec.rb} +17 -13
- data/spec/unit/resource/service_spec.rb +4 -4
- data/spec/unit/resource/subversion_spec.rb +4 -0
- data/spec/unit/resource/yum_package_spec.rb +10 -1
- data/spec/unit/resource_spec.rb +2 -2
- data/spec/unit/run_context/child_run_context_spec.rb +133 -0
- data/spec/unit/run_context_spec.rb +7 -0
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +5 -0
- data/spec/unit/win32/registry_spec.rb +394 -0
- data/tasks/external_tests.rb +47 -23
- data/tasks/maintainers.rb +155 -14
- metadata +64 -53
- data/lib/chef/knife/bootstrap/templates/archlinux-gems.erb +0 -76
- data/lib/chef/knife/bootstrap/templates/chef-aix.erb +0 -72
- data/spec/unit/provider/powershell_spec.rb +0 -80
- data/spec/unit/registry_helper_spec.rb +0 -376
- data/spec/unit/workstation_config_loader_spec.rb +0 -283
@@ -20,25 +20,6 @@
|
|
20
20
|
require 'spec_helper'
|
21
21
|
require 'chef/win32/registry'
|
22
22
|
|
23
|
-
describe Chef::Resource::RegistryKey, :unix_only do
|
24
|
-
before(:all) do
|
25
|
-
events = Chef::EventDispatch::Dispatcher.new
|
26
|
-
node = Chef::Node.new
|
27
|
-
ohai = Ohai::System.new
|
28
|
-
ohai.all_plugins
|
29
|
-
node.consume_external_attrs(ohai.data,{})
|
30
|
-
run_context = Chef::RunContext.new(node, {}, events)
|
31
|
-
@resource = Chef::Resource::RegistryKey.new("HKCU\\Software", run_context)
|
32
|
-
end
|
33
|
-
context "when load_current_resource is run on a non-windows node" do
|
34
|
-
it "throws an exception because you don't have a windows registry (derp)" do
|
35
|
-
@resource.key("HKCU\\Software\\Opscode")
|
36
|
-
@resource.values([{:name=>"Color", :type=>:string, :data=>"Orange"}])
|
37
|
-
expect{@resource.run_action(:create)}.to raise_error(Chef::Exceptions::Win32NotWindows)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
23
|
describe 'Chef::Win32::Registry', :windows_only do
|
43
24
|
|
44
25
|
before(:all) do
|
@@ -130,6 +111,9 @@ describe 'Chef::Win32::Registry', :windows_only do
|
|
130
111
|
it "returns true if the value exists" do
|
131
112
|
expect(@registry.value_exists?("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"Petals"})).to eq(true)
|
132
113
|
end
|
114
|
+
it "returns true if the value exists with a case mismatch on the value name" do
|
115
|
+
expect(@registry.value_exists?("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"petals"})).to eq(true)
|
116
|
+
end
|
133
117
|
it "returns false if the value does not exist" do
|
134
118
|
expect(@registry.value_exists?("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"FOOBAR"})).to eq(false)
|
135
119
|
end
|
@@ -145,6 +129,9 @@ describe 'Chef::Win32::Registry', :windows_only do
|
|
145
129
|
it "returns true if the value exists" do
|
146
130
|
expect(@registry.value_exists!("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"Petals"})).to eq(true)
|
147
131
|
end
|
132
|
+
it "returns true if the value exists with a case mismatch on the value name" do
|
133
|
+
expect(@registry.value_exists!("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"petals"})).to eq(true)
|
134
|
+
end
|
148
135
|
it "throws an exception if the value does not exist" do
|
149
136
|
expect {@registry.value_exists!("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"FOOBAR"})}.to raise_error(Chef::Exceptions::Win32RegValueMissing)
|
150
137
|
end
|
@@ -160,6 +147,9 @@ describe 'Chef::Win32::Registry', :windows_only do
|
|
160
147
|
it "returns true if all the data matches" do
|
161
148
|
expect(@registry.data_exists?("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"Petals", :type=>:multi_string, :data=>["Pink", "Delicate"]})).to eq(true)
|
162
149
|
end
|
150
|
+
it "returns true if all the data matches with a case mismatch on the data name" do
|
151
|
+
expect(@registry.data_exists?("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"petals", :type=>:multi_string, :data=>["Pink", "Delicate"]})).to eq(true)
|
152
|
+
end
|
163
153
|
it "returns false if the name does not exist" do
|
164
154
|
expect(@registry.data_exists?("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"slateP", :type=>:multi_string, :data=>["Pink", "Delicate"]})).to eq(false)
|
165
155
|
end
|
@@ -181,6 +171,9 @@ describe 'Chef::Win32::Registry', :windows_only do
|
|
181
171
|
it "returns true if all the data matches" do
|
182
172
|
expect(@registry.data_exists!("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"Petals", :type=>:multi_string, :data=>["Pink", "Delicate"]})).to eq(true)
|
183
173
|
end
|
174
|
+
it "returns true if all the data matches with a case mismatch on the data name" do
|
175
|
+
expect(@registry.data_exists!("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"petals", :type=>:multi_string, :data=>["Pink", "Delicate"]})).to eq(true)
|
176
|
+
end
|
184
177
|
it "throws an exception if the name does not exist" do
|
185
178
|
expect {@registry.data_exists!("HKCU\\Software\\Root\\Branch\\Flower", {:name=>"slateP", :type=>:multi_string, :data=>["Pink", "Delicate"]})}.to raise_error(Chef::Exceptions::Win32RegDataMissing)
|
186
179
|
end
|
@@ -544,11 +537,11 @@ describe 'Chef::Win32::Registry', :windows_only do
|
|
544
537
|
end
|
545
538
|
|
546
539
|
after(:all) do
|
547
|
-
::Win32::Registry::HKEY_LOCAL_MACHINE.open("Software
|
548
|
-
reg.delete_key("
|
540
|
+
::Win32::Registry::HKEY_LOCAL_MACHINE.open("Software", ::Win32::Registry::KEY_ALL_ACCESS | 0x0100) do |reg|
|
541
|
+
reg.delete_key("Root", true)
|
549
542
|
end
|
550
|
-
::Win32::Registry::HKEY_LOCAL_MACHINE.open("Software
|
551
|
-
reg.delete_key("
|
543
|
+
::Win32::Registry::HKEY_LOCAL_MACHINE.open("Software", ::Win32::Registry::KEY_ALL_ACCESS | 0x0200) do |reg|
|
544
|
+
reg.delete_key("Root", true)
|
552
545
|
end
|
553
546
|
end
|
554
547
|
|
@@ -33,7 +33,7 @@ end
|
|
33
33
|
# directories.
|
34
34
|
#
|
35
35
|
|
36
|
-
describe "Chef::Application::WindowsServiceManager", :windows_only, :system_windows_service_gem_only do
|
36
|
+
describe "Chef::Application::WindowsServiceManager", :windows_only, :system_windows_service_gem_only, :appveyor_only do
|
37
37
|
|
38
38
|
include_context "using Win32::Service"
|
39
39
|
|
@@ -43,7 +43,7 @@ describe "Chef::Application::WindowsServiceManager", :windows_only, :system_wind
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it "throws an error with required missing options" do
|
46
|
-
|
46
|
+
[:service_name, :service_display_name, :service_description, :service_file_path].each do |key|
|
47
47
|
service_def = test_service.dup
|
48
48
|
service_def.delete(key)
|
49
49
|
|
@@ -303,6 +303,57 @@ EOM
|
|
303
303
|
|
304
304
|
end
|
305
305
|
|
306
|
+
when_the_repository "has a cookbook that generates deprecation warnings" do
|
307
|
+
before do
|
308
|
+
file 'cookbooks/x/recipes/default.rb', <<-EOM
|
309
|
+
class ::MyResource < Chef::Resource
|
310
|
+
use_automatic_resource_name
|
311
|
+
property :x, default: []
|
312
|
+
property :y, default: {}
|
313
|
+
end
|
314
|
+
|
315
|
+
my_resource 'blah' do
|
316
|
+
1.upto(10) do
|
317
|
+
x nil
|
318
|
+
end
|
319
|
+
x nil
|
320
|
+
end
|
321
|
+
EOM
|
322
|
+
end
|
323
|
+
|
324
|
+
def match_indices(regex, str)
|
325
|
+
result = []
|
326
|
+
pos = 0
|
327
|
+
while match = regex.match(str, pos)
|
328
|
+
result << match.begin(0)
|
329
|
+
pos = match.end(0) + 1
|
330
|
+
end
|
331
|
+
result
|
332
|
+
end
|
333
|
+
|
334
|
+
it "should output each deprecation warning only once, at the end of the run" do
|
335
|
+
file 'config/client.rb', <<EOM
|
336
|
+
local_mode true
|
337
|
+
cookbook_path "#{path_to('cookbooks')}"
|
338
|
+
# Mimick what happens when you are on the console
|
339
|
+
formatters << :doc
|
340
|
+
log_level :warn
|
341
|
+
EOM
|
342
|
+
|
343
|
+
ENV.delete('CHEF_TREAT_DEPRECATION_WARNINGS_AS_ERRORS')
|
344
|
+
|
345
|
+
result = shell_out!("#{chef_client} -c \"#{path_to('config/client.rb')}\" -o 'x::default'", :cwd => chef_dir)
|
346
|
+
expect(result.error?).to be_falsey
|
347
|
+
|
348
|
+
# Search to the end of the client run in the output
|
349
|
+
run_complete = result.stdout.index("Running handlers complete")
|
350
|
+
expect(run_complete).to be >= 0
|
351
|
+
|
352
|
+
# Make sure there is exactly one result for each, and that it occurs *after* the complete message.
|
353
|
+
expect(match_indices(/nil currently does not overwrite the value of/, result.stdout)).to match([ be > run_complete ])
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
306
357
|
when_the_repository "has a cookbook with only an audit recipe" do
|
307
358
|
|
308
359
|
before do
|
@@ -24,6 +24,8 @@ describe 'chef_repo_path tests', :workstation do
|
|
24
24
|
include IntegrationSupport
|
25
25
|
include KnifeSupport
|
26
26
|
|
27
|
+
let(:error_rel_path_outside_repo) { /^ERROR: Attempt to use relative path '' when current directory is outside the repository path/ }
|
28
|
+
|
27
29
|
# TODO alternate repo_path / *_path
|
28
30
|
context 'alternate *_path' do
|
29
31
|
when_the_repository 'has clients and clients2, cookbooks and cookbooks2, etc.' do
|
@@ -109,14 +111,14 @@ EOM
|
|
109
111
|
context 'when cwd is at the top level' do
|
110
112
|
before { cwd '.' }
|
111
113
|
it 'knife list --local -Rfp fails' do
|
112
|
-
knife('list --local -Rfp').should_fail(
|
114
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
113
115
|
end
|
114
116
|
end
|
115
117
|
|
116
118
|
context 'when cwd is inside the data_bags directory' do
|
117
119
|
before { cwd 'data_bags' }
|
118
120
|
it 'knife list --local -Rfp fails' do
|
119
|
-
knife('list --local -Rfp').should_fail(
|
121
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
120
122
|
end
|
121
123
|
end
|
122
124
|
|
@@ -192,14 +194,14 @@ EOM
|
|
192
194
|
context 'when cwd is inside the data_bags directory' do
|
193
195
|
before { cwd 'data_bags' }
|
194
196
|
it 'knife list --local -Rfp fails' do
|
195
|
-
knife('list --local -Rfp').should_fail(
|
197
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
196
198
|
end
|
197
199
|
end
|
198
200
|
|
199
201
|
context 'when cwd is inside chef_repo2' do
|
200
202
|
before { cwd 'chef_repo2' }
|
201
203
|
it 'knife list -Rfp fails' do
|
202
|
-
knife('list --local -Rfp').should_fail(
|
204
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
203
205
|
end
|
204
206
|
end
|
205
207
|
|
@@ -225,14 +227,14 @@ EOM
|
|
225
227
|
context 'when cwd is at the top level' do
|
226
228
|
before { cwd '.' }
|
227
229
|
it 'knife list --local -Rfp fails' do
|
228
|
-
knife('list --local -Rfp').should_fail(
|
230
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
229
231
|
end
|
230
232
|
end
|
231
233
|
|
232
234
|
context 'when cwd is inside the data_bags directory' do
|
233
235
|
before { cwd 'data_bags' }
|
234
236
|
it 'knife list --local -Rfp fails' do
|
235
|
-
knife('list --local -Rfp').should_fail(
|
237
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
236
238
|
end
|
237
239
|
end
|
238
240
|
|
@@ -445,7 +447,7 @@ EOM
|
|
445
447
|
context 'when cwd is at the top level' do
|
446
448
|
before { cwd '.' }
|
447
449
|
it 'knife list --local -Rfp fails' do
|
448
|
-
knife('list --local -Rfp').should_fail(
|
450
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
449
451
|
end
|
450
452
|
end
|
451
453
|
|
@@ -621,14 +623,14 @@ EOM
|
|
621
623
|
context 'when cwd is at the top level' do
|
622
624
|
before { cwd '.' }
|
623
625
|
it 'knife list --local -Rfp fails' do
|
624
|
-
knife('list --local -Rfp').should_fail(
|
626
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
625
627
|
end
|
626
628
|
end
|
627
629
|
|
628
630
|
context 'when cwd is inside the data_bags directory' do
|
629
631
|
before { cwd 'data_bags' }
|
630
632
|
it 'knife list --local -Rfp fails' do
|
631
|
-
knife('list --local -Rfp').should_fail(
|
633
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
632
634
|
end
|
633
635
|
end
|
634
636
|
|
@@ -782,7 +784,7 @@ EOM
|
|
782
784
|
context 'when cwd is at the top level' do
|
783
785
|
before { cwd '.' }
|
784
786
|
it 'knife list --local -Rfp fails' do
|
785
|
-
knife('list --local -Rfp').should_fail(
|
787
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
786
788
|
end
|
787
789
|
end
|
788
790
|
|
@@ -823,7 +825,7 @@ EOM
|
|
823
825
|
context 'when cwd is inside chef_repo2/data_bags' do
|
824
826
|
before { cwd 'chef_repo2/data_bags' }
|
825
827
|
it 'knife list --local -Rfp fails' do
|
826
|
-
knife('list --local -Rfp').should_fail(
|
828
|
+
knife('list --local -Rfp').should_fail(error_rel_path_outside_repo)
|
827
829
|
end
|
828
830
|
end
|
829
831
|
end
|
@@ -1113,11 +1113,13 @@ Created /acls/clients/foo-validator.json
|
|
1113
1113
|
Created /acls/containers
|
1114
1114
|
Created /acls/containers/clients.json
|
1115
1115
|
Created /acls/containers/containers.json
|
1116
|
+
Created /acls/containers/cookbook_artifacts.json
|
1116
1117
|
Created /acls/containers/cookbooks.json
|
1117
1118
|
Created /acls/containers/data.json
|
1118
1119
|
Created /acls/containers/environments.json
|
1119
1120
|
Created /acls/containers/groups.json
|
1120
1121
|
Created /acls/containers/nodes.json
|
1122
|
+
Created /acls/containers/policies.json
|
1121
1123
|
Created /acls/containers/roles.json
|
1122
1124
|
Created /acls/containers/sandboxes.json
|
1123
1125
|
Created /acls/containers/x.json
|
@@ -1139,11 +1141,13 @@ Created /clients/foo-validator.json
|
|
1139
1141
|
Created /containers
|
1140
1142
|
Created /containers/clients.json
|
1141
1143
|
Created /containers/containers.json
|
1144
|
+
Created /containers/cookbook_artifacts.json
|
1142
1145
|
Created /containers/cookbooks.json
|
1143
1146
|
Created /containers/data.json
|
1144
1147
|
Created /containers/environments.json
|
1145
1148
|
Created /containers/groups.json
|
1146
1149
|
Created /containers/nodes.json
|
1150
|
+
Created /containers/policies.json
|
1147
1151
|
Created /containers/roles.json
|
1148
1152
|
Created /containers/sandboxes.json
|
1149
1153
|
Created /containers/x.json
|
@@ -702,11 +702,13 @@ foo-validator.json
|
|
702
702
|
/acls/containers:
|
703
703
|
clients.json
|
704
704
|
containers.json
|
705
|
+
cookbook_artifacts.json
|
705
706
|
cookbooks.json
|
706
707
|
data.json
|
707
708
|
environments.json
|
708
709
|
groups.json
|
709
710
|
nodes.json
|
711
|
+
policies.json
|
710
712
|
roles.json
|
711
713
|
sandboxes.json
|
712
714
|
|
@@ -733,11 +735,13 @@ foo-validator.json
|
|
733
735
|
/containers:
|
734
736
|
clients.json
|
735
737
|
containers.json
|
738
|
+
cookbook_artifacts.json
|
736
739
|
cookbooks.json
|
737
740
|
data.json
|
738
741
|
environments.json
|
739
742
|
groups.json
|
740
743
|
nodes.json
|
744
|
+
policies.json
|
741
745
|
roles.json
|
742
746
|
sandboxes.json
|
743
747
|
|
@@ -804,11 +808,13 @@ foo-validator.json
|
|
804
808
|
/acls/containers:
|
805
809
|
clients.json
|
806
810
|
containers.json
|
811
|
+
cookbook_artifacts.json
|
807
812
|
cookbooks.json
|
808
813
|
data.json
|
809
814
|
environments.json
|
810
815
|
groups.json
|
811
816
|
nodes.json
|
817
|
+
policies.json
|
812
818
|
roles.json
|
813
819
|
sandboxes.json
|
814
820
|
|
@@ -835,11 +841,13 @@ foo-validator.json
|
|
835
841
|
/containers:
|
836
842
|
clients.json
|
837
843
|
containers.json
|
844
|
+
cookbook_artifacts.json
|
838
845
|
cookbooks.json
|
839
846
|
data.json
|
840
847
|
environments.json
|
841
848
|
groups.json
|
842
849
|
nodes.json
|
850
|
+
policies.json
|
843
851
|
roles.json
|
844
852
|
sandboxes.json
|
845
853
|
|
@@ -119,7 +119,7 @@ describe "Recipe DSL methods" do
|
|
119
119
|
recipe = converge {
|
120
120
|
backcompat_thingy 'blah' do; end
|
121
121
|
}
|
122
|
-
expect(recipe.logged_warnings).to match(/Class Chef::Provider::BackcompatThingy does not declare '
|
122
|
+
expect(recipe.logged_warnings).to match(/Class Chef::Provider::BackcompatThingy does not declare 'provides :backcompat_thingy'./)
|
123
123
|
expect(BaseThingy.created_resource).not_to be_nil
|
124
124
|
end
|
125
125
|
end
|
@@ -794,21 +794,6 @@ describe "Recipe DSL methods" do
|
|
794
794
|
end
|
795
795
|
end
|
796
796
|
|
797
|
-
context "when Thingy9 provides :thingy9" do
|
798
|
-
before(:context) {
|
799
|
-
class RecipeDSLSpecNamespace::Thingy9 < BaseThingy
|
800
|
-
resource_name :thingy9
|
801
|
-
end
|
802
|
-
}
|
803
|
-
|
804
|
-
it "declaring a resource providing the same :thingy9 produces a warning" do
|
805
|
-
expect(Chef::Log).to receive(:warn).with("You declared a new resource RecipeDSLSpecNamespace::Thingy9AlternateProvider for resource thingy9, but it comes alphabetically after RecipeDSLSpecNamespace::Thingy9 and has the same filters ({}), so it will not be used. Use override: true if you want to use it for thingy9.")
|
806
|
-
class RecipeDSLSpecNamespace::Thingy9AlternateProvider < BaseThingy
|
807
|
-
resource_name :thingy9
|
808
|
-
end
|
809
|
-
end
|
810
|
-
end
|
811
|
-
|
812
797
|
context "when Thingy10 provides :thingy10" do
|
813
798
|
before(:context) {
|
814
799
|
class RecipeDSLSpecNamespace::Thingy10 < BaseThingy
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'support/shared/integration/integration_helper'
|
2
|
+
|
3
|
+
describe Chef::Resource::RemoteDirectory do
|
4
|
+
include IntegrationSupport
|
5
|
+
include Chef::Mixin::ShellOut
|
6
|
+
|
7
|
+
# Until Cheffish::RSpec has cookbook support, we have to run the whole client
|
8
|
+
let(:chef_dir) { File.join(File.dirname(__FILE__), "..", "..", "..", "bin") }
|
9
|
+
|
10
|
+
# Invoke `chef-client` as `ruby PATH/TO/chef-client`. This ensures the
|
11
|
+
# following constraints are satisfied:
|
12
|
+
# * Windows: windows can only run batch scripts as bare executables. Rubygems
|
13
|
+
# creates batch wrappers for installed gems, but we don't have batch wrappers
|
14
|
+
# in the source tree.
|
15
|
+
# * Other `chef-client` in PATH: A common case is running the tests on a
|
16
|
+
# machine that has omnibus chef installed. In that case we need to ensure
|
17
|
+
# we're running `chef-client` from the source tree and not the external one.
|
18
|
+
# cf. CHEF-4914
|
19
|
+
let(:chef_client) { "ruby '#{chef_dir}/chef-client' --minimal-ohai" }
|
20
|
+
|
21
|
+
when_the_repository "has a cookbook with a source_dir with two subdirectories, each with one file and subdir in a different alphabetical order" do
|
22
|
+
before do
|
23
|
+
file 'config/client.rb', <<-EOM
|
24
|
+
local_mode true
|
25
|
+
cookbook_path "#{path_to('cookbooks')}"
|
26
|
+
EOM
|
27
|
+
directory "cookbooks/test" do
|
28
|
+
directory "files/default/source_dir" do
|
29
|
+
directory "sub1" do
|
30
|
+
file "aaa", ""
|
31
|
+
file "zzz/file", ""
|
32
|
+
end
|
33
|
+
directory "sub2" do
|
34
|
+
file "aaa/file", ""
|
35
|
+
file "zzz", ""
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "and a recipe is run with a remote_directory that syncs source_dir with different mode and file_mode" do
|
42
|
+
let!(:dest_dir) { path_to("dest_dir") }
|
43
|
+
before do
|
44
|
+
directory "cookbooks/test" do
|
45
|
+
file "recipes/default.rb", <<-EOM
|
46
|
+
remote_directory #{dest_dir.inspect} do
|
47
|
+
source "source_dir"
|
48
|
+
mode "0754"
|
49
|
+
files_mode 0777
|
50
|
+
end
|
51
|
+
EOM
|
52
|
+
end
|
53
|
+
shell_out!("#{chef_client} -c \"#{path_to('config/client.rb')}\" -o 'test::default'", :cwd => chef_dir)
|
54
|
+
end
|
55
|
+
|
56
|
+
def mode_of(path)
|
57
|
+
path = path_to(path)
|
58
|
+
stat = File.stat(path)
|
59
|
+
(stat.mode & 0777).to_s(8)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "creates all directories and files with the correct permissions" do
|
63
|
+
expect(mode_of("dest_dir/sub1")).to eq "754"
|
64
|
+
expect(mode_of("dest_dir/sub1/aaa")).to eq "777"
|
65
|
+
expect(mode_of("dest_dir/sub1/zzz")).to eq "754"
|
66
|
+
expect(mode_of("dest_dir/sub1/zzz/file")).to eq "777"
|
67
|
+
expect(mode_of("dest_dir/sub2")).to eq "754"
|
68
|
+
expect(mode_of("dest_dir/sub2/aaa")).to eq "754"
|
69
|
+
expect(mode_of("dest_dir/sub2/aaa/file")).to eq "777"
|
70
|
+
expect(mode_of("dest_dir/sub2/zzz")).to eq "777"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|