chef 12.0.3-x86-mingw32 → 12.1.0.rc.0-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -49
- 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
@@ -90,7 +90,7 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
|
|
90
90
|
dep = Gem::Dependency.new('rspec', '>= 0')
|
91
91
|
dep_installer = Gem::DependencyInstaller.new
|
92
92
|
allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
|
93
|
-
latest = [[gemspec("rspec", Gem::Version.new("1.3.0")), "
|
93
|
+
latest = [[gemspec("rspec", Gem::Version.new("1.3.0")), "https://rubygems.org/"]]
|
94
94
|
expect(dep_installer).to receive(:find_gems_with_sources).with(dep).and_return(latest)
|
95
95
|
expect(@gem_env.candidate_version_from_remote(Gem::Dependency.new('rspec', '>= 0'))).to eq(Gem::Version.new('1.3.0'))
|
96
96
|
end
|
@@ -121,6 +121,7 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
|
|
121
121
|
Gem.const_set(:Format, Object.new)
|
122
122
|
@remove_gem_format = true
|
123
123
|
end
|
124
|
+
allow(Gem::Package).to receive(:respond_to?).and_call_original
|
124
125
|
allow(Gem::Package).to receive(:respond_to?).with(:open).and_return(false)
|
125
126
|
end
|
126
127
|
|
@@ -155,7 +156,7 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
|
|
155
156
|
|
156
157
|
it "finds a matching gem from a specific gemserver when explicit sources are given" do
|
157
158
|
dep = Gem::Dependency.new('rspec', '>= 0')
|
158
|
-
latest = [[gemspec("rspec", Gem::Version.new("1.3.0")), "
|
159
|
+
latest = [[gemspec("rspec", Gem::Version.new("1.3.0")), "https://rubygems.org/"]]
|
159
160
|
|
160
161
|
expect(@gem_env).to receive(:with_gem_sources).with('http://gems.example.com').and_yield
|
161
162
|
dep_installer = Gem::DependencyInstaller.new
|
@@ -290,9 +291,9 @@ RubyGems Environment:
|
|
290
291
|
- "install" => "--env-shebang"
|
291
292
|
- "update" => "--env-shebang"
|
292
293
|
- "gem" => "--no-rdoc --no-ri"
|
293
|
-
- :sources => ["
|
294
|
+
- :sources => ["https://rubygems.org/", "http://gems.github.com/"]
|
294
295
|
- REMOTE SOURCES:
|
295
|
-
-
|
296
|
+
- https://rubygems.org/
|
296
297
|
- http://gems.github.com/
|
297
298
|
JRUBY_GEM_ENV
|
298
299
|
expect(@gem_env).to receive(:shell_out!).with('/usr/weird/bin/gem env').and_return(double('jruby_gem_env', :stdout => gem_env_out))
|
@@ -331,10 +332,10 @@ RubyGems Environment:
|
|
331
332
|
- :benchmark => false
|
332
333
|
- :backtrace => false
|
333
334
|
- :bulk_threshold => 1000
|
334
|
-
- :sources => ["
|
335
|
+
- :sources => ["https://rubygems.org/", "http://gems.github.com/"]
|
335
336
|
- "gem" => "--no-rdoc --no-ri"
|
336
337
|
- REMOTE SOURCES:
|
337
|
-
-
|
338
|
+
- https://rubygems.org/
|
338
339
|
- http://gems.github.com/
|
339
340
|
RBX_GEM_ENV
|
340
341
|
expect(@gem_env).to receive(:shell_out!).with('/usr/weird/bin/gem env').and_return(double('rbx_gem_env', :stdout => gem_env_out))
|
@@ -370,6 +371,8 @@ describe Chef::Provider::Package::Rubygems do
|
|
370
371
|
|
371
372
|
# We choose detect omnibus via RbConfig::CONFIG['bindir'] in Chef::Provider::Package::Rubygems.new
|
372
373
|
allow(RbConfig::CONFIG).to receive(:[]).with('bindir').and_return("/usr/bin/ruby")
|
374
|
+
# Rubygems uses this interally
|
375
|
+
allow(RbConfig::CONFIG).to receive(:[]).with('arch').and_call_original
|
373
376
|
@provider = Chef::Provider::Package::Rubygems.new(@new_resource, @run_context)
|
374
377
|
end
|
375
378
|
|
@@ -378,7 +381,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
378
381
|
|
379
382
|
it "target_version_already_installed? should return false so that we can search for candidates" do
|
380
383
|
@provider.load_current_resource
|
381
|
-
expect(@provider.target_version_already_installed?).to
|
384
|
+
expect(@provider.target_version_already_installed?(@provider.current_resource.version, @new_resource.version)).to be_falsey
|
382
385
|
end
|
383
386
|
end
|
384
387
|
|
@@ -468,6 +471,8 @@ describe Chef::Provider::Package::Rubygems do
|
|
468
471
|
|
469
472
|
it "determines the candidate version by querying the remote gem servers" do
|
470
473
|
@new_resource.source('http://mygems.example.com')
|
474
|
+
@provider.load_current_resource
|
475
|
+
@provider.current_resource.version('0.0.1')
|
471
476
|
version = Gem::Version.new(@spec_version)
|
472
477
|
expect(@provider.gem_env).to receive(:candidate_version_from_remote).
|
473
478
|
with(Gem::Dependency.new('rspec-core', @spec_version), "http://mygems.example.com").
|
@@ -477,8 +482,9 @@ describe Chef::Provider::Package::Rubygems do
|
|
477
482
|
|
478
483
|
it "parses the gem's specification if the requested source is a file" do
|
479
484
|
@new_resource.package_name('chef-integration-test')
|
480
|
-
@new_resource.version('>= 0')
|
481
485
|
@new_resource.source(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem')
|
486
|
+
@new_resource.version('>= 0')
|
487
|
+
@provider.load_current_resource
|
482
488
|
expect(@provider.candidate_version).to eq('0.1.0')
|
483
489
|
end
|
484
490
|
|
@@ -495,20 +501,23 @@ describe Chef::Provider::Package::Rubygems do
|
|
495
501
|
describe "in the current gem environment" do
|
496
502
|
it "installs the gem via the gems api when no explicit options are used" do
|
497
503
|
expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => nil)
|
498
|
-
|
504
|
+
@provider.run_action(:install)
|
505
|
+
expect(@new_resource).to be_updated_by_last_action
|
499
506
|
end
|
500
507
|
|
501
508
|
it "installs the gem via the gems api when a remote source is provided" do
|
502
509
|
@new_resource.source('http://gems.example.org')
|
503
510
|
sources = ['http://gems.example.org']
|
504
511
|
expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => sources)
|
505
|
-
|
512
|
+
@provider.run_action(:install)
|
513
|
+
expect(@new_resource).to be_updated_by_last_action
|
506
514
|
end
|
507
515
|
|
508
516
|
it "installs the gem from file via the gems api when no explicit options are used" do
|
509
517
|
@new_resource.source(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem')
|
510
518
|
expect(@provider.gem_env).to receive(:install).with(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem')
|
511
|
-
|
519
|
+
@provider.run_action(:install)
|
520
|
+
expect(@new_resource).to be_updated_by_last_action
|
512
521
|
end
|
513
522
|
|
514
523
|
it "installs the gem from file via the gems api when the package is a path and the source is nil" do
|
@@ -517,7 +526,8 @@ describe Chef::Provider::Package::Rubygems do
|
|
517
526
|
@provider.current_resource = @current_resource
|
518
527
|
expect(@new_resource.source).to eq(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem')
|
519
528
|
expect(@provider.gem_env).to receive(:install).with(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem')
|
520
|
-
|
529
|
+
@provider.run_action(:install)
|
530
|
+
expect(@new_resource).to be_updated_by_last_action
|
521
531
|
end
|
522
532
|
|
523
533
|
# this catches 'gem_package "foo"' when "./foo" is a file in the cwd, and instead of installing './foo' it fetches the remote gem
|
@@ -525,20 +535,35 @@ describe Chef::Provider::Package::Rubygems do
|
|
525
535
|
allow(::File).to receive(:exists?).and_return(true)
|
526
536
|
@new_resource.package_name('rspec-core')
|
527
537
|
expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => nil)
|
528
|
-
|
538
|
+
@provider.run_action(:install)
|
539
|
+
expect(@new_resource).to be_updated_by_last_action
|
529
540
|
end
|
530
541
|
|
531
542
|
it "installs the gem by shelling out when options are provided as a String" do
|
532
543
|
@new_resource.options('-i /alt/install/location')
|
533
544
|
expected ="gem install rspec-core -q --no-rdoc --no-ri -v \"#{@spec_version}\" -i /alt/install/location"
|
534
545
|
expect(@provider).to receive(:shell_out!).with(expected, :env => nil)
|
535
|
-
|
546
|
+
@provider.run_action(:install)
|
547
|
+
expect(@new_resource).to be_updated_by_last_action
|
548
|
+
end
|
549
|
+
|
550
|
+
context "when no version is given" do
|
551
|
+
let(:target_version) { nil }
|
552
|
+
|
553
|
+
it "installs the gem by shelling out when options are provided but no version is given" do
|
554
|
+
@new_resource.options('-i /alt/install/location')
|
555
|
+
expected ="gem install rspec-core -q --no-rdoc --no-ri -v \"#{@provider.candidate_version}\" -i /alt/install/location"
|
556
|
+
expect(@provider).to receive(:shell_out!).with(expected, :env => nil)
|
557
|
+
@provider.run_action(:install)
|
558
|
+
expect(@new_resource).to be_updated_by_last_action
|
559
|
+
end
|
536
560
|
end
|
537
561
|
|
538
562
|
it "installs the gem via the gems api when options are given as a Hash" do
|
539
563
|
@new_resource.options(:install_dir => '/alt/install/location')
|
540
564
|
expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => nil, :install_dir => '/alt/install/location')
|
541
|
-
|
565
|
+
@provider.run_action(:install)
|
566
|
+
expect(@new_resource).to be_updated_by_last_action
|
542
567
|
end
|
543
568
|
|
544
569
|
describe "at a specific version" do
|
@@ -548,24 +573,25 @@ describe Chef::Provider::Package::Rubygems do
|
|
548
573
|
|
549
574
|
it "installs the gem via the gems api" do
|
550
575
|
expect(@provider.gem_env).to receive(:install).with(@gem_dep, :sources => nil)
|
551
|
-
|
576
|
+
@provider.run_action(:install)
|
577
|
+
expect(@new_resource).to be_updated_by_last_action
|
552
578
|
end
|
553
579
|
end
|
554
580
|
describe "at version specified with comparison operator" do
|
555
581
|
it "skips install if current version satisifies requested version" do
|
556
|
-
|
557
|
-
|
582
|
+
@current_resource.version("2.3.3")
|
583
|
+
@new_resource.version(">=2.3.0")
|
558
584
|
|
559
585
|
expect(@provider.gem_env).not_to receive(:install)
|
560
|
-
@provider.
|
586
|
+
@provider.run_action(:install)
|
561
587
|
end
|
562
588
|
|
563
589
|
it "allows user to specify gem version with fuzzy operator" do
|
564
|
-
|
565
|
-
|
590
|
+
@current_resource.version("2.3.3")
|
591
|
+
@new_resource.version("~>2.3.0")
|
566
592
|
|
567
593
|
expect(@provider.gem_env).not_to receive(:install)
|
568
|
-
@provider.
|
594
|
+
@provider.run_action(:install)
|
569
595
|
end
|
570
596
|
end
|
571
597
|
end
|
@@ -574,7 +600,8 @@ describe Chef::Provider::Package::Rubygems do
|
|
574
600
|
it "installs the gem by shelling out to gem install" do
|
575
601
|
@new_resource.gem_binary('/usr/weird/bin/gem')
|
576
602
|
expect(@provider).to receive(:shell_out!).with("/usr/weird/bin/gem install rspec-core -q --no-rdoc --no-ri -v \"#{@spec_version}\"", :env=>nil)
|
577
|
-
|
603
|
+
@provider.run_action(:install)
|
604
|
+
expect(@new_resource).to be_updated_by_last_action
|
578
605
|
end
|
579
606
|
|
580
607
|
it "installs the gem from file by shelling out to gem install" do
|
@@ -582,7 +609,8 @@ describe Chef::Provider::Package::Rubygems do
|
|
582
609
|
@new_resource.source(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem')
|
583
610
|
@new_resource.version('>= 0')
|
584
611
|
expect(@provider).to receive(:shell_out!).with("/usr/weird/bin/gem install #{CHEF_SPEC_DATA}/gems/chef-integration-test-0.1.0.gem -q --no-rdoc --no-ri -v \">= 0\"", :env=>nil)
|
585
|
-
|
612
|
+
@provider.run_action(:install)
|
613
|
+
expect(@new_resource).to be_updated_by_last_action
|
586
614
|
end
|
587
615
|
|
588
616
|
it "installs the gem from file by shelling out to gem install when the package is a path and the source is nil" do
|
@@ -593,7 +621,8 @@ describe Chef::Provider::Package::Rubygems do
|
|
593
621
|
@new_resource.version('>= 0')
|
594
622
|
expect(@new_resource.source).to eq(CHEF_SPEC_DATA + '/gems/chef-integration-test-0.1.0.gem')
|
595
623
|
expect(@provider).to receive(:shell_out!).with("/usr/weird/bin/gem install #{CHEF_SPEC_DATA}/gems/chef-integration-test-0.1.0.gem -q --no-rdoc --no-ri -v \">= 0\"", :env=>nil)
|
596
|
-
|
624
|
+
@provider.run_action(:install)
|
625
|
+
expect(@new_resource).to be_updated_by_last_action
|
597
626
|
end
|
598
627
|
end
|
599
628
|
|
@@ -46,34 +46,33 @@ INSTDATE: Nov 04 2009 01:02
|
|
46
46
|
HOTLINE: Please contact your local service provider
|
47
47
|
PKGINFO
|
48
48
|
|
49
|
-
@status = double("Status", :exitstatus => 0)
|
49
|
+
@status = double("Status",:stdout => "", :exitstatus => 0)
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should create a current resource with the name of new_resource" do
|
53
|
-
allow(@provider).to receive(:
|
53
|
+
allow(@provider).to receive(:shell_out).and_return(@status)
|
54
54
|
@provider.load_current_resource
|
55
55
|
expect(@provider.current_resource.name).to eq("SUNWbash")
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should set the current reource package name to the new resource package name" do
|
59
|
-
allow(@provider).to receive(:
|
59
|
+
allow(@provider).to receive(:shell_out).and_return(@status)
|
60
60
|
@provider.load_current_resource
|
61
61
|
expect(@provider.current_resource.package_name).to eq("SUNWbash")
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should raise an exception if a source is supplied but not found" do
|
65
|
-
allow(@provider).to receive(:
|
65
|
+
allow(@provider).to receive(:shell_out).and_return(@status)
|
66
66
|
allow(::File).to receive(:exists?).and_return(false)
|
67
|
-
@provider.define_resource_requirements
|
68
67
|
@provider.load_current_resource
|
68
|
+
@provider.define_resource_requirements
|
69
69
|
expect { @provider.process_resource_requirements }.to raise_error(Chef::Exceptions::Package)
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should get the source package version from pkginfo if provided" do
|
73
|
-
|
74
|
-
@
|
75
|
-
expect(@provider).to receive(:
|
76
|
-
expect(@provider).to receive(:popen4).with("pkginfo -l SUNWbash").and_return(@status)
|
73
|
+
status = double(:stdout => @pkginfo, :exitstatus => 0)
|
74
|
+
expect(@provider).to receive(:shell_out).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_return(status)
|
75
|
+
expect(@provider).to receive(:shell_out).with("pkginfo -l SUNWbash").and_return(@status)
|
77
76
|
@provider.load_current_resource
|
78
77
|
|
79
78
|
expect(@provider.current_resource.package_name).to eq("SUNWbash")
|
@@ -81,10 +80,9 @@ PKGINFO
|
|
81
80
|
end
|
82
81
|
|
83
82
|
it "should return the current version installed if found by pkginfo" do
|
84
|
-
|
85
|
-
@
|
86
|
-
expect(@provider).to receive(:
|
87
|
-
expect(@provider).to receive(:popen4).with("pkginfo -l SUNWbash").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
|
83
|
+
status = double(:stdout => @pkginfo, :exitstatus => 0)
|
84
|
+
expect(@provider).to receive(:shell_out).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_return(@status)
|
85
|
+
expect(@provider).to receive(:shell_out).with("pkginfo -l SUNWbash").and_return(status)
|
88
86
|
@provider.load_current_resource
|
89
87
|
expect(@provider.current_resource.version).to eq("11.10.0,REV=2005.01.08.05.16")
|
90
88
|
end
|
@@ -92,20 +90,19 @@ PKGINFO
|
|
92
90
|
it "should raise an exception if the source is not set but we are installing" do
|
93
91
|
@new_resource = Chef::Resource::Package.new("SUNWbash")
|
94
92
|
@provider = Chef::Provider::Package::Solaris.new(@new_resource, @run_context)
|
95
|
-
allow(@provider).to receive(:
|
93
|
+
allow(@provider).to receive(:shell_out).and_return(@status)
|
96
94
|
expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package)
|
97
95
|
end
|
98
96
|
|
99
97
|
it "should raise an exception if pkginfo fails to run" do
|
100
|
-
|
101
|
-
allow(@provider).to receive(:
|
98
|
+
status = double(:stdout => "", :exitstatus => -1)
|
99
|
+
allow(@provider).to receive(:shell_out).and_return(status)
|
102
100
|
expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package)
|
103
101
|
end
|
104
102
|
|
105
103
|
it "should return a current resource with a nil version if the package is not found" do
|
106
|
-
@
|
107
|
-
expect(@provider).to receive(:
|
108
|
-
expect(@provider).to receive(:popen4).with("pkginfo -l SUNWbash").and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
|
104
|
+
expect(@provider).to receive(:shell_out).with("pkginfo -l -d /tmp/bash.pkg SUNWbash").and_return(@status)
|
105
|
+
expect(@provider).to receive(:shell_out).with("pkginfo -l SUNWbash").and_return(@status)
|
109
106
|
@provider.load_current_resource
|
110
107
|
expect(@provider.current_resource.version).to be_nil
|
111
108
|
end
|
@@ -114,20 +111,20 @@ PKGINFO
|
|
114
111
|
describe "candidate_version" do
|
115
112
|
it "should return the candidate_version variable if already setup" do
|
116
113
|
@provider.candidate_version = "11.10.0,REV=2005.01.08.05.16"
|
117
|
-
expect(@provider).not_to receive(:
|
114
|
+
expect(@provider).not_to receive(:shell_out)
|
118
115
|
@provider.candidate_version
|
119
116
|
end
|
120
117
|
|
121
118
|
it "should lookup the candidate_version if the variable is not already set" do
|
122
|
-
|
123
|
-
allow(@provider).to receive(:
|
124
|
-
expect(@provider).to receive(:
|
119
|
+
status = double(:stdout => "", :exitstatus => 0)
|
120
|
+
allow(@provider).to receive(:shell_out).and_return(status)
|
121
|
+
expect(@provider).to receive(:shell_out)
|
125
122
|
@provider.candidate_version
|
126
123
|
end
|
127
124
|
|
128
125
|
it "should throw and exception if the exitstatus is not 0" do
|
129
|
-
|
130
|
-
allow(@provider).to receive(:
|
126
|
+
status = double(:stdout => "", :exitstatus => 1)
|
127
|
+
allow(@provider).to receive(:shell_out).and_return(status)
|
131
128
|
expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package)
|
132
129
|
end
|
133
130
|
|
@@ -231,26 +231,102 @@ describe Chef::Provider::Package::Yum do
|
|
231
231
|
@provider.load_current_resource
|
232
232
|
end
|
233
233
|
|
234
|
-
|
234
|
+
context "when the package name isn't found" do
|
235
|
+
let(:yum_cache) { double(
|
236
|
+
'Chef::Provider::Yum::YumCache',
|
237
|
+
:reload_installed => true,
|
238
|
+
:reset => true,
|
239
|
+
:installed_version => "1.0.1.el5",
|
240
|
+
:candidate_version => "2.0.1.el5",
|
241
|
+
:package_available? => false,
|
242
|
+
:version_available? => true,
|
243
|
+
:disable_extra_repo_control => true
|
244
|
+
)
|
245
|
+
}
|
246
|
+
|
247
|
+
before do
|
248
|
+
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(yum_cache)
|
249
|
+
@pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "2.0.1.el5", "x86_64", [])
|
250
|
+
expect(yum_cache).to receive(:packages_from_require).and_return([@pkg])
|
251
|
+
end
|
252
|
+
|
253
|
+
it "should search provides then set package_name to match" do
|
254
|
+
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
255
|
+
@provider.load_current_resource
|
256
|
+
expect(@new_resource.package_name).to eq('test-package')
|
257
|
+
expect(@new_resource.version).to eq(nil)
|
258
|
+
end
|
259
|
+
|
260
|
+
it "should search provides then set version to match if a requirement was passed in the package name" do
|
261
|
+
@new_resource = Chef::Resource::YumPackage.new('test-package = 2.0.1.el5')
|
262
|
+
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
263
|
+
@provider.load_current_resource
|
264
|
+
expect(@new_resource.package_name).to eq('test-package')
|
265
|
+
expect(@new_resource.version).to eq('2.0.1.el5')
|
266
|
+
end
|
267
|
+
|
268
|
+
|
269
|
+
it "should search provides then set version to match if a requirement was passed in the version" do
|
270
|
+
@new_resource = Chef::Resource::YumPackage.new('test-package')
|
271
|
+
@new_resource.version('= 2.0.1.el5')
|
272
|
+
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
273
|
+
@provider.load_current_resource
|
274
|
+
expect(@new_resource.package_name).to eq('test-package')
|
275
|
+
expect(@new_resource.version).to eq('2.0.1.el5')
|
276
|
+
end
|
277
|
+
|
278
|
+
|
279
|
+
it "should search provides and not set the version to match if a specific version was requested" do
|
280
|
+
@new_resource = Chef::Resource::YumPackage.new('test-package')
|
281
|
+
@new_resource.version('3.0.1.el5')
|
282
|
+
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
283
|
+
@provider.load_current_resource
|
284
|
+
expect(@new_resource.package_name).to eq('test-package')
|
285
|
+
expect(@new_resource.version).to eq('3.0.1.el5')
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should search provides then set versions to match if requirements were passed in the package name as an array" do
|
289
|
+
@new_resource = Chef::Resource::YumPackage.new(['test-package = 2.0.1.el5'])
|
290
|
+
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
291
|
+
@provider.load_current_resource
|
292
|
+
expect(@new_resource.package_name).to eq(['test-package'])
|
293
|
+
expect(@new_resource.version).to eq(['2.0.1.el5'])
|
294
|
+
end
|
295
|
+
|
296
|
+
it "should search provides and not set the versions to match if specific versions were requested in an array" do
|
297
|
+
@new_resource = Chef::Resource::YumPackage.new(['test-package'])
|
298
|
+
@new_resource.version(['3.0.1.el5'])
|
299
|
+
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
300
|
+
@provider.load_current_resource
|
301
|
+
expect(@new_resource.package_name).to eq(['test-package'])
|
302
|
+
expect(@new_resource.version).to eq(['3.0.1.el5'])
|
303
|
+
end
|
304
|
+
|
305
|
+
end
|
306
|
+
|
307
|
+
it "should not return an error if no version number is specified in the resource" do
|
308
|
+
@new_resource = Chef::Resource::YumPackage.new('test-package')
|
235
309
|
@yum_cache = double(
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
310
|
+
'Chef::Provider::Yum::YumCache',
|
311
|
+
:reload_installed => true,
|
312
|
+
:reset => true,
|
313
|
+
:installed_version => "1.0.1.el5",
|
314
|
+
:candidate_version => "2.0.1.el5",
|
315
|
+
:package_available? => false,
|
316
|
+
:version_available? => true,
|
317
|
+
:disable_extra_repo_control => true
|
244
318
|
)
|
245
319
|
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
246
|
-
pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "
|
320
|
+
pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "2.0.1.el5", "x86_64", [])
|
247
321
|
expect(@yum_cache).to receive(:packages_from_require).and_return([pkg])
|
248
322
|
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
249
323
|
@provider.load_current_resource
|
250
324
|
expect(@new_resource.package_name).to eq("test-package")
|
325
|
+
expect(@new_resource.version).to eq(nil)
|
251
326
|
end
|
252
327
|
|
253
|
-
it "should
|
328
|
+
it "should give precedence to the version attribute when both a requirement in the resource name and a version attribute are specified" do
|
329
|
+
@new_resource = Chef::Resource::YumPackage.new('test-package')
|
254
330
|
@yum_cache = double(
|
255
331
|
'Chef::Provider::Yum::YumCache',
|
256
332
|
:reload_installed => true,
|
@@ -262,13 +338,38 @@ describe Chef::Provider::Package::Yum do
|
|
262
338
|
:disable_extra_repo_control => true
|
263
339
|
)
|
264
340
|
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
341
|
+
pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "2.0.1.el5", "x86_64", [])
|
342
|
+
expect(@yum_cache).to receive(:packages_from_require).and_return([pkg])
|
343
|
+
@new_resource = Chef::Resource::YumPackage.new('test-package = 2.0.1.el5')
|
344
|
+
@new_resource.version('3.0.1.el5')
|
269
345
|
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
270
346
|
@provider.load_current_resource
|
271
|
-
expect(@new_resource.package_name).to eq(
|
347
|
+
expect(@new_resource.package_name).to eq('test-package')
|
348
|
+
expect(@new_resource.version).to eq('3.0.1.el5')
|
349
|
+
end
|
350
|
+
|
351
|
+
it "should correctly detect the installed states of an array of package names and version numbers" do
|
352
|
+
@yum_cache = double(
|
353
|
+
'Chef::Provider::Yum::YumCache',
|
354
|
+
:reload_installed => true,
|
355
|
+
:reset => true,
|
356
|
+
:installed_version => "1.0.1.el5",
|
357
|
+
:candidate_version => "2.0.1.el5",
|
358
|
+
:package_available? => false,
|
359
|
+
:version_available? => true,
|
360
|
+
:disable_extra_repo_control => true
|
361
|
+
)
|
362
|
+
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
363
|
+
|
364
|
+
expect(@yum_cache).to receive(:packages_from_require).exactly(4).times.and_return([])
|
365
|
+
expect(@yum_cache).to receive(:reload_provides).twice
|
366
|
+
|
367
|
+
@new_resource = Chef::Resource::YumPackage.new(['test-package','test-package2'])
|
368
|
+
@new_resource.version(['2.0.1.el5','3.0.1.el5'])
|
369
|
+
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
370
|
+
@provider.load_current_resource
|
371
|
+
expect(@new_resource.package_name).to eq(['test-package','test-package2'])
|
372
|
+
expect(@new_resource.version).to eq(['2.0.1.el5','3.0.1.el5'])
|
272
373
|
end
|
273
374
|
|
274
375
|
it "should search provides if no package is available - if no match in installed provides then load the complete set" do
|
@@ -287,6 +388,7 @@ describe Chef::Provider::Package::Yum do
|
|
287
388
|
expect(@yum_cache).to receive(:reload_provides)
|
288
389
|
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
289
390
|
@provider.load_current_resource
|
391
|
+
expect(@new_resource.version).to eq(nil)
|
290
392
|
end
|
291
393
|
|
292
394
|
it "should search provides if no package is available and not load the complete set if action is :remove or :purge" do
|
@@ -337,9 +439,9 @@ describe Chef::Provider::Package::Yum do
|
|
337
439
|
@provider.load_current_resource
|
338
440
|
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
339
441
|
expect(@provider).to receive(:yum_command).with(
|
340
|
-
"yum -d0 -e0 -y install
|
442
|
+
"yum -d0 -e0 -y install cups-1.2.4-11.19.el5"
|
341
443
|
)
|
342
|
-
@provider.install_package("
|
444
|
+
@provider.install_package("cups", "1.2.4-11.19.el5")
|
343
445
|
end
|
344
446
|
|
345
447
|
it "should run yum localinstall if given a path to an rpm" do
|
@@ -366,14 +468,14 @@ describe Chef::Provider::Package::Yum do
|
|
366
468
|
allow(@new_resource).to receive(:arch).and_return("i386")
|
367
469
|
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
368
470
|
expect(@provider).to receive(:yum_command).with(
|
369
|
-
"yum -d0 -e0 -y install
|
471
|
+
"yum -d0 -e0 -y install cups-1.2.4-11.19.el5.i386"
|
370
472
|
)
|
371
|
-
@provider.install_package("
|
473
|
+
@provider.install_package("cups", "1.2.4-11.19.el5")
|
372
474
|
end
|
373
475
|
|
374
476
|
it "installs the package with the options given in the resource" do
|
375
477
|
@provider.load_current_resource
|
376
|
-
@provider.candidate_version
|
478
|
+
allow(@provider).to receive(:candidate_version).and_return('11')
|
377
479
|
allow(@new_resource).to receive(:options).and_return("--disablerepo epmd")
|
378
480
|
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
379
481
|
expect(@provider).to receive(:yum_command).with(
|
@@ -467,10 +569,10 @@ describe Chef::Provider::Package::Yum do
|
|
467
569
|
@provider.load_current_resource
|
468
570
|
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
469
571
|
expect(@provider).to receive(:yum_command).with(
|
470
|
-
"yum -d0 -e0 -y install
|
572
|
+
"yum -d0 -e0 -y install cups-1.2.4-11.15.el5"
|
471
573
|
)
|
472
574
|
expect(@yum_cache).to receive(:reload).once
|
473
|
-
@provider.install_package("
|
575
|
+
@provider.install_package("cups", "1.2.4-11.15.el5")
|
474
576
|
end
|
475
577
|
|
476
578
|
it "should run yum install then not flush the cache if :after is false" do
|
@@ -478,17 +580,17 @@ describe Chef::Provider::Package::Yum do
|
|
478
580
|
@provider.load_current_resource
|
479
581
|
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
480
582
|
expect(@provider).to receive(:yum_command).with(
|
481
|
-
"yum -d0 -e0 -y install
|
583
|
+
"yum -d0 -e0 -y install cups-1.2.4-11.15.el5"
|
482
584
|
)
|
483
585
|
expect(@yum_cache).not_to receive(:reload)
|
484
|
-
@provider.install_package("
|
586
|
+
@provider.install_package("cups", "1.2.4-11.15.el5")
|
485
587
|
end
|
486
588
|
end
|
487
589
|
|
488
590
|
describe "when upgrading a package" do
|
489
591
|
it "should run yum install if the package is installed and a version is given" do
|
490
592
|
@provider.load_current_resource
|
491
|
-
@provider.candidate_version
|
593
|
+
allow(@provider).to receive(:candidate_version).and_return('11')
|
492
594
|
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
493
595
|
expect(@provider).to receive(:yum_command).with(
|
494
596
|
"yum -d0 -e0 -y install cups-11"
|
@@ -499,7 +601,7 @@ describe Chef::Provider::Package::Yum do
|
|
499
601
|
it "should run yum install if the package is not installed" do
|
500
602
|
@provider.load_current_resource
|
501
603
|
@current_resource = Chef::Resource::Package.new('cups')
|
502
|
-
@provider.candidate_version
|
604
|
+
allow(@provider).to receive(:candidate_version).and_return('11')
|
503
605
|
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
504
606
|
expect(@provider).to receive(:yum_command).with(
|
505
607
|
"yum -d0 -e0 -y install cups-11"
|
@@ -528,42 +630,41 @@ describe Chef::Provider::Package::Yum do
|
|
528
630
|
# Test our little workaround, some crossover into Chef::Provider::Package territory
|
529
631
|
it "should call action_upgrade in the parent if the current resource version is nil" do
|
530
632
|
allow(@yum_cache).to receive(:installed_version).and_return(nil)
|
531
|
-
@provider.load_current_resource
|
532
633
|
@current_resource = Chef::Resource::Package.new('cups')
|
533
|
-
@provider.candidate_version
|
634
|
+
allow(@provider).to receive(:candidate_version).and_return('11')
|
534
635
|
expect(@provider).to receive(:upgrade_package).with(
|
535
636
|
"cups",
|
536
637
|
"11"
|
537
638
|
)
|
538
|
-
@provider.
|
639
|
+
@provider.run_action(:upgrade)
|
539
640
|
end
|
540
641
|
|
541
642
|
it "should call action_upgrade in the parent if the candidate version is nil" do
|
542
643
|
@provider.load_current_resource
|
543
644
|
@current_resource = Chef::Resource::Package.new('cups')
|
544
|
-
@provider.candidate_version
|
645
|
+
allow(@provider).to receive(:candidate_version).and_return(nil)
|
545
646
|
expect(@provider).not_to receive(:upgrade_package)
|
546
|
-
@provider.
|
647
|
+
@provider.run_action(:upgrade)
|
547
648
|
end
|
548
649
|
|
549
650
|
it "should call action_upgrade in the parent if the candidate is newer" do
|
550
651
|
@provider.load_current_resource
|
551
652
|
@current_resource = Chef::Resource::Package.new('cups')
|
552
|
-
@provider.candidate_version
|
653
|
+
allow(@provider).to receive(:candidate_version).and_return('11')
|
553
654
|
expect(@provider).to receive(:upgrade_package).with(
|
554
655
|
"cups",
|
555
656
|
"11"
|
556
657
|
)
|
557
|
-
@provider.
|
658
|
+
@provider.run_action(:upgrade)
|
558
659
|
end
|
559
660
|
|
560
661
|
it "should not call action_upgrade in the parent if the candidate is older" do
|
561
662
|
allow(@yum_cache).to receive(:installed_version).and_return("12")
|
562
663
|
@provider.load_current_resource
|
563
664
|
@current_resource = Chef::Resource::Package.new('cups')
|
564
|
-
@provider.candidate_version
|
665
|
+
allow(@provider).to receive(:candidate_version).and_return('11')
|
565
666
|
expect(@provider).not_to receive(:upgrade_package)
|
566
|
-
@provider.
|
667
|
+
@provider.run_action(:upgrade)
|
567
668
|
end
|
568
669
|
end
|
569
670
|
|
@@ -1861,3 +1962,103 @@ EOF
|
|
1861
1962
|
end
|
1862
1963
|
|
1863
1964
|
end
|
1965
|
+
|
1966
|
+
describe "Chef::Provider::Package::Yum - Multi" do
|
1967
|
+
before(:each) do
|
1968
|
+
@node = Chef::Node.new
|
1969
|
+
@events = Chef::EventDispatch::Dispatcher.new
|
1970
|
+
@run_context = Chef::RunContext.new(@node, {}, @events)
|
1971
|
+
@new_resource = Chef::Resource::Package.new(['cups', 'vim'])
|
1972
|
+
@status = double("Status", :exitstatus => 0)
|
1973
|
+
@yum_cache = double(
|
1974
|
+
'Chef::Provider::Yum::YumCache',
|
1975
|
+
:reload_installed => true,
|
1976
|
+
:reset => true,
|
1977
|
+
:installed_version => 'XXXX',
|
1978
|
+
:candidate_version => 'YYYY',
|
1979
|
+
:package_available? => true,
|
1980
|
+
:version_available? => true,
|
1981
|
+
:allow_multi_install => [ 'kernel' ],
|
1982
|
+
:package_repository => 'base',
|
1983
|
+
:disable_extra_repo_control => true
|
1984
|
+
)
|
1985
|
+
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
1986
|
+
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
1987
|
+
@pid = double("PID")
|
1988
|
+
end
|
1989
|
+
|
1990
|
+
describe "when loading the current system state" do
|
1991
|
+
it "should create a current resource with the name of the new_resource" do
|
1992
|
+
@provider.load_current_resource
|
1993
|
+
expect(@provider.current_resource.name).to eq('cups, vim')
|
1994
|
+
end
|
1995
|
+
|
1996
|
+
it "should set the current resources package name to the new resources package name" do
|
1997
|
+
@provider.load_current_resource
|
1998
|
+
expect(@provider.current_resource.package_name).to eq(['cups', 'vim'])
|
1999
|
+
end
|
2000
|
+
|
2001
|
+
it "should set the installed version to nil on the current resource if no installed package" do
|
2002
|
+
allow(@yum_cache).to receive(:installed_version).and_return(nil)
|
2003
|
+
@provider.load_current_resource
|
2004
|
+
expect(@provider.current_resource.version).to eq([nil, nil])
|
2005
|
+
end
|
2006
|
+
|
2007
|
+
it "should set the installed version if yum has one" do
|
2008
|
+
allow(@yum_cache).to receive(:installed_version).with('cups', nil).and_return('1.2.4-11.18.el5')
|
2009
|
+
allow(@yum_cache).to receive(:installed_version).with('vim', nil).and_return('1.0')
|
2010
|
+
allow(@yum_cache).to receive(:candidate_version).with('cups', nil).and_return('1.2.4-11.18.el5_2.3')
|
2011
|
+
allow(@yum_cache).to receive(:candidate_version).with('vim', nil).and_return('1.5')
|
2012
|
+
@provider.load_current_resource
|
2013
|
+
expect(@provider.current_resource.version).to eq(['1.2.4-11.18.el5', '1.0'])
|
2014
|
+
end
|
2015
|
+
|
2016
|
+
it "should set the candidate version if yum info has one" do
|
2017
|
+
allow(@yum_cache).to receive(:installed_version).with('cups', nil).and_return('1.2.4-11.18.el5')
|
2018
|
+
allow(@yum_cache).to receive(:installed_version).with('vim', nil).and_return('1.0')
|
2019
|
+
allow(@yum_cache).to receive(:candidate_version).with('cups', nil).and_return('1.2.4-11.18.el5_2.3')
|
2020
|
+
allow(@yum_cache).to receive(:candidate_version).with('vim', nil).and_return('1.5')
|
2021
|
+
@provider.load_current_resource
|
2022
|
+
expect(@provider.candidate_version).to eql(['1.2.4-11.18.el5_2.3', '1.5'])
|
2023
|
+
end
|
2024
|
+
|
2025
|
+
it "should return the current resouce" do
|
2026
|
+
expect(@provider.load_current_resource).to eql(@provider.current_resource)
|
2027
|
+
end
|
2028
|
+
end
|
2029
|
+
|
2030
|
+
describe "when installing a package" do
|
2031
|
+
it "should run yum install with the package name and version" do
|
2032
|
+
@provider.load_current_resource
|
2033
|
+
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
2034
|
+
allow(@yum_cache).to receive(:installed_version).with('cups', nil).and_return('1.2.4-11.18.el5')
|
2035
|
+
allow(@yum_cache).to receive(:installed_version).with('vim', nil).and_return('0.9')
|
2036
|
+
expect(@provider).to receive(:yum_command).with(
|
2037
|
+
"yum -d0 -e0 -y install cups-1.2.4-11.19.el5 vim-1.0"
|
2038
|
+
)
|
2039
|
+
@provider.install_package(["cups", "vim"], ["1.2.4-11.19.el5", '1.0'])
|
2040
|
+
end
|
2041
|
+
|
2042
|
+
it "should run yum install with the package name, version and arch" do
|
2043
|
+
@provider.load_current_resource
|
2044
|
+
allow(@new_resource).to receive(:arch).and_return("i386")
|
2045
|
+
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
2046
|
+
expect(@provider).to receive(:yum_command).with(
|
2047
|
+
"yum -d0 -e0 -y install cups-1.2.4-11.19.el5.i386 vim-1.0.i386"
|
2048
|
+
)
|
2049
|
+
@provider.install_package(["cups", "vim"], ["1.2.4-11.19.el5", "1.0"])
|
2050
|
+
end
|
2051
|
+
|
2052
|
+
it "installs the package with the options given in the resource" do
|
2053
|
+
@provider.load_current_resource
|
2054
|
+
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
2055
|
+
allow(@yum_cache).to receive(:installed_version).with('cups', nil).and_return('1.2.4-11.18.el5')
|
2056
|
+
allow(@yum_cache).to receive(:installed_version).with('vim', nil).and_return('0.9')
|
2057
|
+
expect(@provider).to receive(:yum_command).with(
|
2058
|
+
"yum -d0 -e0 -y --disablerepo epmd install cups-1.2.4-11.19.el5 vim-1.0"
|
2059
|
+
)
|
2060
|
+
allow(@new_resource).to receive(:options).and_return("--disablerepo epmd")
|
2061
|
+
@provider.install_package(["cups", "vim"], ["1.2.4-11.19.el5", '1.0'])
|
2062
|
+
end
|
2063
|
+
end
|
2064
|
+
end
|