chef 12.18.31 → 13.0.118
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/Gemfile +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
|
@@ -100,8 +100,8 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
100
100
|
http = double("Chef::ServerAPI")
|
|
101
101
|
server_url = "https://api.opscode.com/organizations/example"
|
|
102
102
|
Chef::Config[:chef_server_url] = server_url
|
|
103
|
-
expect(Chef::ServerAPI).to receive(:new).with(server_url).and_return(http)
|
|
104
|
-
expect(policy_builder.
|
|
103
|
+
expect(Chef::ServerAPI).to receive(:new).with(server_url, version_class: Chef::CookbookManifestVersions).and_return(http)
|
|
104
|
+
expect(policy_builder.api_service).to eq(http)
|
|
105
105
|
end
|
|
106
106
|
|
|
107
107
|
describe "reporting unsupported features" do
|
|
@@ -150,7 +150,7 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
150
150
|
|
|
151
151
|
describe "loading policy data" do
|
|
152
152
|
|
|
153
|
-
let(:
|
|
153
|
+
let(:api_service) { double("Chef::ServerAPI") }
|
|
154
154
|
|
|
155
155
|
let(:configured_environment) { nil }
|
|
156
156
|
|
|
@@ -172,7 +172,7 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
172
172
|
before do
|
|
173
173
|
Chef::Config[:policy_document_native_api] = false
|
|
174
174
|
Chef::Config[:deployment_group] = "example-policy-stage"
|
|
175
|
-
allow(policy_builder).to receive(:
|
|
175
|
+
allow(policy_builder).to receive(:api_service).and_return(api_service)
|
|
176
176
|
end
|
|
177
177
|
|
|
178
178
|
describe "when using compatibility mode (policy_document_native_api == false)" do
|
|
@@ -185,7 +185,7 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
185
185
|
let(:error404) { Net::HTTPServerException.new("404 message", :body) }
|
|
186
186
|
|
|
187
187
|
before do
|
|
188
|
-
expect(
|
|
188
|
+
expect(api_service).to receive(:get).
|
|
189
189
|
with("data/policyfiles/example-policy-stage").
|
|
190
190
|
and_raise(error404)
|
|
191
191
|
end
|
|
@@ -212,7 +212,7 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
212
212
|
let(:policy_relative_url) { "data/policyfiles/example-policy-stage" }
|
|
213
213
|
|
|
214
214
|
before do
|
|
215
|
-
expect(
|
|
215
|
+
expect(api_service).to receive(:get).with(policy_relative_url).and_return(parsed_policyfile_json)
|
|
216
216
|
end
|
|
217
217
|
|
|
218
218
|
it "fetches the policy file from a data bag item" do
|
|
@@ -253,7 +253,7 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
253
253
|
let(:policy_relative_url) { "policy_groups/policy-stage/policies/example" }
|
|
254
254
|
|
|
255
255
|
before do
|
|
256
|
-
expect(
|
|
256
|
+
expect(api_service).to receive(:get).with(policy_relative_url).and_return(parsed_policyfile_json)
|
|
257
257
|
end
|
|
258
258
|
|
|
259
259
|
it "fetches the policy file from a data bag item" do
|
|
@@ -617,7 +617,7 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
617
617
|
policy_builder.finish_load_node(node)
|
|
618
618
|
policy_builder.build_node
|
|
619
619
|
|
|
620
|
-
expect(
|
|
620
|
+
expect(api_service).to receive(:get).with(cookbook1_url).
|
|
621
621
|
and_raise(error404)
|
|
622
622
|
end
|
|
623
623
|
|
|
@@ -687,9 +687,9 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
687
687
|
context "when the cookbooks exist on the server" do
|
|
688
688
|
|
|
689
689
|
before do
|
|
690
|
-
expect(
|
|
690
|
+
expect(api_service).to receive(:get).with(cookbook1_url).
|
|
691
691
|
and_return(example1_cookbook_data)
|
|
692
|
-
expect(
|
|
692
|
+
expect(api_service).to receive(:get).with(cookbook2_url).
|
|
693
693
|
and_return(example2_cookbook_data)
|
|
694
694
|
|
|
695
695
|
expect(Chef::CookbookVersion).to receive(:from_cb_artifact_data).with(example1_cookbook_data).
|
|
@@ -720,9 +720,9 @@ describe Chef::PolicyBuilder::Policyfile do
|
|
|
720
720
|
context "when the cookbooks exist on the server" do
|
|
721
721
|
|
|
722
722
|
before do
|
|
723
|
-
expect(
|
|
723
|
+
expect(api_service).to receive(:get).with(cookbook1_url).
|
|
724
724
|
and_return(example1_cookbook_data)
|
|
725
|
-
expect(
|
|
725
|
+
expect(api_service).to receive(:get).with(cookbook2_url).
|
|
726
726
|
and_return(example2_cookbook_data)
|
|
727
727
|
|
|
728
728
|
expect(Chef::CookbookVersion).to receive(:from_cb_artifact_data).with(example1_cookbook_data).
|
|
@@ -100,13 +100,10 @@ describe "Chef::Resource.property validation" do
|
|
|
100
100
|
expect(resource.x).to be_nil
|
|
101
101
|
end
|
|
102
102
|
unless tags.include?(:nillable)
|
|
103
|
-
it "changing x to nil
|
|
103
|
+
it "changing x to nil does a set" do
|
|
104
104
|
resource.instance_eval { @x = "default" }
|
|
105
|
-
expect
|
|
106
|
-
|
|
107
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
108
|
-
expect(resource.x nil).to eq "default"
|
|
109
|
-
expect(resource.x).to eq "default"
|
|
105
|
+
expect(resource.x nil).to eq nil
|
|
106
|
+
expect(resource.x).to eq nil
|
|
110
107
|
end
|
|
111
108
|
end
|
|
112
109
|
end
|
|
@@ -116,13 +113,10 @@ describe "Chef::Resource.property validation" do
|
|
|
116
113
|
expect(resource.x nil).to be_nil
|
|
117
114
|
expect(resource.x).to be_nil
|
|
118
115
|
end
|
|
119
|
-
it "changing x to nil
|
|
116
|
+
it "changing x to nil does a set" do
|
|
120
117
|
resource.instance_eval { @x = "default" }
|
|
121
|
-
expect
|
|
122
|
-
|
|
123
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
124
|
-
expect(resource.x nil).to eq "default"
|
|
125
|
-
expect(resource.x).to eq "default"
|
|
118
|
+
expect(resource.x nil).to eq nil
|
|
119
|
+
expect(resource.x).to eq nil
|
|
126
120
|
end
|
|
127
121
|
end
|
|
128
122
|
elsif tags.include?(:nillable)
|
|
@@ -134,26 +128,17 @@ describe "Chef::Resource.property validation" do
|
|
|
134
128
|
expect(resource.x).to eq nil
|
|
135
129
|
end
|
|
136
130
|
end
|
|
137
|
-
|
|
131
|
+
elsif tags.include?(:delayed_nil_default_failure)
|
|
138
132
|
it "property :x, #{validation}, default: nil warns that the default is invalid" do
|
|
139
|
-
expect { resource_class.class_eval("property :x, #{validation}, default: nil", __FILE__, __LINE__) }.
|
|
140
|
-
|
|
133
|
+
expect { resource_class.class_eval("property :x, #{validation}, default: nil", __FILE__, __LINE__) }.not_to raise_error
|
|
134
|
+
expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed, /Property x must be one of: .* You passed nil./
|
|
141
135
|
end
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
it "changing x to nil emits a warning that the value is invalid and does not change the value" do
|
|
150
|
-
resource.instance_eval { @x = "default" }
|
|
151
|
-
expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
|
|
152
|
-
/nil is an invalid value for x of resource chef_resource_property_spec_(\d+). In Chef 13, this warning will change to an error./
|
|
153
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
154
|
-
expect(resource.x nil).to eq "default"
|
|
155
|
-
expect(resource.x).to eq "default"
|
|
156
|
-
end
|
|
136
|
+
elsif tags.include?(:skip_nil_default)
|
|
137
|
+
# intentionally left blank
|
|
138
|
+
else
|
|
139
|
+
it "property :x, #{validation}, default: nil warns that the default is invalid" do
|
|
140
|
+
expect { resource_class.class_eval("property :x, #{validation}, default: nil", __FILE__, __LINE__) }.to raise_error Chef::Exceptions::ValidationFailed,
|
|
141
|
+
/Property x must be one of: .* You passed nil./
|
|
157
142
|
end
|
|
158
143
|
end
|
|
159
144
|
end
|
|
@@ -174,12 +159,10 @@ describe "Chef::Resource.property validation" do
|
|
|
174
159
|
it "set to invalid value raises ValidationFailed" do
|
|
175
160
|
expect { resource.x 10 }.to raise_error Chef::Exceptions::ValidationFailed
|
|
176
161
|
end
|
|
177
|
-
it "set to nil
|
|
178
|
-
expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError
|
|
179
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
162
|
+
it "set to nil does a set" do
|
|
180
163
|
resource.x "str"
|
|
181
|
-
expect(resource.x nil).to eq
|
|
182
|
-
expect(resource.x).to eq
|
|
164
|
+
expect(resource.x nil).to eq nil
|
|
165
|
+
expect(resource.x).to eq nil
|
|
183
166
|
end
|
|
184
167
|
end
|
|
185
168
|
context "when the variable does not have an initial value" do
|
|
@@ -206,12 +189,9 @@ describe "Chef::Resource.property validation" do
|
|
|
206
189
|
it "get succeeds" do
|
|
207
190
|
expect(resource.x).to eq "default"
|
|
208
191
|
end
|
|
209
|
-
it "set(nil)
|
|
210
|
-
expect
|
|
211
|
-
|
|
212
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
213
|
-
expect(resource.x nil).to eq "default"
|
|
214
|
-
expect(resource.x).to eq "default"
|
|
192
|
+
it "set(nil) does a set" do
|
|
193
|
+
expect(resource.x nil).to eq nil
|
|
194
|
+
expect(resource.x).to eq nil
|
|
215
195
|
end
|
|
216
196
|
it "set to valid value succeeds" do
|
|
217
197
|
expect(resource.x "str").to eq "str"
|
|
@@ -328,11 +308,17 @@ describe "Chef::Resource.property validation" do
|
|
|
328
308
|
# Proc
|
|
329
309
|
validation_test "is: proc { |x| x }",
|
|
330
310
|
[ true, 1 ],
|
|
331
|
-
[ false ]
|
|
311
|
+
[ false ],
|
|
312
|
+
# this is somewhat complicated, we test adding `default: nil` and that the default fails, but with a proc the
|
|
313
|
+
# validation is delayed until access, so we have to test after access not after declaring the default
|
|
314
|
+
:delayed_nil_default_failure
|
|
332
315
|
|
|
333
316
|
validation_test "is: proc { |x| x > blah }",
|
|
334
317
|
[ 10 ],
|
|
335
|
-
[ -1 ]
|
|
318
|
+
[ -1 ],
|
|
319
|
+
# here the test of adding `default: nil` just causes the proc to explode because nil gets passed to the proc
|
|
320
|
+
# which throws a NoMethodError on NilClass for the `>` method.
|
|
321
|
+
:skip_nil_default
|
|
336
322
|
|
|
337
323
|
validation_test "is: nil",
|
|
338
324
|
[ ],
|
|
@@ -589,15 +575,21 @@ describe "Chef::Resource.property validation" do
|
|
|
589
575
|
it "value nil emits a validation failed error because it must have a value" do
|
|
590
576
|
expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
|
|
591
577
|
end
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
with_property ":x, String, required: true" do
|
|
581
|
+
it "if x is not specified, retrieval fails" do
|
|
582
|
+
expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
|
|
583
|
+
end
|
|
584
|
+
it "value nil is not valid (required means 'not nil')" do
|
|
585
|
+
expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
|
|
586
|
+
end
|
|
587
|
+
it "value '1' is valid" do
|
|
588
|
+
expect(resource.x "1").to eq "1"
|
|
589
|
+
expect(resource.x).to eq "1"
|
|
590
|
+
end
|
|
591
|
+
it "value 1 is invalid" do
|
|
592
|
+
expect { resource.x 1 }.to raise_error Chef::Exceptions::ValidationFailed
|
|
601
593
|
end
|
|
602
594
|
end
|
|
603
595
|
|
|
@@ -625,12 +617,8 @@ describe "Chef::Resource.property validation" do
|
|
|
625
617
|
expect(resource.x 1).to eq 1
|
|
626
618
|
expect(resource.x).to eq 1
|
|
627
619
|
end
|
|
628
|
-
it "value nil
|
|
629
|
-
expect { resource.x nil }.to raise_error Chef::Exceptions::
|
|
630
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
631
|
-
resource.x 1
|
|
632
|
-
expect(resource.x nil).to eq 1
|
|
633
|
-
expect(resource.x).to eq 1
|
|
620
|
+
it "value nil is invalid" do
|
|
621
|
+
expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
|
|
634
622
|
end
|
|
635
623
|
end
|
|
636
624
|
|
|
@@ -643,11 +631,7 @@ describe "Chef::Resource.property validation" do
|
|
|
643
631
|
expect(resource.x).to eq 1
|
|
644
632
|
end
|
|
645
633
|
it "value nil is invalid" do
|
|
646
|
-
expect { resource.x nil }.to raise_error Chef::Exceptions::
|
|
647
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
648
|
-
resource.x 1
|
|
649
|
-
expect(resource.x nil).to eq 1
|
|
650
|
-
expect(resource.x).to eq 1
|
|
634
|
+
expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
|
|
651
635
|
end
|
|
652
636
|
end
|
|
653
637
|
end
|
|
@@ -675,15 +659,13 @@ describe "Chef::Resource.property validation" do
|
|
|
675
659
|
end
|
|
676
660
|
|
|
677
661
|
it "value '1' is invalid" do
|
|
678
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
679
662
|
expect { resource.x "1" }.to raise_error Chef::Exceptions::ValidationFailed
|
|
680
663
|
end
|
|
681
664
|
|
|
682
|
-
it "value nil does a
|
|
683
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
665
|
+
it "value nil does a set" do
|
|
684
666
|
resource.x 1
|
|
685
667
|
resource.x nil
|
|
686
|
-
expect(resource.x).to eq
|
|
668
|
+
expect(resource.x).to eq nil
|
|
687
669
|
end
|
|
688
670
|
end
|
|
689
671
|
end
|
|
@@ -709,10 +691,10 @@ describe "Chef::Resource.property validation" do
|
|
|
709
691
|
expect { resource.x "1" }.to raise_error Chef::Exceptions::ValidationFailed
|
|
710
692
|
end
|
|
711
693
|
|
|
712
|
-
it "value nil does a
|
|
694
|
+
it "value nil does a set" do
|
|
713
695
|
resource.x 1
|
|
714
696
|
resource.x nil
|
|
715
|
-
expect(resource.x).to eq
|
|
697
|
+
expect(resource.x).to eq nil
|
|
716
698
|
end
|
|
717
699
|
end
|
|
718
700
|
end
|
data/spec/unit/property_spec.rb
CHANGED
|
@@ -82,12 +82,10 @@ describe "Chef::Resource.property" do
|
|
|
82
82
|
expect(resource.bare_property 10).to eq 10
|
|
83
83
|
expect(resource.bare_property).to eq 10
|
|
84
84
|
end
|
|
85
|
-
it "
|
|
85
|
+
it "nil does a set" do
|
|
86
86
|
expect(resource.bare_property 10).to eq 10
|
|
87
|
-
expect
|
|
88
|
-
|
|
89
|
-
expect(resource.bare_property nil).to eq 10
|
|
90
|
-
expect(resource.bare_property).to eq 10
|
|
87
|
+
expect(resource.bare_property nil).to eq nil
|
|
88
|
+
expect(resource.bare_property).to eq nil
|
|
91
89
|
end
|
|
92
90
|
it "can be updated" do
|
|
93
91
|
expect(resource.bare_property 10).to eq 10
|
|
@@ -110,6 +108,16 @@ describe "Chef::Resource.property" do
|
|
|
110
108
|
end
|
|
111
109
|
end
|
|
112
110
|
|
|
111
|
+
with_property ":Straße" do
|
|
112
|
+
it "properties with UTF-8 in their name work" do
|
|
113
|
+
expect(resource.Straße).to eql(nil)
|
|
114
|
+
expect(resource.Straße "foo").to eql("foo")
|
|
115
|
+
expect(resource.Straße).to eql("foo")
|
|
116
|
+
expect(resource.Straße = "bar").to eql("bar")
|
|
117
|
+
expect(resource.Straße).to eql("bar")
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
113
121
|
with_property ":x, name_property: true" do
|
|
114
122
|
context "and subclass" do
|
|
115
123
|
let(:subresource_class) do
|
|
@@ -293,7 +301,7 @@ describe "Chef::Resource.property" do
|
|
|
293
301
|
expect(resource.property_is_set?(:name)).to be_truthy
|
|
294
302
|
resource.reset_property(:name)
|
|
295
303
|
expect(resource.property_is_set?(:name)).to be_falsey
|
|
296
|
-
expect
|
|
304
|
+
expect { resource.name }.to raise_error Chef::Exceptions::ValidationFailed
|
|
297
305
|
end
|
|
298
306
|
|
|
299
307
|
it "when referencing an undefined property, reset_property(:x) raises an error" do
|
|
@@ -514,22 +522,41 @@ describe "Chef::Resource.property" do
|
|
|
514
522
|
end
|
|
515
523
|
end
|
|
516
524
|
|
|
517
|
-
context "
|
|
518
|
-
|
|
519
|
-
|
|
525
|
+
context "string default" do
|
|
526
|
+
with_property ":x, default: ''" do
|
|
527
|
+
it "when x is not set, it returns ''" do
|
|
528
|
+
expect(resource.x).to eq ""
|
|
529
|
+
end
|
|
530
|
+
it "x is immutable" do
|
|
531
|
+
expect { resource.x << "foo" }.to raise_error(RuntimeError, "can't modify frozen String")
|
|
532
|
+
end
|
|
533
|
+
end
|
|
520
534
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
535
|
+
with_property ":x, default: lazy { '' }" do
|
|
536
|
+
it "x is immutable" do
|
|
537
|
+
expect(resource.x).to eq ""
|
|
538
|
+
resource.x << "foo"
|
|
539
|
+
expect(resource.x).to eq "foo"
|
|
540
|
+
expect(resource_class.new("other").x).to eq ""
|
|
541
|
+
end
|
|
542
|
+
end
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
context "hash default" do
|
|
546
|
+
with_property ":x, default: {}" do
|
|
547
|
+
it "when x is not set, it returns {}" do
|
|
548
|
+
expect(resource.x).to eq({})
|
|
549
|
+
end
|
|
550
|
+
it "x is immutable" do
|
|
551
|
+
expect { resource.x["foo"] = "bar" }.to raise_error(RuntimeError, "can't modify frozen Hash")
|
|
552
|
+
end
|
|
553
|
+
it "The same exact value is returned multiple times in a row" do
|
|
554
|
+
value = resource.x
|
|
555
|
+
expect(value).to eq({})
|
|
556
|
+
expect(resource.x.object_id).to eq(value.object_id)
|
|
557
|
+
end
|
|
558
|
+
it "Multiple instances of x receive the exact same value" do
|
|
559
|
+
expect(resource.x.object_id).to eq(resource_class.new("blah2").x.object_id)
|
|
533
560
|
end
|
|
534
561
|
end
|
|
535
562
|
|
|
@@ -537,17 +564,34 @@ describe "Chef::Resource.property" do
|
|
|
537
564
|
it "when x is not set, it returns {}" do
|
|
538
565
|
expect(resource.x).to eq({})
|
|
539
566
|
end
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
567
|
+
it "The value is the same each time it is called" do
|
|
568
|
+
value = resource.x
|
|
569
|
+
expect(value).to eq({})
|
|
570
|
+
expect(resource.x.object_id).to eq(value.object_id)
|
|
571
|
+
end
|
|
545
572
|
it "Multiple instances of x receive different values" do
|
|
546
573
|
expect(resource.x.object_id).not_to eq(resource_class.new("blah2").x.object_id)
|
|
547
574
|
end
|
|
548
575
|
end
|
|
549
576
|
end
|
|
550
577
|
|
|
578
|
+
context "complex, nested default" do
|
|
579
|
+
with_property ":x, default: [{foo: 'bar'}]" do
|
|
580
|
+
it "when x is not set, it returns [{foo: 'bar'}]" do
|
|
581
|
+
expect(resource.x).to eq([{ foo: "bar" }])
|
|
582
|
+
end
|
|
583
|
+
it "x is immutable" do
|
|
584
|
+
expect { resource.x << :other }.to raise_error(RuntimeError, "can't modify frozen Array")
|
|
585
|
+
end
|
|
586
|
+
it "x.first is immutable" do
|
|
587
|
+
expect { resource.x.first[:foo] = "other" }.to raise_error(RuntimeError, "can't modify frozen Hash")
|
|
588
|
+
end
|
|
589
|
+
it "x.first[:foo] is immutable" do
|
|
590
|
+
expect { resource.x.first[:foo] << "other" }.to raise_error(RuntimeError, "can't modify frozen String")
|
|
591
|
+
end
|
|
592
|
+
end
|
|
593
|
+
end
|
|
594
|
+
|
|
551
595
|
context "with a class with 'blah' as both class and instance methods" do
|
|
552
596
|
before do
|
|
553
597
|
resource_class.class_eval do
|
|
@@ -568,7 +612,6 @@ describe "Chef::Resource.property" do
|
|
|
568
612
|
it "x is run in the context of each instance it is run in" do
|
|
569
613
|
expect(resource.x).to eq "blah1"
|
|
570
614
|
expect(resource_class.new("another").x).to eq "another2"
|
|
571
|
-
# expect(resource.x).to eq "blah3"
|
|
572
615
|
end
|
|
573
616
|
end
|
|
574
617
|
|
|
@@ -579,30 +622,13 @@ describe "Chef::Resource.property" do
|
|
|
579
622
|
it "x is passed the value of each instance it is run in" do
|
|
580
623
|
expect(resource.x).to eq "classblah1"
|
|
581
624
|
expect(resource_class.new("another").x).to eq "classanother2"
|
|
582
|
-
# expect(resource.x).to eq "classblah3"
|
|
583
625
|
end
|
|
584
626
|
end
|
|
585
627
|
end
|
|
586
628
|
|
|
587
629
|
context "validation of defaults" do
|
|
588
|
-
it "When a class is declared with property :x, String, default: 10,
|
|
589
|
-
expect { resource_class.class_eval { property :x, String, default: 10 } }.to raise_error Chef::Exceptions::
|
|
590
|
-
/Default value 10 is invalid for property x of resource chef_resource_property_spec_(\d+). In Chef 13 this will become an error: Property x must be one of: String! You passed 10./
|
|
591
|
-
end
|
|
592
|
-
context "With property :x, String, default: 10" do
|
|
593
|
-
before do
|
|
594
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
595
|
-
resource_class.class_eval { property :x, String, default: 10 }
|
|
596
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = true
|
|
597
|
-
end
|
|
598
|
-
|
|
599
|
-
it "when x is set, no error is raised" do
|
|
600
|
-
expect(resource.x "hi").to eq "hi"
|
|
601
|
-
expect(resource.x).to eq "hi"
|
|
602
|
-
end
|
|
603
|
-
it "when x is retrieved, no validation error is raised" do
|
|
604
|
-
expect(resource.x).to eq 10
|
|
605
|
-
end
|
|
630
|
+
it "When a class is declared with property :x, String, default: 10, it immediately fails validation" do
|
|
631
|
+
expect { resource_class.class_eval { property :x, String, default: 10 } }.to raise_error Chef::Exceptions::ValidationFailed
|
|
606
632
|
end
|
|
607
633
|
|
|
608
634
|
with_property ":x, String, default: lazy { Namer.next_index }" do
|
|
@@ -613,12 +639,9 @@ describe "Chef::Resource.property" do
|
|
|
613
639
|
expect(resource.x "hi").to eq "hi"
|
|
614
640
|
expect(resource.x).to eq "hi"
|
|
615
641
|
end
|
|
616
|
-
it "when x is retrieved,
|
|
617
|
-
expect { resource.x }.to raise_error Chef::Exceptions::
|
|
618
|
-
/Default value 1 is invalid for property x of resource chef_resource_property_spec_(\d+). In Chef 13 this will become an error: Property x must be one of: String! You passed 1./
|
|
642
|
+
it "when x is retrieved, it fails validation" do
|
|
643
|
+
expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
|
|
619
644
|
expect(Namer.current_index).to eq 1
|
|
620
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
621
|
-
expect(resource.x).to eq 2
|
|
622
645
|
end
|
|
623
646
|
end
|
|
624
647
|
|
|
@@ -731,11 +754,8 @@ describe "Chef::Resource.property" do
|
|
|
731
754
|
end
|
|
732
755
|
end
|
|
733
756
|
with_property ':x, Integer, coerce: proc { |v| "#{v}#{next_index}" }, default: 10' do
|
|
734
|
-
it "when x is retrieved, it is coerced and
|
|
735
|
-
expect { resource.x }.to raise_error Chef::Exceptions::
|
|
736
|
-
/Default value 10 is invalid for property x of resource chef_resource_property_spec_(\d+). In Chef 13 this will become an error: Property x must be one of: Integer! You passed "101"./
|
|
737
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
738
|
-
expect(resource.x).to eq "102"
|
|
757
|
+
it "when x is retrieved, it is coerced and fails validation" do
|
|
758
|
+
expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
|
|
739
759
|
end
|
|
740
760
|
end
|
|
741
761
|
with_property ':x, String, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
|
|
@@ -744,11 +764,8 @@ describe "Chef::Resource.property" do
|
|
|
744
764
|
end
|
|
745
765
|
end
|
|
746
766
|
with_property ':x, Integer, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
|
|
747
|
-
it "when x is retrieved, it is coerced and
|
|
748
|
-
expect { resource.x }.to raise_error Chef::Exceptions::
|
|
749
|
-
/Default value 10 is invalid for property x of resource chef_resource_property_spec_(\d+). In Chef 13 this will become an error: Property x must be one of: Integer! You passed "101"./
|
|
750
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
751
|
-
expect(resource.x).to eq "102"
|
|
767
|
+
it "when x is retrieved, it is coerced and fails validation" do
|
|
768
|
+
expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
|
|
752
769
|
end
|
|
753
770
|
end
|
|
754
771
|
with_property ':x, proc { |v| Namer.next_index; true }, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
|
|
@@ -1019,74 +1036,23 @@ describe "Chef::Resource.property" do
|
|
|
1019
1036
|
end
|
|
1020
1037
|
|
|
1021
1038
|
context "default ordering deprecation warnings" do
|
|
1022
|
-
it "emits
|
|
1023
|
-
expect { resource_class.property :x, :default => 10, name.to_sym => true }.to raise_error Chef::Exceptions::
|
|
1024
|
-
/Cannot specify both default and name_property together on property x of resource chef_resource_property_spec_(\d+)
|
|
1025
|
-
end
|
|
1026
|
-
it "emits a deprecation warning for property :x, default: nil, #{name}: true" do
|
|
1027
|
-
expect { resource_class.property :x, :default => nil, name.to_sym => true }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
|
|
1028
|
-
/Cannot specify both default and name_property together on property x of resource chef_resource_property_spec_(\d+). Only one \(name_property\) will be obeyed./
|
|
1029
|
-
end
|
|
1030
|
-
it "emits a deprecation warning for property :x, #{name}: true, default: 10" do
|
|
1031
|
-
expect { resource_class.property :x, name.to_sym => true, :default => 10 }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
|
|
1032
|
-
/Cannot specify both default and name_property together on property x of resource chef_resource_property_spec_(\d+). Only one \(name_property\) will be obeyed./
|
|
1033
|
-
end
|
|
1034
|
-
it "emits a deprecation warning for property :x, #{name}: true, default: nil" do
|
|
1035
|
-
expect { resource_class.property :x, name.to_sym => true, :default => nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
|
|
1036
|
-
/Cannot specify both default and name_property together on property x of resource chef_resource_property_spec_(\d+). Only one \(name_property\) will be obeyed./
|
|
1037
|
-
end
|
|
1038
|
-
end
|
|
1039
|
-
|
|
1040
|
-
context "default ordering" do
|
|
1041
|
-
before { Chef::Config[:treat_deprecation_warnings_as_errors] = false }
|
|
1042
|
-
with_property ":x, default: 10, #{name}: true" do
|
|
1043
|
-
it "chooses default over #{name}" do
|
|
1044
|
-
expect(resource.x).to eq 10
|
|
1045
|
-
end
|
|
1039
|
+
it "emits an error for property :x, default: 10, #{name}: true" do
|
|
1040
|
+
expect { resource_class.property :x, :default => 10, name.to_sym => true }.to raise_error Chef::Exceptions::ArgumentError,
|
|
1041
|
+
/Cannot specify both default and name_property\/name_attribute together on property x of resource chef_resource_property_spec_(\d+)/
|
|
1046
1042
|
end
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
end
|
|
1043
|
+
it "emits an error for property :x, default: nil, #{name}: true" do
|
|
1044
|
+
expect { resource_class.property :x, :default => nil, name.to_sym => true }.to raise_error Chef::Exceptions::ArgumentError,
|
|
1045
|
+
/Cannot specify both default and name_property\/name_attribute together on property x of resource chef_resource_property_spec_(\d+)/
|
|
1051
1046
|
end
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
end
|
|
1047
|
+
it "emits an error for property :x, #{name}: true, default: 10" do
|
|
1048
|
+
expect { resource_class.property :x, name.to_sym => true, :default => 10 }.to raise_error Chef::Exceptions::ArgumentError,
|
|
1049
|
+
/Cannot specify both default and name_property\/name_attribute together on property x of resource chef_resource_property_spec_(\d+)/
|
|
1056
1050
|
end
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
end
|
|
1051
|
+
it "emits an error for property :x, #{name}: true, default: nil" do
|
|
1052
|
+
expect { resource_class.property :x, name.to_sym => true, :default => nil }.to raise_error Chef::Exceptions::ArgumentError,
|
|
1053
|
+
/Cannot specify both default and name_property\/name_attribute together on property x of resource chef_resource_property_spec_(\d+)/
|
|
1061
1054
|
end
|
|
1062
1055
|
end
|
|
1063
|
-
|
|
1064
|
-
context "default ordering when #{name} is nil" do
|
|
1065
|
-
with_property ":x, #{name}: nil, default: 10" do
|
|
1066
|
-
it "chooses default" do
|
|
1067
|
-
expect(resource.x).to eq 10
|
|
1068
|
-
end
|
|
1069
|
-
end
|
|
1070
|
-
with_property ":x, default: 10, #{name}: nil" do
|
|
1071
|
-
it "chooses default" do
|
|
1072
|
-
expect(resource.x).to eq 10
|
|
1073
|
-
end
|
|
1074
|
-
end
|
|
1075
|
-
end
|
|
1076
|
-
|
|
1077
|
-
context "default ordering when #{name} is false" do
|
|
1078
|
-
with_property ":x, #{name}: false, default: 10" do
|
|
1079
|
-
it "chooses default" do
|
|
1080
|
-
expect(resource.x).to eq 10
|
|
1081
|
-
end
|
|
1082
|
-
end
|
|
1083
|
-
with_property ":x, default: 10, #{name}: nil" do
|
|
1084
|
-
it "chooses default" do
|
|
1085
|
-
expect(resource.x).to eq 10
|
|
1086
|
-
end
|
|
1087
|
-
end
|
|
1088
|
-
end
|
|
1089
|
-
|
|
1090
1056
|
end
|
|
1091
1057
|
end
|
|
1092
1058
|
|
|
@@ -1108,7 +1074,7 @@ describe "Chef::Resource.property" do
|
|
|
1108
1074
|
include Chef::Mixin::Properties
|
|
1109
1075
|
property_type(is: [:a, :b], default: :c)
|
|
1110
1076
|
end
|
|
1111
|
-
end.to raise_error(Chef::Exceptions::
|
|
1077
|
+
end.to raise_error(Chef::Exceptions::ValidationFailed)
|
|
1112
1078
|
expect do
|
|
1113
1079
|
module ::PropertySpecPropertyTypes
|
|
1114
1080
|
include Chef::Mixin::Properties
|
|
@@ -1177,6 +1143,20 @@ describe "Chef::Resource.property" do
|
|
|
1177
1143
|
|
|
1178
1144
|
end
|
|
1179
1145
|
|
|
1146
|
+
context "redefining Object methods" do
|
|
1147
|
+
it "disallows redefining Object methods" do
|
|
1148
|
+
expect { resource_class.class_eval { property :hash } }.to raise_error(ArgumentError)
|
|
1149
|
+
end
|
|
1150
|
+
|
|
1151
|
+
it "disallows redefining Chef::Resource methods" do
|
|
1152
|
+
expect { resource_class.class_eval { property :action } }.to raise_error(ArgumentError)
|
|
1153
|
+
end
|
|
1154
|
+
|
|
1155
|
+
it "allows redefining properties on Chef::Resource" do
|
|
1156
|
+
expect { resource_class.class_eval { property :sensitive } }.not_to raise_error
|
|
1157
|
+
end
|
|
1158
|
+
end
|
|
1159
|
+
|
|
1180
1160
|
context "with a custom property type" do
|
|
1181
1161
|
class CustomPropertyType < Chef::Property
|
|
1182
1162
|
end
|