chef 12.0.3 → 12.1.0.rc.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +4 -1
- data/README.md +42 -18
- data/distro/common/html/_sources/ctl_chef_client.txt +1 -1
- data/distro/common/html/_sources/ctl_chef_server.txt +53 -35
- data/distro/common/html/_sources/ctl_chef_solo.txt +1 -1
- data/distro/common/html/_sources/knife_bootstrap.txt +1 -1
- data/distro/common/html/_sources/knife_cookbook_site.txt +1 -1
- data/distro/common/html/_sources/knife_data_bag.txt +4 -4
- data/distro/common/html/_sources/knife_status.txt +1 -1
- data/distro/common/html/_static/searchtools.js +1 -1
- data/distro/common/html/ctl_chef_client.html +55 -7
- data/distro/common/html/ctl_chef_server.html +84 -41
- data/distro/common/html/ctl_chef_shell.html +45 -1
- data/distro/common/html/ctl_chef_solo.html +51 -5
- data/distro/common/html/index.html +2 -2
- data/distro/common/html/knife.html +1 -1
- data/distro/common/html/knife_bootstrap.html +30 -10
- data/distro/common/html/knife_cookbook_site.html +2 -0
- data/distro/common/html/knife_data_bag.html +4 -4
- data/distro/common/html/knife_node.html +2 -2
- data/distro/common/html/knife_raw.html +1 -1
- data/distro/common/html/knife_role.html +1 -1
- data/distro/common/html/knife_search.html +3 -3
- data/distro/common/html/knife_status.html +4 -0
- data/distro/common/html/searchindex.js +1 -1
- data/distro/common/man/man1/chef-shell.1 +72 -1
- data/distro/common/man/man1/knife-bootstrap.1 +71 -63
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +4 -1
- data/distro/common/man/man1/knife-cookbook.1 +1 -1
- data/distro/common/man/man1/knife-data-bag.1 +5 -5
- data/distro/common/man/man1/knife-delete.1 +1 -1
- data/distro/common/man/man1/knife-deps.1 +1 -1
- data/distro/common/man/man1/knife-diff.1 +1 -1
- data/distro/common/man/man1/knife-download.1 +1 -1
- data/distro/common/man/man1/knife-edit.1 +1 -1
- data/distro/common/man/man1/knife-environment.1 +1 -1
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
- data/distro/common/man/man1/knife-list.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +3 -3
- data/distro/common/man/man1/knife-raw.1 +2 -2
- data/distro/common/man/man1/knife-recipe-list.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +2 -2
- data/distro/common/man/man1/knife-search.1 +4 -4
- data/distro/common/man/man1/knife-serve.1 +1 -1
- data/distro/common/man/man1/knife-show.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-ssl-check.1 +1 -1
- data/distro/common/man/man1/knife-ssl-fetch.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife-upload.1 +1 -1
- data/distro/common/man/man1/knife-user.1 +1 -1
- data/distro/common/man/man1/knife-xargs.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man8/chef-apply.8 +86 -0
- data/distro/common/man/man8/chef-client.8 +76 -5
- data/distro/common/man/man8/chef-solo.8 +79 -6
- data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
- data/distro/common/markdown/man1/knife-cookbook-site.mkd +1 -1
- data/distro/common/markdown/man1/knife-data-bag.mkd +1 -1
- data/distro/common/markdown/man1/knife-environment.mkd +1 -1
- data/distro/common/markdown/man1/knife.mkd +1 -1
- data/lib/chef.rb +0 -7
- data/lib/chef/api_client.rb +10 -2
- data/lib/chef/api_client/registration.rb +7 -9
- data/lib/chef/application.rb +28 -12
- data/lib/chef/application/apply.rb +17 -1
- data/lib/chef/application/client.rb +74 -6
- data/lib/chef/application/knife.rb +1 -2
- data/lib/chef/application/solo.rb +30 -0
- data/lib/chef/application/windows_service.rb +1 -0
- data/lib/chef/application/windows_service_manager.rb +8 -2
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/audit/audit_event_proxy.rb +93 -0
- data/lib/chef/audit/audit_reporter.rb +169 -0
- data/lib/chef/audit/control_group_data.rb +140 -0
- data/lib/chef/audit/rspec_formatter.rb +37 -0
- data/lib/chef/audit/runner.rb +178 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +11 -2
- data/lib/chef/chef_fs/config.rb +25 -4
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +15 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +5 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +3 -2
- data/lib/chef/{shef/ext.rb → chef_fs/file_system/chef_repository_file_system_policies_dir.rb} +22 -3
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +4 -0
- data/lib/chef/client.rb +81 -52
- data/lib/chef/config.rb +35 -3
- data/lib/chef/cookbook/metadata.rb +3 -3
- data/lib/chef/cookbook_manifest.rb +275 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +24 -23
- data/lib/chef/cookbook_uploader.rb +11 -2
- data/lib/chef/cookbook_version.rb +71 -194
- data/lib/chef/data_bag.rb +5 -2
- data/lib/chef/data_bag_item.rb +6 -3
- data/lib/chef/deprecation/warnings.rb +5 -4
- data/lib/chef/dsl/audit.rb +51 -0
- data/lib/chef/dsl/include_recipe.rb +2 -3
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +49 -31
- data/lib/chef/encrypted_data_bag_item/assertions.rb +0 -3
- data/lib/chef/environment.rb +5 -2
- data/lib/chef/event_dispatch/base.rb +36 -1
- data/lib/chef/event_dispatch/dispatcher.rb +3 -5
- data/lib/chef/exceptions.rb +61 -2
- data/lib/chef/file_access_control/unix.rb +12 -0
- data/lib/chef/file_access_control/windows.rb +14 -0
- data/lib/chef/formatters/doc.rb +47 -1
- data/{spec/unit/monkey_patches/string_spec.rb → lib/chef/guard_interpreter.rb} +11 -16
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -2
- data/lib/chef/http.rb +1 -2
- data/lib/chef/knife.rb +5 -3
- data/lib/chef/knife/bootstrap.rb +84 -15
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +165 -0
- data/lib/chef/knife/bootstrap/client_builder.rb +190 -0
- data/lib/chef/knife/bootstrap/{README.md → templates/README.md} +0 -0
- data/lib/chef/knife/bootstrap/{archlinux-gems.erb → templates/archlinux-gems.erb} +9 -0
- data/lib/chef/knife/bootstrap/{chef-aix.erb → templates/chef-aix.erb} +9 -0
- data/lib/chef/knife/bootstrap/{chef-full.erb → templates/chef-full.erb} +10 -1
- data/lib/chef/knife/client_create.rb +8 -7
- 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_list.rb +1 -1
- data/lib/chef/knife/cookbook_site_search.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +39 -28
- data/lib/chef/knife/cookbook_site_show.rb +3 -3
- data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
- data/lib/chef/knife/cookbook_test.rb +1 -0
- data/lib/chef/knife/cookbook_upload.rb +13 -8
- data/lib/chef/knife/core/bootstrap_context.rb +14 -3
- data/lib/chef/knife/core/generic_presenter.rb +5 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +24 -0
- data/lib/chef/knife/core/ui.rb +9 -1
- data/lib/chef/knife/node_run_list_remove.rb +11 -3
- data/lib/chef/knife/raw.rb +14 -3
- data/lib/chef/knife/role_env_run_list_add.rb +86 -0
- data/lib/chef/knife/role_env_run_list_clear.rb +55 -0
- data/lib/chef/knife/role_env_run_list_remove.rb +57 -0
- data/lib/chef/knife/role_env_run_list_replace.rb +59 -0
- data/lib/chef/knife/role_env_run_list_set.rb +70 -0
- data/lib/chef/knife/role_run_list_add.rb +86 -0
- data/lib/chef/knife/role_run_list_clear.rb +55 -0
- data/lib/chef/knife/role_run_list_remove.rb +57 -0
- data/lib/chef/knife/role_run_list_replace.rb +59 -0
- data/lib/chef/knife/role_run_list_set.rb +70 -0
- data/lib/chef/knife/search.rb +4 -4
- data/lib/chef/knife/serve.rb +3 -0
- data/lib/chef/knife/ssh.rb +1 -1
- data/lib/chef/knife/ssl_check.rb +2 -2
- data/lib/chef/knife/ssl_fetch.rb +14 -1
- data/lib/chef/log.rb +10 -1
- data/lib/chef/mixin/command.rb +1 -1
- data/lib/chef/mixin/command/windows.rb +1 -5
- data/lib/chef/mixin/get_source_from_package.rb +1 -0
- data/lib/chef/mixin/params_validate.rb +2 -2
- data/lib/chef/mixin/securable.rb +1 -7
- data/lib/chef/mixin/shell_out.rb +7 -1
- data/lib/chef/mixin/template.rb +2 -14
- data/lib/chef/mixin/why_run.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +4 -0
- data/lib/chef/monologger.rb +0 -2
- data/lib/chef/node.rb +5 -2
- data/lib/chef/node/attribute.rb +11 -9
- data/lib/chef/node/attribute_collections.rb +8 -12
- data/lib/chef/node/immutable_collections.rb +4 -10
- data/lib/chef/org.rb +148 -0
- data/lib/chef/platform/provider_mapping.rb +3 -2
- data/lib/chef/platform/provider_priority_map.rb +2 -0
- data/lib/chef/platform/query_helpers.rb +0 -3
- data/lib/chef/policy_builder/policyfile.rb +51 -8
- data/lib/chef/provider/deploy.rb +1 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_script.rb +13 -7
- data/lib/chef/provider/env.rb +8 -8
- data/lib/chef/provider/execute.rb +55 -36
- data/lib/chef/provider/file.rb +8 -0
- data/lib/chef/provider/group.rb +2 -0
- data/lib/chef/provider/group/dscl.rb +3 -4
- data/lib/chef/provider/ifconfig.rb +25 -25
- data/lib/chef/provider/ifconfig/aix.rb +25 -27
- data/lib/chef/provider/lwrp_base.rb +1 -1
- data/lib/chef/provider/mount.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +3 -4
- data/lib/chef/provider/mount/solaris.rb +1 -1
- data/lib/chef/provider/package.rb +297 -48
- data/lib/chef/provider/package/aix.rb +25 -30
- data/lib/chef/provider/package/apt.rb +63 -19
- data/lib/chef/provider/package/dpkg.rb +15 -16
- data/lib/chef/provider/package/macports.rb +7 -7
- data/lib/chef/provider/package/openbsd.rb +107 -0
- data/lib/chef/provider/package/pacman.rb +13 -15
- data/lib/chef/provider/package/portage.rb +3 -4
- data/lib/chef/provider/package/rpm.rb +28 -17
- data/lib/chef/provider/package/rubygems.rb +9 -9
- data/lib/chef/provider/package/solaris.rb +17 -21
- data/lib/chef/provider/package/windows/msi.rb +1 -1
- data/lib/chef/provider/package/yum-dump.py +2 -2
- data/lib/chef/provider/package/yum.rb +117 -51
- data/lib/chef/provider/package/zypper.rb +17 -18
- data/lib/chef/provider/powershell_script.rb +4 -4
- data/lib/chef/provider/registry_key.rb +2 -2
- data/lib/chef/provider/remote_directory.rb +1 -1
- data/lib/chef/provider/script.rb +25 -16
- data/lib/chef/provider/service.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +1 -1
- data/lib/chef/provider/service/openbsd.rb +216 -0
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +99 -1
- data/lib/chef/provider/user.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +19 -4
- data/lib/chef/providers.rb +2 -0
- data/lib/chef/recipe.rb +11 -5
- data/lib/chef/request_id.rb +1 -1
- data/lib/chef/resource.rb +839 -444
- data/lib/chef/resource/chef_gem.rb +20 -3
- data/lib/chef/resource/conditional.rb +3 -14
- data/lib/chef/resource/dsc_script.rb +14 -0
- data/lib/chef/resource/execute.rb +14 -7
- data/lib/chef/resource/file.rb +14 -0
- data/lib/chef/resource/file/verification.rb +122 -0
- data/lib/chef/resource/ips_package.rb +1 -1
- data/lib/chef/resource/lwrp_base.rb +2 -11
- data/lib/chef/resource/macports_package.rb +2 -1
- data/lib/chef/resource/openbsd_package.rb +51 -0
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/paludis_package.rb +1 -1
- data/lib/chef/resource/reboot.rb +1 -1
- data/lib/chef/resource/remote_file.rb +1 -0
- data/lib/chef/resource/rpm_package.rb +9 -0
- data/lib/chef/resource/script.rb +11 -0
- data/lib/chef/resource/template.rb +2 -3
- data/lib/chef/resource/windows_package.rb +1 -1
- data/lib/chef/resource/windows_service.rb +18 -0
- data/lib/chef/resource_builder.rb +137 -0
- data/lib/chef/resource_definition.rb +1 -1
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/role.rb +17 -4
- data/lib/chef/run_context.rb +10 -6
- data/lib/chef/search/query.rb +66 -87
- data/lib/chef/shell/ext.rb +2 -2
- data/lib/chef/util/diff.rb +1 -4
- data/lib/chef/util/dsc/configuration_generator.rb +30 -6
- data/lib/chef/util/dsc/lcm_output_parser.rb +7 -3
- data/lib/chef/util/dsc/local_configuration_manager.rb +8 -8
- data/lib/chef/util/file_edit.rb +2 -2
- data/lib/chef/util/path_helper.rb +1 -4
- data/lib/chef/util/windows/net_use.rb +3 -3
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +1 -0
- data/lib/chef/win32/api/security.rb +26 -0
- data/lib/chef/win32/file.rb +21 -0
- data/lib/chef/win32/security.rb +46 -0
- data/lib/chef/win32/security/token.rb +8 -0
- data/lib/chef/win32/version.rb +0 -4
- data/spec/data/recipes.tgz +0 -0
- data/spec/functional/application_spec.rb +1 -1
- data/spec/functional/audit/rspec_formatter_spec.rb +54 -0
- data/spec/functional/audit/runner_spec.rb +137 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +10 -10
- data/spec/functional/dsl/registry_helper_spec.rb +6 -6
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +5 -5
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +12 -21
- data/spec/functional/http/simple_spec.rb +1 -1
- data/spec/functional/knife/cookbook_delete_spec.rb +24 -24
- data/spec/functional/knife/exec_spec.rb +2 -4
- data/spec/functional/knife/smoke_test.rb +1 -1
- data/spec/functional/knife/ssh_spec.rb +23 -23
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +8 -8
- data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +2 -2
- data/spec/functional/rebooter_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +3 -0
- data/spec/functional/resource/aixinit_service_spec.rb +3 -3
- data/spec/functional/resource/bash_spec.rb +88 -0
- data/spec/functional/resource/deploy_revision_spec.rb +99 -100
- data/spec/functional/resource/env_spec.rb +3 -3
- data/spec/functional/resource/execute_spec.rb +97 -63
- data/spec/functional/resource/file_spec.rb +7 -7
- data/spec/functional/resource/git_spec.rb +13 -13
- data/spec/functional/resource/group_spec.rb +28 -25
- data/spec/functional/resource/ifconfig_spec.rb +2 -2
- data/spec/functional/resource/link_spec.rb +77 -78
- data/spec/functional/resource/mount_spec.rb +5 -5
- data/spec/functional/resource/ohai_spec.rb +1 -1
- data/spec/functional/resource/package_spec.rb +22 -22
- data/spec/functional/resource/powershell_spec.rb +57 -42
- data/spec/functional/resource/reboot_spec.rb +2 -2
- data/spec/functional/resource/registry_spec.rb +91 -91
- data/spec/functional/resource/remote_directory_spec.rb +19 -19
- data/spec/functional/resource/remote_file_spec.rb +18 -18
- data/spec/functional/resource/template_spec.rb +4 -4
- data/spec/functional/resource/user/dscl_spec.rb +4 -4
- data/spec/functional/resource/user/useradd_spec.rb +64 -51
- data/spec/functional/resource/windows_service_spec.rb +98 -0
- data/spec/functional/run_lock_spec.rb +9 -9
- data/spec/functional/shell_spec.rb +3 -3
- data/spec/functional/tiny_server_spec.rb +12 -12
- data/spec/functional/util/path_helper_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_helper_spec.rb +125 -125
- data/spec/functional/win32/security_spec.rb +65 -2
- data/spec/functional/win32/service_manager_spec.rb +30 -84
- data/spec/functional/win32/versions_spec.rb +6 -6
- data/spec/integration/client/client_spec.rb +102 -9
- data/spec/integration/knife/chef_fs_data_store_spec.rb +12 -8
- data/spec/integration/knife/common_options_spec.rb +3 -3
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/knife/deps_spec.rb +4 -4
- data/spec/integration/knife/diff_spec.rb +6 -6
- data/spec/integration/knife/download_spec.rb +6 -6
- data/spec/integration/knife/list_spec.rb +2 -2
- data/spec/integration/knife/raw_spec.rb +5 -5
- data/spec/integration/knife/serve_spec.rb +3 -3
- data/spec/integration/knife/show_spec.rb +3 -3
- data/spec/integration/knife/upload_spec.rb +18 -18
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +11 -12
- data/spec/spec_helper.rb +27 -15
- data/spec/stress/win32/file_spec.rb +4 -4
- data/spec/stress/win32/security_spec.rb +4 -4
- data/spec/support/chef_helpers.rb +3 -3
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/mock/platform.rb +1 -1
- data/spec/support/pedant/Gemfile +3 -0
- data/spec/support/pedant/pedant_config.rb +9 -2
- data/spec/support/pedant/run_pedant.rb +15 -16
- data/spec/support/platform_helpers.rb +8 -12
- data/spec/support/shared/functional/directory_resource.rb +13 -13
- data/spec/support/shared/functional/file_resource.rb +83 -83
- data/spec/support/shared/functional/http.rb +1 -1
- data/spec/support/shared/functional/securable_resource.rb +64 -64
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +43 -41
- data/spec/support/shared/functional/win32_service.rb +60 -0
- data/spec/support/shared/functional/windows_script.rb +8 -8
- data/spec/support/shared/integration/knife_support.rb +8 -5
- data/spec/support/shared/matchers/exit_with_code.rb +6 -2
- data/spec/support/shared/unit/api_error_inspector.rb +8 -8
- data/spec/support/shared/unit/execute_resource.rb +24 -20
- data/spec/support/shared/unit/file_system_support.rb +2 -2
- data/spec/support/shared/unit/platform_introspector.rb +21 -21
- data/spec/support/shared/unit/provider/file.rb +239 -210
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +69 -69
- data/spec/support/shared/unit/script_resource.rb +40 -32
- data/spec/support/shared/unit/windows_script_resource.rb +8 -8
- data/spec/unit/api_client/registration_spec.rb +47 -47
- data/spec/unit/api_client_spec.rb +107 -69
- data/spec/unit/application/apply_spec.rb +31 -15
- data/spec/unit/application/client_spec.rb +146 -45
- data/spec/unit/application/knife_spec.rb +31 -31
- data/spec/unit/application/solo_spec.rb +59 -43
- data/spec/unit/application_spec.rb +109 -74
- data/spec/unit/audit/audit_event_proxy_spec.rb +311 -0
- data/spec/unit/audit/audit_reporter_spec.rb +393 -0
- data/spec/unit/audit/control_group_data_spec.rb +478 -0
- data/{lib/chef/monkey_patches/file.rb → spec/unit/audit/rspec_formatter_spec.rb} +11 -8
- data/spec/unit/audit/runner_spec.rb +135 -0
- data/spec/unit/chef_fs/config_spec.rb +52 -0
- data/spec/unit/chef_fs/diff_spec.rb +12 -12
- data/spec/unit/chef_fs/file_pattern_spec.rb +276 -277
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +6 -6
- data/spec/unit/chef_fs/file_system_spec.rb +26 -13
- data/spec/unit/chef_fs/parallelizer.rb +87 -87
- data/spec/unit/chef_spec.rb +1 -1
- data/spec/unit/client_spec.rb +263 -97
- data/spec/unit/config_fetcher_spec.rb +13 -13
- data/spec/unit/config_spec.rb +105 -66
- data/spec/unit/cookbook/chefignore_spec.rb +6 -6
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +3 -3
- data/spec/unit/cookbook/metadata_spec.rb +149 -149
- data/spec/unit/cookbook/syntax_check_spec.rb +36 -31
- data/spec/unit/cookbook_loader_spec.rb +62 -58
- data/spec/unit/cookbook_manifest_spec.rb +141 -468
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +27 -27
- data/spec/unit/cookbook_spec.rb +15 -15
- data/spec/unit/cookbook_uploader_spec.rb +37 -3
- data/spec/unit/cookbook_version_file_specificity_spec.rb +554 -0
- data/spec/unit/cookbook_version_spec.rb +98 -240
- data/spec/unit/daemon_spec.rb +31 -31
- data/spec/unit/data_bag_item_spec.rb +121 -89
- data/spec/unit/data_bag_spec.rb +35 -35
- data/spec/unit/deprecation_spec.rb +27 -14
- data/spec/unit/digester_spec.rb +3 -3
- data/spec/unit/dsl/audit_spec.rb +43 -0
- data/spec/unit/dsl/data_query_spec.rb +1 -1
- data/spec/unit/dsl/platform_introspection_spec.rb +14 -14
- data/spec/unit/dsl/reboot_pending_spec.rb +18 -18
- data/spec/unit/dsl/regsitry_helper_spec.rb +6 -6
- data/spec/unit/encrypted_data_bag_item_spec.rb +58 -82
- data/spec/unit/environment_spec.rb +105 -105
- data/spec/unit/exceptions_spec.rb +47 -1
- data/spec/unit/file_access_control_spec.rb +62 -56
- data/spec/unit/file_cache_spec.rb +11 -11
- data/spec/unit/file_content_management/deploy/cp_spec.rb +2 -2
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +10 -10
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +23 -23
- data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +14 -14
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +12 -12
- data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +16 -16
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +4 -4
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +103 -13
- data/spec/unit/guard_interpreter_spec.rb +41 -0
- data/spec/unit/handler/json_file_spec.rb +10 -10
- data/spec/unit/handler_spec.rb +39 -39
- data/spec/unit/http/basic_client_spec.rb +3 -3
- data/spec/unit/http/http_request_spec.rb +10 -10
- data/spec/unit/http/simple_spec.rb +3 -3
- data/spec/unit/http/ssl_policies_spec.rb +15 -15
- data/spec/unit/http/validate_content_length_spec.rb +18 -13
- data/spec/unit/http_spec.rb +16 -9
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +153 -0
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +178 -0
- data/spec/unit/knife/bootstrap_spec.rb +144 -91
- data/spec/unit/knife/client_bulk_delete_spec.rb +24 -24
- data/spec/unit/knife/client_create_spec.rb +57 -43
- data/spec/unit/knife/client_delete_spec.rb +15 -15
- data/spec/unit/knife/client_edit_spec.rb +4 -4
- data/spec/unit/knife/client_list_spec.rb +2 -2
- data/spec/unit/knife/client_reregister_spec.rb +9 -9
- data/spec/unit/knife/configure_client_spec.rb +20 -20
- data/spec/unit/knife/configure_spec.rb +85 -85
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +15 -15
- data/spec/unit/knife/cookbook_create_spec.rb +59 -59
- data/spec/unit/knife/cookbook_delete_spec.rb +49 -49
- data/spec/unit/knife/cookbook_download_spec.rb +56 -56
- data/spec/unit/knife/cookbook_list_spec.rb +9 -9
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +8 -8
- data/spec/unit/knife/cookbook_metadata_spec.rb +44 -44
- data/spec/unit/knife/cookbook_show_spec.rb +29 -29
- data/spec/unit/knife/cookbook_site_download_spec.rb +26 -26
- data/spec/unit/knife/cookbook_site_install_spec.rb +5 -1
- data/spec/unit/knife/cookbook_site_share_spec.rb +68 -59
- data/spec/unit/knife/cookbook_site_unshare_spec.rb +15 -15
- data/spec/unit/knife/cookbook_test_spec.rb +16 -16
- data/spec/unit/knife/cookbook_upload_spec.rb +105 -71
- data/spec/unit/knife/core/bootstrap_context_spec.rb +37 -22
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +36 -36
- data/spec/unit/knife/core/object_loader_spec.rb +3 -3
- data/spec/unit/knife/core/subcommand_loader_spec.rb +107 -33
- data/spec/unit/knife/core/ui_spec.rb +84 -72
- data/spec/unit/knife/data_bag_from_file_spec.rb +1 -1
- data/spec/unit/knife/environment_compare_spec.rb +12 -12
- data/spec/unit/knife/environment_create_spec.rb +16 -16
- data/spec/unit/knife/environment_delete_spec.rb +14 -14
- data/spec/unit/knife/environment_edit_spec.rb +15 -15
- data/spec/unit/knife/environment_from_file_spec.rb +17 -17
- data/spec/unit/knife/environment_list_spec.rb +7 -7
- data/spec/unit/knife/environment_show_spec.rb +10 -10
- data/spec/unit/knife/index_rebuild_spec.rb +17 -17
- data/spec/unit/knife/knife_help.rb +24 -24
- data/spec/unit/knife/node_bulk_delete_spec.rb +14 -14
- data/spec/unit/knife/node_delete_spec.rb +11 -11
- data/spec/unit/knife/node_edit_spec.rb +17 -17
- data/spec/unit/knife/node_environment_set_spec.rb +12 -12
- data/spec/unit/knife/node_from_file_spec.rb +8 -8
- data/spec/unit/knife/node_list_spec.rb +9 -9
- data/spec/unit/knife/node_run_list_add_spec.rb +29 -29
- data/spec/unit/knife/node_run_list_remove_spec.rb +28 -13
- data/spec/unit/knife/node_run_list_set_spec.rb +27 -27
- data/spec/unit/knife/raw_spec.rb +43 -0
- data/spec/unit/knife/role_bulk_delete_spec.rb +12 -12
- data/spec/unit/knife/role_create_spec.rb +12 -12
- data/spec/unit/knife/role_delete_spec.rb +10 -10
- data/spec/unit/knife/role_edit_spec.rb +13 -13
- data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -0
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +100 -0
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +108 -0
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +108 -0
- data/spec/unit/knife/role_env_run_list_set_spec.rb +102 -0
- data/spec/unit/knife/role_from_file_spec.rb +10 -10
- data/spec/unit/knife/role_list_spec.rb +7 -7
- data/spec/unit/knife/role_run_list_add_spec.rb +179 -0
- data/spec/unit/knife/role_run_list_clear_spec.rb +90 -0
- data/spec/unit/knife/role_run_list_remove_spec.rb +98 -0
- data/spec/unit/knife/role_run_list_replace_spec.rb +101 -0
- data/spec/unit/knife/role_run_list_set_spec.rb +92 -0
- data/spec/unit/knife/ssh_spec.rb +66 -66
- data/spec/unit/knife/ssl_check_spec.rb +27 -27
- data/spec/unit/knife/ssl_fetch_spec.rb +45 -12
- data/spec/unit/knife/status_spec.rb +5 -5
- data/spec/unit/knife/tag_create_spec.rb +5 -5
- data/spec/unit/knife/tag_delete_spec.rb +6 -6
- data/spec/unit/knife/tag_list_spec.rb +4 -4
- data/spec/unit/knife/user_create_spec.rb +18 -18
- data/spec/unit/knife/user_delete_spec.rb +4 -4
- data/spec/unit/knife/user_edit_spec.rb +7 -7
- data/spec/unit/knife/user_list_spec.rb +2 -2
- data/spec/unit/knife/user_reregister_spec.rb +10 -10
- data/spec/unit/knife/user_show_spec.rb +5 -5
- data/spec/unit/knife_spec.rb +36 -36
- data/spec/unit/lwrp_spec.rb +63 -39
- data/spec/unit/mash_spec.rb +6 -6
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/command_spec.rb +13 -13
- data/spec/unit/mixin/convert_to_class_name_spec.rb +6 -6
- data/spec/unit/mixin/deep_merge_spec.rb +49 -49
- data/spec/unit/mixin/deprecation_spec.rb +5 -5
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +14 -14
- data/spec/unit/mixin/homebrew_user_spec.rb +3 -3
- data/spec/unit/mixin/params_validate_spec.rb +71 -71
- data/spec/unit/mixin/path_sanity_spec.rb +14 -14
- data/spec/unit/mixin/securable_spec.rb +177 -177
- data/spec/unit/mixin/shell_out_spec.rb +56 -27
- data/spec/unit/mixin/template_spec.rb +31 -31
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
- data/spec/unit/mixin/xml_escape_spec.rb +7 -7
- data/spec/unit/monkey_patches/uri_spec.rb +1 -1
- data/spec/unit/monologger_spec.rb +3 -3
- data/spec/unit/node/attribute_spec.rb +185 -136
- data/spec/unit/node/immutable_collections_spec.rb +22 -22
- data/spec/unit/node_spec.rb +210 -179
- data/spec/unit/org_spec.rb +196 -0
- data/spec/unit/platform/query_helpers_spec.rb +5 -5
- data/spec/unit/platform_spec.rb +46 -46
- data/spec/unit/policy_builder/expand_node_object_spec.rb +17 -18
- data/spec/unit/policy_builder/policyfile_spec.rb +159 -71
- data/spec/unit/provider/directory_spec.rb +5 -5
- data/spec/unit/provider/dsc_script_spec.rb +6 -6
- data/spec/unit/provider/env_spec.rb +27 -14
- data/spec/unit/provider/execute_spec.rb +139 -68
- data/spec/unit/provider/file/content_spec.rb +8 -8
- data/spec/unit/provider/git_spec.rb +10 -5
- data/spec/unit/provider/group/dscl_spec.rb +8 -11
- data/spec/unit/provider/group_spec.rb +13 -13
- data/spec/unit/provider/ifconfig/aix_spec.rb +3 -2
- data/spec/unit/provider/ifconfig/debian_spec.rb +19 -19
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/mdadm_spec.rb +2 -2
- data/spec/unit/provider/mount/aix_spec.rb +5 -5
- data/spec/unit/provider/mount/mount_spec.rb +22 -22
- data/spec/unit/provider/mount/solaris_spec.rb +20 -20
- data/spec/unit/provider/package/aix_spec.rb +23 -22
- data/spec/unit/provider/package/apt_spec.rb +23 -4
- data/spec/unit/provider/package/dpkg_spec.rb +14 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
- data/spec/unit/provider/package/freebsd/port_spec.rb +1 -1
- data/spec/unit/provider/package/ips_spec.rb +1 -2
- data/spec/unit/provider/package/macports_spec.rb +14 -14
- data/spec/unit/provider/package/openbsd_spec.rb +66 -0
- data/spec/unit/provider/package/pacman_spec.rb +15 -14
- data/spec/unit/provider/package/portage_spec.rb +11 -11
- data/spec/unit/provider/package/rpm_spec.rb +132 -84
- data/spec/unit/provider/package/rubygems_spec.rb +54 -25
- data/spec/unit/provider/package/solaris_spec.rb +22 -25
- data/spec/unit/provider/package/yum_spec.rb +237 -36
- data/spec/unit/provider/package/zypper_spec.rb +9 -12
- data/spec/unit/provider/package_spec.rb +276 -2
- data/spec/unit/provider/package_spec.rbe +0 -0
- data/spec/unit/provider/remote_directory_spec.rb +25 -25
- data/spec/unit/provider/remote_file/ftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +3 -3
- data/spec/unit/provider/script_spec.rb +61 -43
- data/spec/unit/provider/service/aix_service_spec.rb +5 -5
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +8 -8
- data/spec/unit/provider/service/freebsd_service_spec.rb +16 -2
- data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
- data/spec/unit/provider/service/init_service_spec.rb +5 -5
- data/spec/unit/provider/service/insserv_service_spec.rb +2 -2
- data/spec/unit/provider/service/invokercd_service_spec.rb +5 -5
- data/spec/unit/provider/service/macosx_spec.rb +7 -7
- data/spec/unit/provider/service/openbsd_service_spec.rb +543 -0
- data/spec/unit/provider/service/redhat_spec.rb +4 -4
- data/spec/unit/provider/service/simple_service_spec.rb +2 -2
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +14 -14
- data/spec/unit/provider/service/systemd_service_spec.rb +15 -7
- data/spec/unit/provider/service/upstart_service_spec.rb +4 -4
- data/spec/unit/provider/service/windows_spec.rb +119 -25
- data/spec/unit/provider/service_spec.rb +1 -1
- data/spec/unit/provider/user/dscl_spec.rb +38 -30
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/provider_resolver_spec.rb +7 -7
- data/spec/unit/provider_spec.rb +23 -23
- data/spec/unit/recipe_spec.rb +194 -83
- data/spec/unit/registry_helper_spec.rb +143 -143
- data/spec/unit/resource/chef_gem_spec.rb +117 -3
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
- data/spec/unit/resource/conditional_spec.rb +56 -15
- data/spec/unit/resource/deploy_spec.rb +2 -2
- data/spec/unit/resource/dsc_script_spec.rb +32 -0
- data/spec/unit/resource/execute_spec.rb +4 -0
- data/spec/unit/resource/file/verification_spec.rb +111 -0
- data/spec/unit/resource/file_spec.rb +14 -0
- data/spec/unit/resource/openbsd_package_spec.rb +49 -0
- data/spec/unit/resource/remote_file_spec.rb +12 -12
- data/spec/unit/resource/resource_notification_spec.rb +18 -18
- data/spec/unit/resource/rpm_package_spec.rb +12 -0
- data/spec/unit/resource/scm_spec.rb +4 -4
- data/spec/unit/resource/script_spec.rb +3 -5
- data/spec/unit/resource/subversion_spec.rb +1 -1
- data/spec/unit/resource_builder_spec.rb +1 -0
- data/spec/unit/resource_collection/resource_list_spec.rb +2 -2
- data/spec/unit/resource_collection/resource_set_spec.rb +3 -3
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +24 -24
- data/spec/unit/resource_collection_spec.rb +52 -52
- data/spec/unit/resource_definition_spec.rb +1 -1
- data/spec/unit/resource_reporter_spec.rb +118 -118
- data/spec/unit/resource_spec.rb +131 -125
- data/spec/unit/rest/auth_credentials_spec.rb +73 -73
- data/spec/unit/rest_spec.rb +12 -12
- data/spec/unit/role_spec.rb +85 -84
- data/spec/unit/run_context/cookbook_compiler_spec.rb +18 -18
- data/spec/unit/run_context_spec.rb +39 -68
- data/spec/unit/run_list/run_list_expansion_spec.rb +21 -21
- data/spec/unit/run_list/run_list_item_spec.rb +28 -28
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +14 -14
- data/spec/unit/run_list_spec.rb +55 -55
- data/spec/unit/run_lock_spec.rb +14 -14
- data/spec/unit/run_status_spec.rb +24 -24
- data/spec/unit/scan_access_control_spec.rb +23 -23
- data/spec/unit/search/query_spec.rb +54 -66
- data/spec/unit/shell/model_wrapper_spec.rb +13 -13
- data/spec/unit/shell/shell_ext_spec.rb +32 -32
- data/spec/unit/shell/shell_session_spec.rb +24 -24
- data/spec/unit/shell_out_spec.rb +4 -4
- data/spec/unit/shell_spec.rb +27 -27
- data/spec/unit/user_spec.rb +50 -50
- data/spec/unit/util/backup_spec.rb +32 -32
- data/spec/unit/util/diff_spec.rb +31 -31
- data/spec/unit/util/dsc/configuration_generator_spec.rb +38 -16
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +21 -26
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +10 -10
- data/spec/unit/util/editor_spec.rb +10 -10
- data/spec/unit/util/file_edit_spec.rb +10 -10
- data/spec/unit/util/path_helper_spec.rb +38 -46
- data/spec/unit/util/powershell/cmdlet_spec.rb +9 -9
- data/spec/unit/util/selinux_spec.rb +30 -30
- data/spec/unit/util/threaded_job_queue_spec.rb +6 -6
- data/spec/unit/version/platform_spec.rb +5 -5
- data/spec/unit/version_class_spec.rb +15 -15
- data/spec/unit/version_constraint/platform_spec.rb +7 -7
- data/spec/unit/version_constraint_spec.rb +43 -43
- data/spec/unit/windows_service_spec.rb +15 -15
- data/spec/unit/workstation_config_loader_spec.rb +2 -2
- data/tasks/rspec.rb +16 -18
- metadata +126 -53
- data/bin/chef-service-manager +0 -37
- data/bin/chef-windows-service +0 -35
- data/bin/shef +0 -35
- data/lib/chef/application/agent.rb +0 -18
- data/lib/chef/monkey_patches/fileutils.rb +0 -65
- data/lib/chef/monkey_patches/numeric.rb +0 -15
- data/lib/chef/monkey_patches/object.rb +0 -9
- data/lib/chef/monkey_patches/pathname.rb +0 -32
- data/lib/chef/monkey_patches/regexp.rb +0 -34
- data/lib/chef/monkey_patches/securerandom.rb +0 -44
- data/lib/chef/monkey_patches/string.rb +0 -49
- data/lib/chef/monkey_patches/tempfile.rb +0 -64
- data/lib/chef/monkey_patches/uri.rb +0 -70
@@ -23,14 +23,14 @@ describe MonoLogger do
|
|
23
23
|
it "should disable buffering when passed an IO stream" do
|
24
24
|
STDOUT.sync = false
|
25
25
|
MonoLogger.new(STDOUT)
|
26
|
-
STDOUT.sync.
|
26
|
+
expect(STDOUT.sync).to eq(true)
|
27
27
|
end
|
28
28
|
|
29
29
|
describe "when given an object that responds to write and close e.g. IO" do
|
30
30
|
it "should use the object directly" do
|
31
31
|
stream = StringIO.new
|
32
32
|
MonoLogger.new(stream).fatal("Houston, we've had a problem.")
|
33
|
-
stream.string.
|
33
|
+
expect(stream.string).to match(/Houston, we've had a problem./)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -39,7 +39,7 @@ describe MonoLogger do
|
|
39
39
|
temp_file = Tempfile.new("rspec-monologger-log")
|
40
40
|
temp_file.close
|
41
41
|
MonoLogger.new(temp_file.path).fatal("Do, or do not. There is no try.")
|
42
|
-
File.read(temp_file.path).
|
42
|
+
expect(File.read(temp_file.path)).to match(/Do, or do not. There is no try./)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -215,22 +215,22 @@ describe Chef::Node::Attribute do
|
|
215
215
|
|
216
216
|
describe "initialize" do
|
217
217
|
it "should return a Chef::Node::Attribute" do
|
218
|
-
@attributes.
|
218
|
+
expect(@attributes).to be_a_kind_of(Chef::Node::Attribute)
|
219
219
|
end
|
220
220
|
|
221
221
|
it "should take an Automatioc, Normal, Default and Override hash" do
|
222
|
-
|
222
|
+
expect { Chef::Node::Attribute.new({}, {}, {}, {}) }.not_to raise_error
|
223
223
|
end
|
224
224
|
|
225
225
|
[ :normal, :default, :override, :automatic ].each do |accessor|
|
226
226
|
it "should set #{accessor}" do
|
227
227
|
na = Chef::Node::Attribute.new({ :normal => true }, { :default => true }, { :override => true }, { :automatic => true })
|
228
|
-
na.send(accessor).
|
228
|
+
expect(na.send(accessor)).to eq({ accessor.to_s => true })
|
229
229
|
end
|
230
230
|
end
|
231
231
|
|
232
232
|
it "should be enumerable" do
|
233
|
-
@attributes.
|
233
|
+
expect(@attributes).to be_is_a(Enumerable)
|
234
234
|
end
|
235
235
|
end
|
236
236
|
|
@@ -242,7 +242,7 @@ describe Chef::Node::Attribute do
|
|
242
242
|
# the "strict" conversion method that should only be implemented by
|
243
243
|
# things that are truly Array-like, so NoMethodError is the right choice.
|
244
244
|
# (cf. there is no Hash#to_ary).
|
245
|
-
|
245
|
+
expect { @attributes.default.to_ary }.to raise_error(NoMethodError)
|
246
246
|
end
|
247
247
|
|
248
248
|
end
|
@@ -274,7 +274,7 @@ describe Chef::Node::Attribute do
|
|
274
274
|
["force_override", "force_override"],
|
275
275
|
["automatic", "automatic"]
|
276
276
|
]
|
277
|
-
@attributes.debug_value(:foo, :bar).
|
277
|
+
expect(@attributes.debug_value(:foo, :bar)).to eq(expected)
|
278
278
|
end
|
279
279
|
end
|
280
280
|
|
@@ -288,68 +288,68 @@ describe Chef::Node::Attribute do
|
|
288
288
|
@attributes.force_default["default"] = "force default"
|
289
289
|
@attributes.role_default["default"] = "role default"
|
290
290
|
@attributes.env_default["default"] = "environment default"
|
291
|
-
@attributes["default"].
|
291
|
+
expect(@attributes["default"]).to eq("force default")
|
292
292
|
end
|
293
293
|
|
294
294
|
it "prefers role_default over environment or cookbook default" do
|
295
295
|
@attributes.role_default["default"] = "role default"
|
296
296
|
@attributes.env_default["default"] = "environment default"
|
297
|
-
@attributes["default"].
|
297
|
+
expect(@attributes["default"]).to eq("role default")
|
298
298
|
end
|
299
299
|
|
300
300
|
it "prefers environment default over cookbook default" do
|
301
301
|
@attributes.env_default["default"] = "environment default"
|
302
|
-
@attributes["default"].
|
302
|
+
expect(@attributes["default"]).to eq("environment default")
|
303
303
|
end
|
304
304
|
|
305
305
|
it "returns the cookbook default when no other default values are present" do
|
306
|
-
@attributes["default"].
|
306
|
+
expect(@attributes["default"]).to eq("cookbook default")
|
307
307
|
end
|
308
308
|
|
309
309
|
it "prefers 'forced overrides' over role or cookbook overrides" do
|
310
310
|
@attributes.force_override["override"] = "force override"
|
311
311
|
@attributes.env_override["override"] = "environment override"
|
312
312
|
@attributes.role_override["override"] = "role override"
|
313
|
-
@attributes["override"].
|
313
|
+
expect(@attributes["override"]).to eq("force override")
|
314
314
|
end
|
315
315
|
|
316
316
|
it "prefers environment overrides over role or cookbook overrides" do
|
317
317
|
@attributes.env_override["override"] = "environment override"
|
318
318
|
@attributes.role_override["override"] = "role override"
|
319
|
-
@attributes["override"].
|
319
|
+
expect(@attributes["override"]).to eq("environment override")
|
320
320
|
end
|
321
321
|
|
322
322
|
it "prefers role overrides over cookbook overrides" do
|
323
323
|
@attributes.role_override["override"] = "role override"
|
324
|
-
@attributes["override"].
|
324
|
+
expect(@attributes["override"]).to eq("role override")
|
325
325
|
end
|
326
326
|
|
327
327
|
it "returns cookbook overrides when no other overrides are present" do
|
328
|
-
@attributes["override"].
|
328
|
+
expect(@attributes["override"]).to eq("cookbook override")
|
329
329
|
end
|
330
330
|
|
331
331
|
it "merges arrays within the default precedence" do
|
332
332
|
@attributes.role_default["array"] = %w{role}
|
333
333
|
@attributes.env_default["array"] = %w{env}
|
334
|
-
@attributes["array"].
|
334
|
+
expect(@attributes["array"]).to eq(%w{env role})
|
335
335
|
end
|
336
336
|
|
337
337
|
it "merges arrays within the override precedence" do
|
338
338
|
@attributes.role_override["array"] = %w{role}
|
339
339
|
@attributes.env_override["array"] = %w{env}
|
340
|
-
@attributes["array"].
|
340
|
+
expect(@attributes["array"]).to eq(%w{role env})
|
341
341
|
end
|
342
342
|
|
343
343
|
it "does not merge arrays between default and normal" do
|
344
344
|
@attributes.role_default["array"] = %w{role}
|
345
345
|
@attributes.normal["array"] = %w{normal}
|
346
|
-
@attributes["array"].
|
346
|
+
expect(@attributes["array"]).to eq(%w{normal})
|
347
347
|
end
|
348
348
|
|
349
349
|
it "does not merge arrays between normal and override" do
|
350
350
|
@attributes.normal["array"] = %w{normal}
|
351
351
|
@attributes.role_override["array"] = %w{role}
|
352
|
-
@attributes["array"].
|
352
|
+
expect(@attributes["array"]).to eq(%w{role})
|
353
353
|
end
|
354
354
|
|
355
355
|
it "merges nested hashes between precedence levels" do
|
@@ -358,9 +358,9 @@ describe Chef::Node::Attribute do
|
|
358
358
|
@attributes.normal = {"a" => {"b" => {"normal" => "normal"}}}
|
359
359
|
@attributes.override = {"a" => {"override" => "role"}}
|
360
360
|
@attributes.automatic = {"a" => {"automatic" => "auto"}}
|
361
|
-
@attributes["a"].
|
361
|
+
expect(@attributes["a"]).to eq({"b"=>{"default"=>"default", "normal"=>"normal"},
|
362
362
|
"override"=>"role",
|
363
|
-
"automatic"=>"auto"}
|
363
|
+
"automatic"=>"auto"})
|
364
364
|
end
|
365
365
|
end
|
366
366
|
|
@@ -377,94 +377,94 @@ describe Chef::Node::Attribute do
|
|
377
377
|
end
|
378
378
|
|
379
379
|
it "merges all types of overrides into a combined override" do
|
380
|
-
@attributes.combined_override["co"].
|
381
|
-
@attributes.combined_override["ro"].
|
382
|
-
@attributes.combined_override["eo"].
|
383
|
-
@attributes.combined_override["fo"].
|
380
|
+
expect(@attributes.combined_override["co"]).to eq("cookbook override")
|
381
|
+
expect(@attributes.combined_override["ro"]).to eq("role override")
|
382
|
+
expect(@attributes.combined_override["eo"]).to eq("env override")
|
383
|
+
expect(@attributes.combined_override["fo"]).to eq("force override")
|
384
384
|
end
|
385
385
|
|
386
386
|
it "merges all types of defaults into a combined default" do
|
387
|
-
@attributes.combined_default["cd"].
|
388
|
-
@attributes.combined_default["rd"].
|
389
|
-
@attributes.combined_default["ed"].
|
390
|
-
@attributes.combined_default["fd"].
|
387
|
+
expect(@attributes.combined_default["cd"]).to eq("cookbook default")
|
388
|
+
expect(@attributes.combined_default["rd"]).to eq("role default")
|
389
|
+
expect(@attributes.combined_default["ed"]).to eq("env default")
|
390
|
+
expect(@attributes.combined_default["fd"]).to eq("force default")
|
391
391
|
end
|
392
392
|
|
393
393
|
end
|
394
394
|
|
395
395
|
describe "[]" do
|
396
396
|
it "should return override data if it exists" do
|
397
|
-
@attributes["macaddress"].
|
397
|
+
expect(@attributes["macaddress"]).to eq("00:00:00:00:00:00")
|
398
398
|
end
|
399
399
|
|
400
400
|
it "should return attribute data if it is not overridden" do
|
401
|
-
@attributes["platform"].
|
401
|
+
expect(@attributes["platform"]).to eq("mac_os_x")
|
402
402
|
end
|
403
403
|
|
404
404
|
it "should return data that doesn't have corresponding keys in every hash" do
|
405
|
-
@attributes["command"]["ps"].
|
405
|
+
expect(@attributes["command"]["ps"]).to eq("ps -ef")
|
406
406
|
end
|
407
407
|
|
408
408
|
it "should return default data if it is not overriden or in attribute data" do
|
409
|
-
@attributes["music"]["mastodon"].
|
409
|
+
expect(@attributes["music"]["mastodon"]).to eq("rocks")
|
410
410
|
end
|
411
411
|
|
412
412
|
it "should prefer the override data over an available default" do
|
413
|
-
@attributes["music"]["mars_volta"].
|
413
|
+
expect(@attributes["music"]["mars_volta"]).to eq("cicatriz")
|
414
414
|
end
|
415
415
|
|
416
416
|
it "should prefer the attribute data over an available default" do
|
417
|
-
@attributes["music"]["jimmy_eat_world"].
|
417
|
+
expect(@attributes["music"]["jimmy_eat_world"]).to eq("nice")
|
418
418
|
end
|
419
419
|
|
420
420
|
it "should prefer override data over default data if there is no attribute data" do
|
421
|
-
@attributes["hot"]["day"].
|
421
|
+
expect(@attributes["hot"]["day"]).to eq("sunday")
|
422
422
|
end
|
423
423
|
|
424
424
|
it "should return the merged hash if all three have values" do
|
425
425
|
result = @attributes["music"]
|
426
|
-
result["mars_volta"].
|
427
|
-
result["jimmy_eat_world"].
|
428
|
-
result["mastodon"].
|
426
|
+
expect(result["mars_volta"]).to eq("cicatriz")
|
427
|
+
expect(result["jimmy_eat_world"]).to eq("nice")
|
428
|
+
expect(result["mastodon"]).to eq("rocks")
|
429
429
|
end
|
430
430
|
end
|
431
431
|
|
432
432
|
describe "[]=" do
|
433
433
|
it "should error out when the type of attribute to set has not been specified" do
|
434
434
|
@attributes.normal["the_ghost"] = { }
|
435
|
-
|
435
|
+
expect { @attributes["the_ghost"]["exterminate"] = false }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
436
436
|
end
|
437
437
|
|
438
438
|
it "should let you set an attribute value when another hash has an intermediate value" do
|
439
439
|
@attributes.normal["the_ghost"] = { "exterminate" => "the future" }
|
440
|
-
|
440
|
+
expect { @attributes.normal["the_ghost"]["eviscerate"]["tomorrow"] = false }.not_to raise_error
|
441
441
|
end
|
442
442
|
|
443
443
|
it "should set the attribute value" do
|
444
444
|
@attributes.normal["longboard"] = "surfing"
|
445
|
-
@attributes.normal["longboard"].
|
446
|
-
@attributes.normal["longboard"].
|
445
|
+
expect(@attributes.normal["longboard"]).to eq("surfing")
|
446
|
+
expect(@attributes.normal["longboard"]).to eq("surfing")
|
447
447
|
end
|
448
448
|
|
449
449
|
it "should set deeply nested attribute values when a precedence level is specified" do
|
450
450
|
@attributes.normal["deftones"]["hunters"]["nap"] = "surfing"
|
451
|
-
@attributes.normal["deftones"]["hunters"]["nap"].
|
451
|
+
expect(@attributes.normal["deftones"]["hunters"]["nap"]).to eq("surfing")
|
452
452
|
end
|
453
453
|
|
454
454
|
it "should die if you try and do nested attributes that do not exist without read vivification" do
|
455
|
-
|
455
|
+
expect { @attributes["foo"]["bar"] = :baz }.to raise_error
|
456
456
|
end
|
457
457
|
|
458
458
|
it "should let you set attributes manually without vivification" do
|
459
459
|
@attributes.normal["foo"] = Mash.new
|
460
460
|
@attributes.normal["foo"]["bar"] = :baz
|
461
|
-
@attributes.normal["foo"]["bar"].
|
461
|
+
expect(@attributes.normal["foo"]["bar"]).to eq(:baz)
|
462
462
|
end
|
463
463
|
|
464
464
|
it "should optionally skip setting the value if one already exists" do
|
465
465
|
@attributes.set_unless_value_present = true
|
466
466
|
@attributes.normal["hostname"] = "bar"
|
467
|
-
@attributes["hostname"].
|
467
|
+
expect(@attributes["hostname"]).to eq("latte")
|
468
468
|
end
|
469
469
|
|
470
470
|
it "does not support ||= when setting" do
|
@@ -472,19 +472,47 @@ describe Chef::Node::Attribute do
|
|
472
472
|
# Users who need this behavior can use set_unless and friends
|
473
473
|
@attributes.normal["foo"] = Mash.new
|
474
474
|
@attributes.normal["foo"]["bar"] ||= "stop the world"
|
475
|
-
@attributes.normal["foo"]["bar"].
|
475
|
+
expect(@attributes.normal["foo"]["bar"]).to eq({})
|
476
476
|
end
|
477
477
|
end
|
478
478
|
|
479
479
|
describe "to_hash" do
|
480
480
|
it "should convert to a hash" do
|
481
|
-
@attributes.to_hash.class.
|
481
|
+
expect(@attributes.to_hash.class).to eq(Hash)
|
482
482
|
end
|
483
483
|
|
484
484
|
it "should convert to a hash based on current state" do
|
485
485
|
hash = @attributes["hot"].to_hash
|
486
|
-
hash.class.
|
487
|
-
hash["day"].
|
486
|
+
expect(hash.class).to eq(Hash)
|
487
|
+
expect(hash["day"]).to eq("sunday")
|
488
|
+
end
|
489
|
+
|
490
|
+
it "should create a deep copy of the node attribute" do
|
491
|
+
@attributes.default['foo']['bar']['baz'] = 'fizz'
|
492
|
+
hash = @attributes['foo'].to_hash
|
493
|
+
expect(hash).to eql({"bar"=>{"baz"=>"fizz"}})
|
494
|
+
hash['bar']['baz'] = 'buzz'
|
495
|
+
expect(hash).to eql({"bar"=>{"baz"=>"buzz"}})
|
496
|
+
expect(@attributes.default['foo']).to eql({"bar"=>{"baz"=>"fizz"}})
|
497
|
+
end
|
498
|
+
|
499
|
+
it "should create a deep copy of arrays in the node attribute" do
|
500
|
+
@attributes.default['foo']['bar'] = ['fizz']
|
501
|
+
hash = @attributes['foo'].to_hash
|
502
|
+
expect(hash).to eql({"bar"=>[ 'fizz' ]})
|
503
|
+
hash['bar'].push('buzz')
|
504
|
+
expect(hash).to eql({"bar"=>[ 'fizz', 'buzz' ]})
|
505
|
+
expect(@attributes.default['foo']).to eql({"bar"=>[ 'fizz' ]})
|
506
|
+
end
|
507
|
+
|
508
|
+
it "mutating strings should not mutate the attributes" do
|
509
|
+
pending "this is a bug that should be fixed"
|
510
|
+
@attributes.default['foo']['bar']['baz'] = 'fizz'
|
511
|
+
hash = @attributes['foo'].to_hash
|
512
|
+
expect(hash).to eql({"bar"=>{"baz"=>"fizz"}})
|
513
|
+
hash['bar']['baz'] << 'buzz'
|
514
|
+
expect(hash).to eql({"bar"=>{"baz"=>"fizzbuzz"}})
|
515
|
+
expect(@attributes.default['foo']).to eql({"bar"=>{"baz"=>"fizz"}})
|
488
516
|
end
|
489
517
|
end
|
490
518
|
|
@@ -497,59 +525,59 @@ describe Chef::Node::Attribute do
|
|
497
525
|
|
498
526
|
describe "has_key?" do
|
499
527
|
it "should return true if an attribute exists" do
|
500
|
-
@attributes.has_key?("music").
|
528
|
+
expect(@attributes.has_key?("music")).to eq(true)
|
501
529
|
end
|
502
530
|
|
503
531
|
it "should return false if an attribute does not exist" do
|
504
|
-
@attributes.has_key?("ninja").
|
532
|
+
expect(@attributes.has_key?("ninja")).to eq(false)
|
505
533
|
end
|
506
534
|
|
507
535
|
it "should return false if an attribute does not exist using dot notation" do
|
508
|
-
@attributes.has_key?("does_not_exist_at_all").
|
536
|
+
expect(@attributes.has_key?("does_not_exist_at_all")).to eq(false)
|
509
537
|
end
|
510
538
|
|
511
539
|
it "should return true if an attribute exists but is set to nil using dot notation" do
|
512
|
-
@attributes.music.deeper.has_key?("gates_of_ishtar").
|
540
|
+
expect(@attributes.music.deeper.has_key?("gates_of_ishtar")).to eq(true)
|
513
541
|
end
|
514
542
|
|
515
543
|
it "should return true if an attribute exists but is set to false" do
|
516
544
|
@attributes.has_key?("music")
|
517
|
-
@attributes["music"].has_key?("apophis").
|
545
|
+
expect(@attributes["music"].has_key?("apophis")).to eq(true)
|
518
546
|
end
|
519
547
|
|
520
548
|
it "does not find keys above the current nesting level" do
|
521
|
-
@attributes["music"]["this"]["apparatus"].
|
549
|
+
expect(@attributes["music"]["this"]["apparatus"]).not_to have_key("this")
|
522
550
|
end
|
523
551
|
|
524
552
|
it "does not find keys below the current nesting level" do
|
525
|
-
@attributes["music"]["this"].
|
553
|
+
expect(@attributes["music"]["this"]).not_to have_key("must")
|
526
554
|
end
|
527
555
|
|
528
556
|
[:include?, :key?, :member?].each do |method|
|
529
557
|
it "should alias the method #{method} to itself" do
|
530
|
-
@attributes.
|
558
|
+
expect(@attributes).to respond_to(method)
|
531
559
|
end
|
532
560
|
|
533
561
|
it "#{method} should behave like has_key?" do
|
534
|
-
@attributes.send(method, "music").
|
562
|
+
expect(@attributes.send(method, "music")).to eq(true)
|
535
563
|
end
|
536
564
|
end
|
537
565
|
end
|
538
566
|
|
539
567
|
describe "attribute?" do
|
540
568
|
it "should return true if an attribute exists" do
|
541
|
-
@attributes.attribute?("music").
|
569
|
+
expect(@attributes.attribute?("music")).to eq(true)
|
542
570
|
end
|
543
571
|
|
544
572
|
it "should return false if an attribute does not exist" do
|
545
|
-
@attributes.attribute?("ninja").
|
573
|
+
expect(@attributes.attribute?("ninja")).to eq(false)
|
546
574
|
end
|
547
575
|
|
548
576
|
end
|
549
577
|
|
550
578
|
describe "method_missing" do
|
551
579
|
it "should behave like a [] lookup" do
|
552
|
-
@attributes.music.mastodon.
|
580
|
+
expect(@attributes.music.mastodon).to eq("rocks")
|
553
581
|
end
|
554
582
|
|
555
583
|
it "should allow the last method to set a value if it has an = sign on the end" do
|
@@ -583,12 +611,12 @@ describe Chef::Node::Attribute do
|
|
583
611
|
@attributes.keys.each do |k|
|
584
612
|
collect << k
|
585
613
|
end
|
586
|
-
collect.include?("one").
|
587
|
-
collect.include?("hut").
|
588
|
-
collect.include?("snakes").
|
589
|
-
collect.include?("snack").
|
590
|
-
collect.include?("place").
|
591
|
-
collect.length.
|
614
|
+
expect(collect.include?("one")).to eq(true)
|
615
|
+
expect(collect.include?("hut")).to eq(true)
|
616
|
+
expect(collect.include?("snakes")).to eq(true)
|
617
|
+
expect(collect.include?("snack")).to eq(true)
|
618
|
+
expect(collect.include?("place")).to eq(true)
|
619
|
+
expect(collect.length).to eq(5)
|
592
620
|
end
|
593
621
|
|
594
622
|
it "should yield lower if we go deeper" do
|
@@ -596,14 +624,14 @@ describe Chef::Node::Attribute do
|
|
596
624
|
@attributes.one.keys.each do |k|
|
597
625
|
collect << k
|
598
626
|
end
|
599
|
-
collect.include?("two").
|
600
|
-
collect.include?("four").
|
601
|
-
collect.include?("six").
|
602
|
-
collect.length.
|
627
|
+
expect(collect.include?("two")).to eq(true)
|
628
|
+
expect(collect.include?("four")).to eq(true)
|
629
|
+
expect(collect.include?("six")).to eq(true)
|
630
|
+
expect(collect.length).to eq(3)
|
603
631
|
end
|
604
632
|
|
605
633
|
it "should not raise an exception if one of the hashes has a nil value on a deep lookup" do
|
606
|
-
|
634
|
+
expect { @attributes.place.keys { |k| } }.not_to raise_error
|
607
635
|
end
|
608
636
|
end
|
609
637
|
|
@@ -632,15 +660,15 @@ describe Chef::Node::Attribute do
|
|
632
660
|
collect[k] = v
|
633
661
|
end
|
634
662
|
|
635
|
-
collect["one"].
|
636
|
-
collect["hut"].
|
637
|
-
collect["snakes"].
|
638
|
-
collect["snack"].
|
663
|
+
expect(collect["one"]).to eq("six")
|
664
|
+
expect(collect["hut"]).to eq("three")
|
665
|
+
expect(collect["snakes"]).to eq("on a plane")
|
666
|
+
expect(collect["snack"]).to eq("cookies")
|
639
667
|
end
|
640
668
|
|
641
669
|
it "should yield as a two-element array" do
|
642
670
|
@attributes.each do |a|
|
643
|
-
a.
|
671
|
+
expect(a).to be_an_instance_of(Array)
|
644
672
|
end
|
645
673
|
end
|
646
674
|
end
|
@@ -665,7 +693,7 @@ describe Chef::Node::Attribute do
|
|
665
693
|
end
|
666
694
|
|
667
695
|
it "should respond to each_key" do
|
668
|
-
@attributes.
|
696
|
+
expect(@attributes).to respond_to(:each_key)
|
669
697
|
end
|
670
698
|
|
671
699
|
it "should yield each top level key, post merge rules" do
|
@@ -674,10 +702,10 @@ describe Chef::Node::Attribute do
|
|
674
702
|
collect << k
|
675
703
|
end
|
676
704
|
|
677
|
-
collect.
|
678
|
-
collect.
|
679
|
-
collect.
|
680
|
-
collect.
|
705
|
+
expect(collect).to include("one")
|
706
|
+
expect(collect).to include("snack")
|
707
|
+
expect(collect).to include("hut")
|
708
|
+
expect(collect).to include("snakes")
|
681
709
|
end
|
682
710
|
end
|
683
711
|
|
@@ -701,7 +729,7 @@ describe Chef::Node::Attribute do
|
|
701
729
|
end
|
702
730
|
|
703
731
|
it "should respond to each_pair" do
|
704
|
-
@attributes.
|
732
|
+
expect(@attributes).to respond_to(:each_pair)
|
705
733
|
end
|
706
734
|
|
707
735
|
it "should yield each top level key and value pair, post merge rules" do
|
@@ -710,10 +738,10 @@ describe Chef::Node::Attribute do
|
|
710
738
|
collect[k] = v
|
711
739
|
end
|
712
740
|
|
713
|
-
collect["one"].
|
714
|
-
collect["hut"].
|
715
|
-
collect["snakes"].
|
716
|
-
collect["snack"].
|
741
|
+
expect(collect["one"]).to eq("six")
|
742
|
+
expect(collect["hut"]).to eq("three")
|
743
|
+
expect(collect["snakes"]).to eq("on a plane")
|
744
|
+
expect(collect["snack"]).to eq("cookies")
|
717
745
|
end
|
718
746
|
end
|
719
747
|
|
@@ -737,7 +765,7 @@ describe Chef::Node::Attribute do
|
|
737
765
|
end
|
738
766
|
|
739
767
|
it "should respond to each_value" do
|
740
|
-
@attributes.
|
768
|
+
expect(@attributes).to respond_to(:each_value)
|
741
769
|
end
|
742
770
|
|
743
771
|
it "should yield each value, post merge rules" do
|
@@ -746,9 +774,9 @@ describe Chef::Node::Attribute do
|
|
746
774
|
collect << v
|
747
775
|
end
|
748
776
|
|
749
|
-
collect.
|
750
|
-
collect.
|
751
|
-
collect.
|
777
|
+
expect(collect).to include("cookies")
|
778
|
+
expect(collect).to include("three")
|
779
|
+
expect(collect).to include("on a plane")
|
752
780
|
end
|
753
781
|
|
754
782
|
it "should yield four elements" do
|
@@ -757,7 +785,7 @@ describe Chef::Node::Attribute do
|
|
757
785
|
collect << v
|
758
786
|
end
|
759
787
|
|
760
|
-
collect.length.
|
788
|
+
expect(collect.length).to eq(4)
|
761
789
|
end
|
762
790
|
end
|
763
791
|
|
@@ -782,15 +810,15 @@ describe Chef::Node::Attribute do
|
|
782
810
|
end
|
783
811
|
|
784
812
|
it "should respond to empty?" do
|
785
|
-
@attributes.
|
813
|
+
expect(@attributes).to respond_to(:empty?)
|
786
814
|
end
|
787
815
|
|
788
816
|
it "should return true when there are no keys" do
|
789
|
-
@empty.empty
|
817
|
+
expect(@empty.empty?).to eq(true)
|
790
818
|
end
|
791
819
|
|
792
820
|
it "should return false when there are keys" do
|
793
|
-
@attributes.empty
|
821
|
+
expect(@attributes.empty?).to eq(false)
|
794
822
|
end
|
795
823
|
|
796
824
|
end
|
@@ -815,7 +843,7 @@ describe Chef::Node::Attribute do
|
|
815
843
|
end
|
816
844
|
|
817
845
|
it "should respond to fetch" do
|
818
|
-
@attributes.
|
846
|
+
expect(@attributes).to respond_to(:fetch)
|
819
847
|
end
|
820
848
|
|
821
849
|
describe "when the key exists" do
|
@@ -826,7 +854,7 @@ describe Chef::Node::Attribute do
|
|
826
854
|
"snakes" => "on a plane",
|
827
855
|
"snack" => "cookies"
|
828
856
|
}.each do |k,v|
|
829
|
-
@attributes.fetch(k).
|
857
|
+
expect(@attributes.fetch(k)).to eq(v)
|
830
858
|
end
|
831
859
|
end
|
832
860
|
end
|
@@ -834,19 +862,19 @@ describe Chef::Node::Attribute do
|
|
834
862
|
describe "when the key does not exist" do
|
835
863
|
describe "and no args are passed" do
|
836
864
|
it "should raise an indexerror" do
|
837
|
-
|
865
|
+
expect { @attributes.fetch("lololol") }.to raise_error(IndexError)
|
838
866
|
end
|
839
867
|
end
|
840
868
|
|
841
869
|
describe "and a default arg is passed" do
|
842
870
|
it "should return the value of the default arg" do
|
843
|
-
@attributes.fetch("lol", "blah").
|
871
|
+
expect(@attributes.fetch("lol", "blah")).to eq("blah")
|
844
872
|
end
|
845
873
|
end
|
846
874
|
|
847
875
|
describe "and a block is passed" do
|
848
876
|
it "should run the block and return its value" do
|
849
|
-
@attributes.fetch("lol") { |x| "#{x}, blah" }.
|
877
|
+
expect(@attributes.fetch("lol") { |x| "#{x}, blah" }).to eq("lol, blah")
|
850
878
|
end
|
851
879
|
end
|
852
880
|
end
|
@@ -872,19 +900,19 @@ describe Chef::Node::Attribute do
|
|
872
900
|
end
|
873
901
|
|
874
902
|
it "should respond to has_value?" do
|
875
|
-
@attributes.
|
903
|
+
expect(@attributes).to respond_to(:has_value?)
|
876
904
|
end
|
877
905
|
|
878
906
|
it "should return true if any key has the value supplied" do
|
879
|
-
@attributes.has_value?("cookies").
|
907
|
+
expect(@attributes.has_value?("cookies")).to eq(true)
|
880
908
|
end
|
881
909
|
|
882
910
|
it "should return false no key has the value supplied" do
|
883
|
-
@attributes.has_value?("lololol").
|
911
|
+
expect(@attributes.has_value?("lololol")).to eq(false)
|
884
912
|
end
|
885
913
|
|
886
914
|
it "should alias value?" do
|
887
|
-
@attributes.
|
915
|
+
expect(@attributes).to respond_to(:value?)
|
888
916
|
end
|
889
917
|
end
|
890
918
|
|
@@ -917,13 +945,13 @@ describe Chef::Node::Attribute do
|
|
917
945
|
end
|
918
946
|
|
919
947
|
it "should respond to index" do
|
920
|
-
@attributes.
|
948
|
+
expect(@attributes).to respond_to(:index)
|
921
949
|
end
|
922
950
|
|
923
951
|
describe "when the value is indexed" do
|
924
952
|
it "should return the index" do
|
925
953
|
silence do
|
926
|
-
@attributes.index("six").
|
954
|
+
expect(@attributes.index("six")).to eq("one")
|
927
955
|
end
|
928
956
|
end
|
929
957
|
end
|
@@ -931,7 +959,7 @@ describe Chef::Node::Attribute do
|
|
931
959
|
describe "when the value is not indexed" do
|
932
960
|
it "should return nil" do
|
933
961
|
silence do
|
934
|
-
@attributes.index("lolol").
|
962
|
+
expect(@attributes.index("lolol")).to eq(nil)
|
935
963
|
end
|
936
964
|
end
|
937
965
|
end
|
@@ -958,18 +986,18 @@ describe Chef::Node::Attribute do
|
|
958
986
|
end
|
959
987
|
|
960
988
|
it "should respond to values" do
|
961
|
-
@attributes.
|
989
|
+
expect(@attributes).to respond_to(:values)
|
962
990
|
end
|
963
991
|
|
964
992
|
it "should return an array of values" do
|
965
|
-
@attributes.values.length.
|
993
|
+
expect(@attributes.values.length).to eq(4)
|
966
994
|
end
|
967
995
|
|
968
996
|
it "should match the values output from each" do
|
969
|
-
@attributes.values.
|
970
|
-
@attributes.values.
|
971
|
-
@attributes.values.
|
972
|
-
@attributes.values.
|
997
|
+
expect(@attributes.values).to include("six")
|
998
|
+
expect(@attributes.values).to include("cookies")
|
999
|
+
expect(@attributes.values).to include("three")
|
1000
|
+
expect(@attributes.values).to include("on a plane")
|
973
1001
|
end
|
974
1002
|
|
975
1003
|
end
|
@@ -994,26 +1022,26 @@ describe Chef::Node::Attribute do
|
|
994
1022
|
end
|
995
1023
|
|
996
1024
|
it "should respond to select" do
|
997
|
-
@attributes.
|
1025
|
+
expect(@attributes).to respond_to(:select)
|
998
1026
|
end
|
999
1027
|
|
1000
1028
|
if RUBY_VERSION >= "1.8.7"
|
1001
1029
|
it "should not raise a LocalJumpError if no block is given" do
|
1002
|
-
|
1030
|
+
expect { @attributes.select }.not_to raise_error
|
1003
1031
|
end
|
1004
1032
|
else
|
1005
1033
|
it "should raise a LocalJumpError if no block is given" do
|
1006
|
-
|
1034
|
+
expect{ @attributes.select }.to raise_error(LocalJumpError)
|
1007
1035
|
end
|
1008
1036
|
end
|
1009
1037
|
|
1010
1038
|
it "should return an empty hash/array (ruby-version-dependent) for a block containing nil" do
|
1011
|
-
@attributes.select { nil }.
|
1039
|
+
expect(@attributes.select { nil }).to eq({}.select { nil })
|
1012
1040
|
end
|
1013
1041
|
|
1014
1042
|
# sorted for spec clarity
|
1015
1043
|
it "should return a new array of k,v pairs for which the block returns true" do
|
1016
|
-
@attributes.select { true }.sort.
|
1044
|
+
expect(@attributes.select { true }.sort).to eq(
|
1017
1045
|
[
|
1018
1046
|
["hut", "three"],
|
1019
1047
|
["one", "six"],
|
@@ -1046,37 +1074,57 @@ describe Chef::Node::Attribute do
|
|
1046
1074
|
end
|
1047
1075
|
|
1048
1076
|
it "should respond to size" do
|
1049
|
-
@attributes.
|
1077
|
+
expect(@attributes).to respond_to(:size)
|
1050
1078
|
end
|
1051
1079
|
|
1052
1080
|
it "should alias length to size" do
|
1053
|
-
@attributes.
|
1081
|
+
expect(@attributes).to respond_to(:length)
|
1054
1082
|
end
|
1055
1083
|
|
1056
1084
|
it "should return 0 for an empty attribute" do
|
1057
|
-
@empty.size.
|
1085
|
+
expect(@empty.size).to eq(0)
|
1058
1086
|
end
|
1059
1087
|
|
1060
1088
|
it "should return the number of pairs" do
|
1061
|
-
@attributes.size.
|
1089
|
+
expect(@attributes.size).to eq(4)
|
1062
1090
|
end
|
1063
1091
|
end
|
1064
1092
|
|
1065
1093
|
describe "kind_of?" do
|
1066
1094
|
it "should falsely inform you that it is a Hash" do
|
1067
|
-
@attributes.
|
1095
|
+
expect(@attributes).to be_a_kind_of(Hash)
|
1068
1096
|
end
|
1069
1097
|
|
1070
1098
|
it "should falsely inform you that it is a Mash" do
|
1071
|
-
@attributes.
|
1099
|
+
expect(@attributes).to be_a_kind_of(Mash)
|
1072
1100
|
end
|
1073
1101
|
|
1074
1102
|
it "should inform you that it is a Chef::Node::Attribute" do
|
1075
|
-
@attributes.
|
1103
|
+
expect(@attributes).to be_a_kind_of(Chef::Node::Attribute)
|
1076
1104
|
end
|
1077
1105
|
|
1078
1106
|
it "should inform you that it is anything else" do
|
1079
|
-
@attributes.
|
1107
|
+
expect(@attributes).not_to be_a_kind_of(Chef::Node)
|
1108
|
+
end
|
1109
|
+
end
|
1110
|
+
|
1111
|
+
describe "to_s" do
|
1112
|
+
it "should output simple attributes" do
|
1113
|
+
attributes = Chef::Node::Attribute.new(nil, nil, nil, nil)
|
1114
|
+
expect(attributes.to_s).to eq("{}")
|
1115
|
+
end
|
1116
|
+
|
1117
|
+
it "should output merged attributes" do
|
1118
|
+
default_hash = {
|
1119
|
+
"a" => 1,
|
1120
|
+
"b" => 2
|
1121
|
+
}
|
1122
|
+
override_hash = {
|
1123
|
+
"b" => 3,
|
1124
|
+
"c" => 4
|
1125
|
+
}
|
1126
|
+
attributes = Chef::Node::Attribute.new(nil, default_hash, override_hash, nil)
|
1127
|
+
expect(attributes.to_s).to eq('{"a"=>1, "b"=>3, "c"=>4}')
|
1080
1128
|
end
|
1081
1129
|
end
|
1082
1130
|
|
@@ -1085,18 +1133,19 @@ describe Chef::Node::Attribute do
|
|
1085
1133
|
# NOTE: previous implementation hid the values, showing @automatic={...}
|
1086
1134
|
# That is nice and compact, but hides a lot of info, which seems counter
|
1087
1135
|
# to the point of calling #inspect...
|
1088
|
-
@attributes.inspect.
|
1089
|
-
@attributes.inspect.
|
1136
|
+
expect(@attributes.inspect).to match(/@automatic=\{.*\}/)
|
1137
|
+
expect(@attributes.inspect).to match(/@normal=\{.*\}/)
|
1090
1138
|
end
|
1091
1139
|
end
|
1092
1140
|
|
1141
|
+
|
1093
1142
|
describe "when not mutated" do
|
1094
1143
|
|
1095
1144
|
it "does not reset the cache when dup'd [CHEF-3680]" do
|
1096
1145
|
@attributes.default[:foo][:bar] = "set on original"
|
1097
1146
|
subtree = @attributes[:foo]
|
1098
1147
|
@attributes.default[:foo].dup[:bar] = "set on dup"
|
1099
|
-
subtree[:bar].
|
1148
|
+
expect(subtree[:bar]).to eq("set on original")
|
1100
1149
|
end
|
1101
1150
|
|
1102
1151
|
end
|
@@ -1105,25 +1154,25 @@ describe Chef::Node::Attribute do
|
|
1105
1154
|
it "converts the input in to a VividMash tree (default)" do
|
1106
1155
|
@attributes.default = {}
|
1107
1156
|
@attributes.default.foo = "bar"
|
1108
|
-
@attributes.merged_attributes[:foo].
|
1157
|
+
expect(@attributes.merged_attributes[:foo]).to eq("bar")
|
1109
1158
|
end
|
1110
1159
|
|
1111
1160
|
it "converts the input in to a VividMash tree (normal)" do
|
1112
1161
|
@attributes.normal = {}
|
1113
1162
|
@attributes.normal.foo = "bar"
|
1114
|
-
@attributes.merged_attributes[:foo].
|
1163
|
+
expect(@attributes.merged_attributes[:foo]).to eq("bar")
|
1115
1164
|
end
|
1116
1165
|
|
1117
1166
|
it "converts the input in to a VividMash tree (override)" do
|
1118
1167
|
@attributes.override = {}
|
1119
1168
|
@attributes.override.foo = "bar"
|
1120
|
-
@attributes.merged_attributes[:foo].
|
1169
|
+
expect(@attributes.merged_attributes[:foo]).to eq("bar")
|
1121
1170
|
end
|
1122
1171
|
|
1123
1172
|
it "converts the input in to a VividMash tree (automatic)" do
|
1124
1173
|
@attributes.automatic = {}
|
1125
1174
|
@attributes.automatic.foo = "bar"
|
1126
|
-
@attributes.merged_attributes[:foo].
|
1175
|
+
expect(@attributes.merged_attributes[:foo]).to eq("bar")
|
1127
1176
|
end
|
1128
1177
|
end
|
1129
1178
|
|
@@ -1163,11 +1212,11 @@ describe Chef::Node::Attribute do
|
|
1163
1212
|
|
1164
1213
|
describe "when attemping to write without specifying precedence" do
|
1165
1214
|
it "raises an error when using []=" do
|
1166
|
-
|
1215
|
+
expect { @attributes[:new_key] = "new value" }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
1167
1216
|
end
|
1168
1217
|
|
1169
1218
|
it "raises an error when using `attr=value`" do
|
1170
|
-
|
1219
|
+
expect { @attributes.new_key = "new value" }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
1171
1220
|
end
|
1172
1221
|
|
1173
1222
|
end
|