chef 13.12.14-universal-mingw32 → 14.0.190-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +151 -0
- data/Gemfile +12 -9
- data/README.md +34 -32
- data/Rakefile +22 -18
- data/VERSION +1 -0
- data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +33 -0
- data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +272 -0
- data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +57 -0
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +68 -0
- data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -0
- data/acceptance/Gemfile +19 -0
- data/acceptance/Gemfile.lock +266 -0
- data/acceptance/README.md +137 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/metadata.rb +3 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/basics/.kitchen.yml +4 -0
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +19 -0
- data/acceptance/basics/test/integration/chef-current-install/serverspec/spec_helper.rb +6 -0
- data/acceptance/basics/test/integration/helpers/serverspec/Gemfile +8 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/metadata.rb +3 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/destroy.rb +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/provision.rb +2 -0
- data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/verify.rb +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/.gitignore +16 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/Berksfile +3 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/api.rb +101 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/apigemfile +3 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-both-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-client-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-no-endpoint.rb +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-solo-mode.rb +4 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/files/default/config.ru +2 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +7 -0
- data/acceptance/data-collector/.acceptance/data-collector-test/recipes/default.rb +44 -0
- data/acceptance/data-collector/.kitchen.yml +9 -0
- data/acceptance/data-collector/Berksfile +3 -0
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +208 -0
- data/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile +8 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/metadata.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/verify.rb +61 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/cookbook_kitchen.rb +43 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +41 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/metadata.rb +3 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/top-cookbooks/.gitignore +1 -0
- data/acceptance/top-cookbooks/.kitchen.chocolatey.yml +6 -0
- data/acceptance/top-cookbooks/.kitchen.iis.yml +4 -0
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-rhel.yml +7 -0
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-ubuntu.yml +7 -0
- data/acceptance/top-cookbooks/.kitchen.learn-the-basics-windows.yml +7 -0
- data/acceptance/top-cookbooks/.kitchen.powershell.yml +4 -0
- data/acceptance/top-cookbooks/.kitchen.sql_server.yml +5 -0
- data/acceptance/top-cookbooks/.kitchen.winbox.yml +8 -0
- data/acceptance/top-cookbooks/.kitchen.windows.yml +38 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/trivial/.kitchen.yml +7 -0
- data/acceptance/trivial/test/integration/chef-current-install/inspec/chef_client_spec.rb +5 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/.gitignore +2 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/metadata.rb +2 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
- data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
- data/acceptance/windows-service/.kitchen.yml +7 -0
- data/acceptance/windows-service/test/integration/chef-windows-service/inspec/chef_windows_service_spec.rb +58 -0
- data/chef-universal-mingw32.gemspec +2 -2
- data/chef.gemspec +10 -10
- data/distro/powershell/chef/Chef.PowerShell.dll +0 -0
- data/distro/powershell/chef/Newtonsoft.Json.dll +0 -0
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/api_client/registration.rb +10 -2
- data/lib/chef/api_client_v1.rb +7 -6
- data/lib/chef/application.rb +75 -46
- data/lib/chef/application/client.rb +17 -19
- data/lib/chef/application/solo.rb +13 -16
- data/lib/chef/application/windows_service.rb +5 -5
- data/lib/chef/audit/audit_event_proxy.rb +1 -1
- data/lib/chef/audit/audit_reporter.rb +12 -12
- data/lib/chef/audit/runner.rb +2 -2
- data/lib/chef/chef_fs/chef_fs_data_store.rb +17 -31
- data/lib/chef/chef_fs/command_line.rb +9 -9
- data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +2 -2
- data/lib/chef/chef_fs/file_system_cache.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +2 -2
- data/lib/chef/client.rb +61 -41
- data/lib/chef/config.rb +1 -2
- data/lib/chef/config_fetcher.rb +1 -1
- data/lib/chef/cookbook/chefignore.rb +2 -2
- data/lib/chef/cookbook/cookbook_collection.rb +2 -2
- data/lib/chef/cookbook/cookbook_version_loader.rb +0 -1
- data/lib/chef/cookbook/gem_installer.rb +4 -4
- data/lib/chef/cookbook/manifest_v2.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +2 -3
- data/lib/chef/cookbook/remote_file_vendor.rb +4 -4
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook/syntax_check.rb +4 -4
- data/lib/chef/cookbook_loader.rb +10 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +4 -4
- data/lib/chef/cookbook_uploader.rb +2 -3
- data/lib/chef/cookbook_version.rb +5 -11
- data/lib/chef/data_bag.rb +1 -3
- data/lib/chef/data_bag_item.rb +1 -7
- data/lib/chef/data_collector.rb +111 -35
- data/lib/chef/data_collector/messages.rb +2 -2
- data/lib/chef/data_collector/messages/helpers.rb +2 -4
- data/lib/chef/deprecated.rb +0 -4
- data/lib/chef/dsl/data_query.rb +1 -5
- data/lib/chef/dsl/include_attribute.rb +3 -7
- data/lib/chef/dsl/include_recipe.rb +1 -5
- data/lib/chef/dsl/platform_introspection.rb +9 -13
- data/lib/chef/dsl/reboot_pending.rb +1 -8
- data/lib/chef/dsl/recipe.rb +2 -12
- data/lib/chef/dsl/universal.rb +3 -3
- data/lib/chef/environment.rb +2 -4
- data/lib/chef/event_dispatch/dsl.rb +2 -2
- data/lib/chef/exceptions.rb +1 -1
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_content_management/content_base.rb +3 -1
- data/lib/chef/file_content_management/deploy/cp.rb +2 -2
- data/lib/chef/file_content_management/deploy/mv_unix.rb +4 -4
- data/lib/chef/file_content_management/deploy/mv_windows.rb +1 -1
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +3 -3
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +3 -1
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +2 -2
- data/lib/chef/handler.rb +1 -3
- data/lib/chef/handler/json_file.rb +1 -2
- data/lib/chef/http.rb +23 -11
- data/lib/chef/http/auth_credentials.rb +1 -1
- data/lib/chef/http/basic_client.rb +16 -17
- data/lib/chef/http/decompressor.rb +6 -6
- data/lib/chef/http/http_request.rb +5 -5
- data/lib/chef/http/json_output.rb +2 -2
- data/lib/chef/http/socketless_chef_zero_client.rb +2 -2
- data/lib/chef/http/validate_content_length.rb +5 -5
- data/lib/chef/knife.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +12 -37
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +7 -1
- data/lib/chef/knife/client_reregister.rb +1 -1
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/cookbook_download.rb +2 -2
- data/lib/chef/knife/cookbook_metadata.rb +3 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/cookbook_site_share.rb +5 -5
- data/lib/chef/knife/cookbook_test.rb +2 -2
- data/lib/chef/knife/cookbook_upload.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +22 -17
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/deps.rb +1 -1
- data/lib/chef/knife/environment_compare.rb +4 -4
- data/lib/chef/knife/exec.rb +3 -3
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/node_policy_set.rb +79 -0
- data/lib/chef/knife/osc_user_reregister.rb +1 -1
- data/lib/chef/knife/ssh.rb +35 -22
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/ssl_fetch.rb +1 -1
- data/lib/chef/knife/user_reregister.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +2 -4
- data/lib/chef/mixin/create_path.rb +1 -1
- data/lib/chef/mixin/deprecation.rb +14 -14
- data/lib/chef/mixin/from_file.rb +5 -0
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/homebrew_user.rb +13 -2
- data/lib/chef/mixin/openssl_helper.rb +119 -0
- data/lib/chef/mixin/params_validate.rb +2 -8
- data/lib/chef/mixin/powershell_exec.rb +105 -0
- data/lib/chef/mixin/provides.rb +3 -2
- data/lib/chef/mixin/securable.rb +1 -5
- data/lib/chef/mixin/shell_out.rb +2 -2
- data/lib/chef/mixin/template.rb +1 -3
- data/lib/chef/mixin/user_context.rb +6 -3
- data/lib/chef/mixin/why_run.rb +6 -11
- data/lib/chef/monkey_patches/net_http.rb +7 -7
- data/lib/chef/monologger.rb +2 -86
- data/lib/chef/node.rb +30 -20
- data/lib/chef/node/attribute.rb +1 -6
- data/lib/chef/node/attribute_collections.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +110 -3
- data/lib/chef/node/mixin/immutablize_hash.rb +111 -5
- data/lib/chef/node_map.rb +5 -23
- data/lib/chef/platform/query_helpers.rb +0 -12
- data/lib/chef/policy_builder/dynamic.rb +1 -1
- data/lib/chef/policy_builder/expand_node_object.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +17 -1
- data/lib/chef/powershell.rb +55 -0
- data/lib/chef/property.rb +12 -34
- data/lib/chef/provider.rb +16 -39
- data/lib/chef/provider/apt_preference.rb +3 -3
- data/lib/chef/provider/apt_repository.rb +116 -34
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/cookbook_file/content.rb +1 -1
- data/lib/chef/provider/cron.rb +10 -10
- data/lib/chef/provider/cron/unix.rb +3 -3
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +4 -4
- data/lib/chef/provider/dsc_script.rb +4 -4
- data/lib/chef/provider/execute.rb +9 -5
- data/lib/chef/provider/file.rb +12 -12
- data/lib/chef/provider/git.rb +14 -14
- data/lib/chef/provider/group.rb +6 -6
- data/lib/chef/provider/group/aix.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +4 -4
- data/lib/chef/provider/group/groupadd.rb +4 -4
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +4 -4
- data/lib/chef/provider/group/windows.rb +2 -2
- data/lib/chef/provider/http_request.rb +12 -12
- data/lib/chef/provider/ifconfig.rb +6 -6
- data/lib/chef/provider/ifconfig/aix.rb +1 -1
- data/lib/chef/provider/ifconfig/debian.rb +3 -5
- data/lib/chef/provider/launchd.rb +1 -1
- data/lib/chef/provider/link.rb +6 -6
- data/lib/chef/provider/log.rb +1 -1
- data/lib/chef/provider/lwrp_base.rb +2 -2
- data/lib/chef/provider/mdadm.rb +10 -10
- data/lib/chef/provider/mount.rb +12 -12
- data/lib/chef/provider/mount/aix.rb +20 -21
- data/lib/chef/provider/mount/mount.rb +20 -15
- data/lib/chef/provider/mount/solaris.rb +6 -6
- data/lib/chef/provider/mount/windows.rb +7 -7
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -1
- data/lib/chef/provider/osx_profile.rb +8 -8
- data/lib/chef/provider/package.rb +56 -42
- data/lib/chef/provider/package/apt.rb +24 -14
- data/lib/chef/provider/package/{aix.rb → bff.rb} +12 -12
- data/lib/chef/provider/package/cab.rb +3 -3
- data/lib/chef/provider/package/chocolatey.rb +1 -9
- data/lib/chef/provider/package/dnf/python_helper.rb +6 -6
- data/lib/chef/provider/package/dpkg.rb +9 -9
- data/lib/chef/provider/package/freebsd/base.rb +2 -2
- data/lib/chef/provider/package/freebsd/pkg.rb +2 -2
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/homebrew.rb +3 -3
- data/lib/chef/provider/package/ips.rb +2 -2
- data/lib/chef/provider/package/macports.rb +3 -3
- data/lib/chef/provider/package/msu.rb +2 -2
- data/lib/chef/provider/package/openbsd.rb +3 -3
- data/lib/chef/provider/package/pacman.rb +3 -3
- data/lib/chef/provider/package/paludis.rb +2 -2
- data/lib/chef/provider/package/portage.rb +27 -33
- data/lib/chef/provider/package/powershell.rb +24 -9
- data/lib/chef/provider/package/rpm.rb +5 -6
- data/lib/chef/provider/package/rubygems.rb +32 -28
- data/lib/chef/provider/package/smartos.rb +6 -6
- data/lib/chef/provider/package/solaris.rb +10 -10
- data/lib/chef/provider/package/windows.rb +6 -15
- data/lib/chef/provider/package/windows/exe.rb +6 -4
- data/lib/chef/provider/package/windows/msi.rb +8 -6
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -6
- data/lib/chef/provider/package/yum.rb +167 -398
- data/lib/chef/provider/package/yum/python_helper.rb +221 -0
- data/lib/chef/provider/package/yum/rpm_utils.rb +10 -1
- data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -0
- data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -0
- data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -0
- data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -0
- data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -0
- data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
- data/lib/chef/provider/package/yum/simplejson/tool.py +37 -0
- data/lib/chef/provider/package/yum/version.rb +56 -0
- data/lib/chef/provider/package/yum/yum_cache.rb +33 -316
- data/lib/chef/provider/package/yum/yum_helper.py +198 -0
- data/lib/chef/provider/package/zypper.rb +9 -13
- data/lib/chef/provider/powershell_script.rb +3 -3
- data/lib/chef/provider/reboot.rb +3 -3
- data/lib/chef/provider/registry_key.rb +16 -4
- data/lib/chef/provider/remote_directory.rb +1 -3
- data/lib/chef/provider/remote_file/cache_control_data.rb +1 -1
- data/lib/chef/provider/remote_file/content.rb +4 -4
- data/lib/chef/provider/remote_file/http.rb +5 -3
- data/lib/chef/provider/remote_file/local_file.rb +1 -1
- data/lib/chef/provider/remote_file/network_file.rb +2 -2
- data/lib/chef/provider/route.rb +12 -11
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +14 -14
- data/lib/chef/provider/service/aix.rb +3 -3
- data/lib/chef/provider/service/aixinit.rb +2 -2
- data/lib/chef/provider/service/debian.rb +5 -5
- data/lib/chef/provider/service/freebsd.rb +3 -3
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +8 -8
- data/lib/chef/provider/service/openbsd.rb +1 -1
- data/lib/chef/provider/service/simple.rb +7 -7
- data/lib/chef/provider/service/systemd.rb +4 -4
- data/lib/chef/provider/service/upstart.rb +10 -9
- data/lib/chef/provider/service/windows.rb +245 -70
- data/lib/chef/provider/subversion.rb +8 -8
- data/lib/chef/provider/systemd_unit.rb +25 -6
- data/lib/chef/provider/user.rb +10 -10
- data/lib/chef/provider/user/aix.rb +3 -3
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/pw.rb +4 -4
- data/lib/chef/provider/user/solaris.rb +1 -1
- data/lib/chef/provider/user/useradd.rb +3 -3
- data/lib/chef/provider/user/windows.rb +4 -4
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/{env.rb → windows_env.rb} +55 -19
- data/lib/chef/provider/windows_task.rb +27 -27
- data/lib/chef/provider/zypper_repository.rb +7 -7
- data/lib/chef/provider_resolver.rb +4 -4
- data/lib/chef/providers.rb +2 -9
- data/lib/chef/resource.rb +19 -13
- data/lib/chef/resource/action_class.rb +2 -2
- data/lib/chef/resource/apt_package.rb +10 -4
- data/lib/chef/resource/apt_preference.rb +20 -7
- data/lib/chef/resource/apt_repository.rb +21 -12
- data/lib/chef/resource/apt_update.rb +3 -3
- data/lib/chef/resource/bash.rb +6 -4
- data/lib/chef/resource/batch.rb +8 -6
- data/lib/chef/resource/bff_package.rb +8 -5
- data/lib/chef/resource/breakpoint.rb +9 -6
- data/lib/chef/resource/build_essential.rb +139 -0
- data/lib/chef/resource/cab_package.rb +5 -4
- data/lib/chef/resource/chef_gem.rb +1 -1
- data/lib/chef/resource/chef_handler.rb +130 -0
- data/lib/chef/resource/chocolatey_package.rb +6 -6
- data/lib/chef/resource/cookbook_file.rb +12 -9
- data/lib/chef/resource/cron.rb +14 -75
- data/lib/chef/resource/csh.rb +6 -4
- data/lib/chef/resource/directory.rb +7 -4
- data/lib/chef/resource/dmg_package.rb +161 -0
- data/lib/chef/resource/dnf_package.rb +10 -7
- data/lib/chef/resource/dpkg_package.rb +5 -3
- data/lib/chef/resource/dsc_resource.rb +11 -28
- data/lib/chef/resource/dsc_script.rb +14 -37
- data/lib/chef/resource/execute.rb +15 -78
- data/lib/chef/resource/file.rb +6 -5
- data/lib/chef/resource/file/verification.rb +5 -1
- data/lib/chef/resource/freebsd_package.rb +2 -1
- data/lib/chef/resource/gem_package.rb +6 -3
- data/lib/chef/resource/git.rb +4 -15
- data/lib/chef/resource/group.rb +7 -46
- data/lib/chef/resource/homebrew_cask.rb +98 -0
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_tap.rb +86 -0
- data/lib/chef/resource/hostname.rb +249 -0
- data/lib/chef/resource/http_request.rb +8 -22
- data/lib/chef/resource/ifconfig.rb +3 -2
- data/lib/chef/resource/ips_package.rb +4 -3
- data/lib/chef/resource/ksh.rb +7 -6
- data/lib/chef/resource/launchd.rb +4 -4
- data/lib/chef/resource/link.rb +18 -56
- data/lib/chef/resource/log.rb +6 -8
- data/lib/chef/resource/lwrp_base.rb +4 -5
- data/lib/chef/resource/macos_userdefaults.rb +133 -0
- data/lib/chef/resource/macosx_service.rb +7 -23
- data/lib/chef/resource/macports_package.rb +2 -1
- data/lib/chef/resource/mdadm.rb +13 -84
- data/lib/chef/resource/mount.rb +21 -127
- data/lib/chef/resource/msu_package.rb +4 -4
- data/lib/chef/resource/ohai.rb +5 -3
- data/lib/chef/resource/ohai_hint.rb +93 -0
- data/lib/chef/resource/openbsd_package.rb +3 -3
- data/lib/chef/resource/openssl_dhparam.rb +80 -0
- data/lib/chef/resource/openssl_rsa_private_key.rb +93 -0
- data/lib/chef/resource/openssl_rsa_public_key.rb +73 -0
- data/lib/chef/resource/osx_profile.rb +9 -10
- data/lib/chef/resource/package.rb +8 -6
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +4 -4
- data/lib/chef/resource/perl.rb +6 -4
- data/lib/chef/resource/portage_package.rb +3 -6
- data/lib/chef/resource/powershell_package.rb +9 -13
- data/lib/chef/resource/powershell_script.rb +9 -8
- data/lib/chef/resource/python.rb +5 -4
- data/lib/chef/resource/reboot.rb +8 -9
- data/lib/chef/resource/registry_key.rb +9 -19
- data/lib/chef/resource/remote_directory.rb +5 -3
- data/lib/chef/resource/remote_file.rb +11 -50
- data/lib/chef/resource/resource_notification.rb +2 -2
- data/lib/chef/resource/rhsm_errata.rb +44 -0
- data/lib/chef/resource/rhsm_errata_level.rb +51 -0
- data/lib/chef/resource/rhsm_register.rb +162 -0
- data/lib/chef/resource/rhsm_repo.rb +62 -0
- data/lib/chef/resource/rhsm_subscription.rb +95 -0
- data/lib/chef/resource/route.rb +3 -1
- data/lib/chef/resource/rpm_package.rb +3 -3
- data/lib/chef/resource/ruby.rb +6 -4
- data/lib/chef/resource/ruby_block.rb +6 -17
- data/lib/chef/resource/scm.rb +14 -146
- data/lib/chef/resource/script.rb +7 -5
- data/lib/chef/resource/service.rb +2 -1
- data/lib/chef/resource/smartos_package.rb +4 -3
- data/lib/chef/resource/solaris_package.rb +3 -2
- data/lib/chef/resource/subversion.rb +20 -4
- data/lib/chef/resource/sudo.rb +231 -0
- data/lib/chef/resource/support/sudoer.erb +18 -0
- data/lib/chef/resource/swap_file.rb +209 -0
- data/lib/chef/resource/sysctl.rb +111 -0
- data/lib/chef/resource/systemd_unit.rb +6 -5
- data/lib/chef/resource/template.rb +6 -27
- data/lib/chef/resource/windows_ad_join.rb +92 -0
- data/lib/chef/resource/windows_auto_run.rb +87 -0
- data/lib/chef/resource/{env.rb → windows_env.rb} +11 -5
- data/lib/chef/resource/windows_feature.rb +95 -0
- data/lib/chef/resource/windows_feature_dism.rb +226 -0
- data/lib/chef/resource/windows_feature_powershell.rb +256 -0
- data/lib/chef/resource/windows_font.rb +127 -0
- data/lib/chef/resource/windows_package.rb +5 -3
- data/lib/chef/resource/windows_pagefile.rb +206 -0
- data/lib/chef/resource/windows_path.rb +3 -3
- data/lib/chef/resource/windows_printer.rb +148 -0
- data/lib/chef/resource/windows_printer_port.rb +136 -0
- data/lib/chef/resource/windows_service.rb +79 -38
- data/lib/chef/resource/windows_shortcut.rb +79 -0
- data/lib/chef/resource/windows_task.rb +5 -5
- data/lib/chef/resource/yum_package.rb +8 -2
- data/lib/chef/resource/yum_repository.rb +12 -5
- data/lib/chef/resource/zypper_package.rb +5 -3
- data/lib/chef/resource/zypper_repository.rb +17 -12
- data/lib/chef/resource_inspector.rb +89 -0
- data/lib/chef/resource_reporter.rb +5 -6
- data/lib/chef/resource_resolver.rb +4 -4
- data/lib/chef/resources.rb +31 -6
- data/lib/chef/role.rb +1 -3
- data/lib/chef/run_context.rb +21 -12
- data/lib/chef/run_context/cookbook_compiler.rb +18 -9
- data/lib/chef/search/query.rb +1 -2
- data/lib/chef/shell.rb +0 -1
- data/lib/chef/shell/model_wrapper.rb +1 -1
- data/lib/chef/shell/shell_session.rb +4 -3
- data/lib/chef/util/diff.rb +2 -2
- data/lib/chef/util/dsc/configuration_generator.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/dsc/local_configuration_manager.rb +4 -4
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/logon_session.rb +5 -2
- data/lib/chef/util/windows/net_user.rb +2 -2
- data/lib/chef/util/windows/volume.rb +0 -4
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/error.rb +2 -2
- data/lib/chef/win32/api/net.rb +1 -1
- data/lib/chef/win32/api/security.rb +11 -0
- data/lib/chef/win32/eventlog.rb +2 -2
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/registry.rb +17 -17
- data/lib/chef/win32/security.rb +34 -12
- data/lib/chef/win32/security/sid.rb +1 -2
- data/lib/chef/win32/version.rb +2 -15
- data/lib/chef/win32_service_constants.rb +143 -0
- data/spec/data/mixin/invalid_data.rb +3 -0
- data/spec/data/mixin/real_data.rb +2 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.aarch64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.i686.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64le.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.s390x.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.src.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.x86_64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.aarch64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.i686.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64le.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.s390x.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.src.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.x86_64.rpm +0 -0
- data/spec/functional/assets/yumrepo/repodata/4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/primary.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/repomd.xml +19 -53
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +2 -2
- data/spec/functional/http/simple_spec.rb +6 -6
- data/spec/functional/mixin/from_file_spec.rb +82 -0
- data/spec/functional/notifications_spec.rb +1 -1
- data/spec/functional/resource/{package_spec.rb → apt_package_spec.rb} +4 -4
- data/spec/functional/resource/dnf_package_spec.rb +115 -115
- data/spec/functional/resource/ifconfig_spec.rb +1 -2
- data/spec/functional/resource/link_spec.rb +9 -13
- data/spec/functional/resource/powershell_script_spec.rb +0 -2
- data/spec/functional/resource/registry_spec.rb +3 -3
- data/spec/functional/resource/remote_file_spec.rb +4 -4
- data/spec/functional/resource/user/windows_spec.rb +3 -1
- data/spec/functional/resource/windows_env_spec.rb +285 -0
- data/spec/functional/resource/windows_task_spec.rb +303 -2
- data/spec/functional/resource/yum_package_spec.rb +949 -0
- data/spec/functional/root_alias_spec.rb +1 -1
- data/spec/functional/win32/security_spec.rb +60 -7
- data/spec/functional/win32/versions_spec.rb +7 -9
- data/spec/integration/client/client_spec.rb +99 -7
- data/spec/integration/knife/chef_fs_data_store_spec.rb +23 -4
- data/spec/integration/recipes/recipe_dsl_spec.rb +26 -26
- data/spec/integration/recipes/resource_action_spec.rb +25 -120
- data/spec/spec_helper.rb +10 -2
- data/spec/support/lib/chef/resource/one_two_three_four.rb +0 -2
- data/spec/support/lib/chef/resource/zen_master.rb +1 -3
- data/spec/support/mock/constant.rb +1 -1
- data/spec/support/platform_helpers.rb +24 -7
- data/spec/support/shared/context/client.rb +13 -10
- data/spec/support/shared/examples/client.rb +50 -0
- data/spec/support/shared/functional/file_resource.rb +1 -1
- data/spec/support/shared/functional/securable_resource.rb +2 -2
- data/spec/support/shared/integration/knife_support.rb +5 -0
- data/spec/unit/application/client_spec.rb +39 -13
- data/spec/unit/application/solo_spec.rb +1 -8
- data/spec/unit/application_spec.rb +66 -2
- data/spec/unit/audit/audit_event_proxy_spec.rb +1 -1
- data/spec/unit/audit/audit_reporter_spec.rb +16 -16
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/client_spec.rb +3 -4
- data/spec/unit/cookbook/metadata_spec.rb +1 -1
- data/spec/unit/cookbook_loader_spec.rb +6 -6
- data/spec/unit/cookbook_manifest_spec.rb +2 -2
- data/spec/unit/cookbook_version_file_specificity_spec.rb +5 -25
- data/spec/unit/data_collector/messages/helpers_spec.rb +9 -0
- data/spec/unit/data_collector/resource_report_spec.rb +3 -3
- data/spec/unit/data_collector_spec.rb +135 -1
- data/spec/unit/dsl/reboot_pending_spec.rb +0 -13
- data/spec/unit/dsl/recipe_spec.rb +0 -13
- data/spec/unit/environment_spec.rb +2 -2
- data/spec/unit/exceptions_spec.rb +1 -1
- data/spec/unit/http/validate_content_length_spec.rb +5 -5
- data/spec/unit/knife/bootstrap_spec.rb +11 -15
- data/spec/unit/knife/configure_spec.rb +1 -2
- data/spec/unit/knife/cookbook_test_spec.rb +2 -2
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +2 -2
- data/spec/unit/knife/core/node_editor_spec.rb +6 -6
- data/spec/unit/knife/environment_compare_spec.rb +3 -3
- data/spec/unit/knife/node_edit_spec.rb +3 -1
- data/spec/unit/knife/node_policy_set_spec.rb +122 -0
- data/spec/unit/knife/osc_user_reregister_spec.rb +1 -1
- data/spec/unit/knife/osc_user_show_spec.rb +1 -1
- data/spec/unit/knife/ssh_spec.rb +18 -0
- data/spec/unit/log/syslog_spec.rb +2 -4
- data/spec/unit/log/winevt_spec.rb +2 -3
- data/spec/unit/lwrp_spec.rb +4 -4
- data/spec/unit/mixin/homebrew_user_spec.rb +1 -5
- data/spec/unit/mixin/openssl_helper_spec.rb +252 -0
- data/spec/unit/mixin/powershell_exec_spec.rb +43 -0
- data/spec/unit/node/attribute_spec.rb +3 -3
- data/spec/unit/node/immutable_collections_spec.rb +11 -1
- data/spec/unit/node_map_spec.rb +2 -2
- data/spec/unit/node_spec.rb +11 -16
- data/spec/unit/platform/query_helpers_spec.rb +0 -13
- data/spec/unit/policy_builder/policyfile_spec.rb +79 -2
- data/spec/unit/property/validation_spec.rb +51 -4
- data/spec/unit/provider/apt_repository_spec.rb +97 -32
- data/spec/unit/provider/cookbook_file_spec.rb +2 -1
- data/spec/unit/provider/cron/unix_spec.rb +8 -3
- data/spec/unit/provider/cron_spec.rb +27 -32
- data/spec/unit/provider/file_spec.rb +2 -1
- data/spec/unit/provider/group/dscl_spec.rb +7 -8
- data/spec/unit/provider/group/gpasswd_spec.rb +5 -2
- data/spec/unit/provider/group/groupmod_spec.rb +6 -3
- data/spec/unit/provider/group/pw_spec.rb +5 -2
- data/spec/unit/provider/link_spec.rb +6 -4
- data/spec/unit/provider/log_spec.rb +18 -13
- data/spec/unit/provider/mount/aix_spec.rb +1 -9
- data/spec/unit/provider/mount/mount_spec.rb +22 -0
- data/spec/unit/provider/osx_profile_spec.rb +3 -3
- data/spec/unit/provider/package/apt_spec.rb +431 -411
- data/spec/unit/provider/package/{aix_spec.rb → bff_spec.rb} +7 -5
- data/spec/unit/provider/package/chocolatey_spec.rb +0 -13
- data/spec/unit/provider/package/homebrew_spec.rb +2 -1
- data/spec/unit/provider/package/portage_spec.rb +11 -147
- data/spec/unit/provider/package/powershell_spec.rb +208 -57
- data/spec/unit/provider/package/rubygems_spec.rb +11 -2
- data/spec/unit/provider/package/windows_spec.rb +0 -19
- data/spec/unit/provider/package/yum/python_helper_spec.rb +29 -0
- data/spec/unit/provider/package/yum/yum_cache_spec.rb +86 -4
- data/spec/unit/provider/package/zypper_spec.rb +8 -0
- data/spec/unit/provider/package_spec.rb +47 -20
- data/spec/unit/provider/registry_key_spec.rb +7 -1
- data/spec/unit/provider/remote_directory_spec.rb +1 -1
- data/spec/unit/provider/remote_file_spec.rb +2 -1
- data/spec/unit/provider/service/macosx_spec.rb +4 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +2 -10
- data/spec/unit/provider/service/windows_spec.rb +447 -30
- data/spec/unit/provider/systemd_unit_spec.rb +50 -13
- data/spec/unit/provider/template_spec.rb +2 -4
- data/spec/unit/provider/user/windows_spec.rb +3 -0
- data/spec/unit/provider/{env_spec.rb → windows_env_spec.rb} +102 -12
- data/spec/unit/provider/zypper_repository_spec.rb +4 -2
- data/spec/unit/provider_resolver_spec.rb +23 -38
- data/spec/unit/recipe_spec.rb +4 -4
- data/spec/unit/resource/apt_package_spec.rb +4 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -5
- data/spec/unit/resource/apt_repository_spec.rb +35 -10
- data/spec/unit/resource/apt_update_spec.rb +0 -5
- data/spec/unit/resource/bash_spec.rb +2 -3
- data/spec/unit/resource/batch_spec.rb +1 -4
- data/spec/unit/resource/{timestamped_deploy_spec.rb → build_essential_spec.rb} +10 -11
- data/spec/unit/resource/cab_package_spec.rb +1 -3
- data/{lib/chef/mixin/language_include_attribute.rb → spec/unit/resource/chef_handler_spec.rb} +13 -12
- data/spec/unit/resource/chocolatey_package_spec.rb +1 -3
- data/spec/unit/resource/cron_spec.rb +0 -5
- data/spec/unit/resource/csh_spec.rb +2 -3
- data/spec/unit/resource/directory_spec.rb +1 -6
- data/{lib/chef/resource/deploy_revision.rb → spec/unit/resource/dmg_package_spec.rb} +14 -10
- data/spec/unit/resource/dnf_package_spec.rb +20 -26
- data/spec/unit/resource/file_spec.rb +1 -1
- data/spec/unit/resource/freebsd_package_spec.rb +22 -23
- data/spec/unit/resource/gem_package_spec.rb +3 -5
- data/spec/unit/resource/git_spec.rb +1 -2
- data/spec/unit/resource/group_spec.rb +0 -5
- data/spec/unit/resource/homebrew_cask_spec.rb +35 -0
- data/spec/unit/resource/homebrew_package_spec.rb +4 -0
- data/spec/unit/resource/homebrew_tap_spec.rb +39 -0
- data/spec/unit/resource/hostname_spec.rb +43 -0
- data/spec/unit/resource/http_request_spec.rb +0 -5
- data/spec/unit/resource/ips_package_spec.rb +4 -0
- data/spec/unit/resource/ksh_spec.rb +2 -3
- data/spec/unit/resource/launchd_spec.rb +0 -5
- data/spec/unit/resource/link_spec.rb +1 -6
- data/spec/unit/resource/log_spec.rb +0 -5
- data/spec/unit/resource/macos_user_defaults_spec.rb +45 -0
- data/spec/unit/resource/mdadm_spec.rb +0 -5
- data/spec/unit/resource/mount_spec.rb +1 -6
- data/spec/unit/resource/msu_package_spec.rb +1 -3
- data/spec/unit/resource/ohai_hint_spec.rb +43 -0
- data/spec/unit/resource/ohai_spec.rb +0 -5
- data/spec/unit/resource/openbsd_package_spec.rb +8 -12
- data/spec/unit/resource/openssl_dhparam.rb +51 -0
- data/spec/unit/resource/openssl_rsa_private_key_spec.rb +59 -0
- data/spec/unit/resource/openssl_rsa_public_key_spec.rb +39 -0
- data/spec/unit/resource/osx_profile_spec.rb +0 -5
- data/spec/unit/resource/package_spec.rb +0 -5
- data/spec/unit/resource/perl_spec.rb +2 -3
- data/spec/unit/resource/portage_package_spec.rb +3 -7
- data/spec/unit/resource/powershell_package_spec.rb +11 -4
- data/spec/unit/resource/python_spec.rb +0 -5
- data/spec/unit/resource/reboot_spec.rb +0 -5
- data/spec/unit/resource/registry_key_spec.rb +5 -6
- data/spec/unit/resource/remote_directory_spec.rb +0 -5
- data/spec/unit/resource/remote_file_spec.rb +1 -5
- data/spec/unit/resource/rhsm_errata_level_spec.rb +46 -0
- data/{lib/chef/mixin/language_include_recipe.rb → spec/unit/resource/rhsm_errata_spec.rb} +14 -10
- data/spec/unit/resource/rhsm_register_spec.rb +199 -0
- data/spec/unit/resource/rhsm_repo_spec.rb +59 -0
- data/spec/unit/resource/rhsm_subscription_spec.rb +93 -0
- data/spec/unit/resource/route_spec.rb +1 -6
- data/spec/unit/resource/rpm_package_spec.rb +4 -0
- data/spec/unit/resource/ruby_block_spec.rb +0 -5
- data/spec/unit/resource/ruby_spec.rb +0 -5
- data/spec/unit/resource/scm_spec.rb +0 -15
- data/spec/unit/resource/service_spec.rb +0 -5
- data/spec/unit/resource/subversion_spec.rb +12 -0
- data/spec/unit/resource/sudo_spec.rb +92 -0
- data/spec/unit/resource/swap_file_spec.rb +40 -0
- data/spec/unit/resource/sysctl_spec.rb +56 -0
- data/spec/unit/resource/systemd_unit_spec.rb +5 -7
- data/spec/unit/resource/template_spec.rb +1 -3
- data/spec/unit/resource/user_spec.rb +0 -5
- data/spec/unit/resource/windows_ad_join.rb +45 -0
- data/spec/unit/resource/windows_auto_run_spec.rb +50 -0
- data/spec/unit/resource/{env_spec.rb → windows_env_spec.rb} +19 -21
- data/spec/unit/resource/windows_feature.rb +41 -0
- data/spec/unit/resource/windows_feature_dism.rb +51 -0
- data/spec/unit/resource/windows_feature_powershell.rb +51 -0
- data/spec/unit/resource/windows_font_spec.rb +44 -0
- data/spec/unit/resource/windows_package_spec.rb +2 -2
- data/spec/unit/resource/windows_pagefile_spec.rb +45 -0
- data/spec/unit/resource/windows_printer_port_spec.rb +45 -0
- data/spec/unit/resource/windows_printer_spec.rb +45 -0
- data/spec/unit/resource/windows_service_spec.rb +25 -4
- data/spec/unit/resource/windows_shortcut_spec.rb +39 -0
- data/spec/unit/resource/windows_task_spec.rb +0 -5
- data/spec/unit/resource/yum_repository_spec.rb +4 -0
- data/spec/unit/resource/zypper_repository_spec.rb +4 -0
- data/spec/unit/resource_inspector_spec.rb +60 -0
- data/spec/unit/resource_reporter_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +0 -5
- data/spec/unit/shell/shell_session_spec.rb +0 -1
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/util/windows/logon_session_spec.rb +2 -1
- data/spec/unit/win32/security_spec.rb +44 -1
- data/spec/unit/windows_service_spec.rb +4 -2
- data/tasks/announce.rb +1 -1
- data/tasks/cbgb.rb +84 -0
- data/tasks/dependencies.rb +38 -2
- data/tasks/maintainers.rb +7 -7
- data/tasks/rspec.rb +2 -2
- data/tasks/templates/prerelease.md.erb +2 -11
- data/tasks/templates/release.md.erb +1 -9
- metadata +225 -96
- data/lib/chef/knife/help.rb +0 -101
- data/lib/chef/knife/help_topics.rb +0 -4
- data/lib/chef/knife/index_rebuild.rb +0 -133
- data/lib/chef/mixin/language.rb +0 -48
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +0 -35
- data/lib/chef/provider/deploy.rb +0 -470
- data/lib/chef/provider/deploy/revision.rb +0 -107
- data/lib/chef/provider/deploy/timestamped.rb +0 -34
- data/lib/chef/provider/env/windows.rb +0 -76
- data/lib/chef/provider/erl_call.rb +0 -76
- data/lib/chef/provider/package/yum/yum-dump.py +0 -307
- data/lib/chef/resource/deploy.rb +0 -449
- data/lib/chef/resource/erl_call.rb +0 -90
- data/lib/chef/resource/timestamped_deploy.rb +0 -26
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.i686.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.src.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.x86_64.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.i686.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.src.rpm +0 -0
- data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.x86_64.rpm +0 -0
- data/spec/functional/assets/yumrepo/repodata/313329137b55fd333b2dc66394a6661a2befa6cc535d8460d92a4a78a9c581f0-primary.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/31ac4db5d5ac593728fcc26aef82b7b93c4cc4dbec843786b1845b939b658553-other.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/4ac40fa3c6728c1401318e2e20a997436624e83dcf7a5f952b851ef422637773-filelists.sqlite.bz2 +0 -0
- data/spec/functional/assets/yumrepo/repodata/66391e53f0510b98b3f0b79f40ba1048026d9a1ef20905d9c40ba6f5411f3243-primary.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/8b34697595fcc87928e12d24644dda9462c3857bd932861e28bc77ae1f31be16-filelists.xml.gz +0 -0
- data/spec/functional/assets/yumrepo/repodata/b97cca3fe14bcf06c52be4449b6108f7731239ff221111dcce8aada5467f60dc-other.sqlite.bz2 +0 -0
- data/spec/functional/resource/deploy_revision_spec.rb +0 -881
- data/spec/functional/resource/env_spec.rb +0 -192
- data/spec/unit/knife/index_rebuild_spec.rb +0 -125
- data/spec/unit/knife/knife_help.rb +0 -92
- data/spec/unit/provider/deploy/revision_spec.rb +0 -110
- data/spec/unit/provider/deploy/timestamped_spec.rb +0 -40
- data/spec/unit/provider/deploy_spec.rb +0 -641
- data/spec/unit/provider/env/windows_spec.rb +0 -103
- data/spec/unit/provider/erl_call_spec.rb +0 -77
- data/spec/unit/provider/package/yum_spec.rb +0 -2294
- data/spec/unit/resource/deploy_revision_spec.rb +0 -42
- data/spec/unit/resource/deploy_spec.rb +0 -283
- data/spec/unit/resource/erl_call_spec.rb +0 -81
@@ -1,103 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Sander van Harmelen <svanharmelen@schubergphilis.com>
|
3
|
-
# Copyright:: Copyright 2014-2016, Chef Software, Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require "spec_helper"
|
20
|
-
|
21
|
-
describe Chef::Provider::Env::Windows, :windows_only do
|
22
|
-
let(:node) { Chef::Node.new }
|
23
|
-
let(:events) { Chef::EventDispatch::Dispatcher.new }
|
24
|
-
let(:run_context) { Chef::RunContext.new(node, {}, events) }
|
25
|
-
|
26
|
-
context "when environment variable is not PATH" do
|
27
|
-
let(:new_resource) do
|
28
|
-
new_resource = Chef::Resource::Env.new("CHEF_WINDOWS_ENV_TEST")
|
29
|
-
new_resource.value("foo")
|
30
|
-
new_resource
|
31
|
-
end
|
32
|
-
let(:provider) do
|
33
|
-
provider = Chef::Provider::Env::Windows.new(new_resource, run_context)
|
34
|
-
allow(provider).to receive(:env_obj).and_return(double("null object").as_null_object)
|
35
|
-
provider
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "action_create" do
|
39
|
-
before do
|
40
|
-
ENV.delete("CHEF_WINDOWS_ENV_TEST")
|
41
|
-
provider.key_exists = false
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should update the ruby ENV object when it creates the key" do
|
45
|
-
provider.action_create
|
46
|
-
expect(ENV["CHEF_WINDOWS_ENV_TEST"]).to eql("foo")
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe "action_modify" do
|
51
|
-
before do
|
52
|
-
ENV["CHEF_WINDOWS_ENV_TEST"] = "foo"
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should update the ruby ENV object when it updates the value" do
|
56
|
-
expect(provider).to receive(:requires_modify_or_create?).and_return(true)
|
57
|
-
new_resource.value("foobar")
|
58
|
-
provider.action_modify
|
59
|
-
expect(ENV["CHEF_WINDOWS_ENV_TEST"]).to eql("foobar")
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "action_delete" do
|
63
|
-
before do
|
64
|
-
ENV["CHEF_WINDOWS_ENV_TEST"] = "foo"
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should update the ruby ENV object when it deletes the key" do
|
68
|
-
provider.action_delete
|
69
|
-
expect(ENV["CHEF_WINDOWS_ENV_TEST"]).to eql(nil)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context "when environment is PATH" do
|
76
|
-
describe "for PATH" do
|
77
|
-
let(:system_root) { "%SystemRoot%" }
|
78
|
-
let(:system_root_value) { 'D:\Windows' }
|
79
|
-
let(:new_resource) do
|
80
|
-
new_resource = Chef::Resource::Env.new("PATH")
|
81
|
-
new_resource.value(system_root)
|
82
|
-
new_resource
|
83
|
-
end
|
84
|
-
let(:provider) do
|
85
|
-
provider = Chef::Provider::Env::Windows.new(new_resource, run_context)
|
86
|
-
allow(provider).to receive(:env_obj).and_return(double("null object").as_null_object)
|
87
|
-
provider
|
88
|
-
end
|
89
|
-
|
90
|
-
before do
|
91
|
-
stub_const("ENV", { "PATH" => "" })
|
92
|
-
end
|
93
|
-
|
94
|
-
it "replaces Windows system variables" do
|
95
|
-
expect(provider).to receive(:requires_modify_or_create?).and_return(true)
|
96
|
-
expect(provider).to receive(:expand_path).with(system_root).and_return(system_root_value)
|
97
|
-
provider.action_modify
|
98
|
-
expect(ENV["PATH"]).to eql(system_root_value)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
end
|
103
|
-
end
|
@@ -1,77 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Joe Williams (<joe@joetify.com>)
|
3
|
-
# Copyright:: Copyright 2009-2016, Joe Williams
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require "spec_helper"
|
20
|
-
|
21
|
-
describe Chef::Provider::ErlCall do
|
22
|
-
before(:each) do
|
23
|
-
@node = Chef::Node.new
|
24
|
-
@events = Chef::EventDispatch::Dispatcher.new
|
25
|
-
@run_context = Chef::RunContext.new(@node, {}, @events)
|
26
|
-
|
27
|
-
@new_resource = Chef::Resource::ErlCall.new("test", @node)
|
28
|
-
@new_resource.code("io:format(\"burritos\", []).")
|
29
|
-
@new_resource.node_name("chef@localhost")
|
30
|
-
@new_resource.name("test")
|
31
|
-
|
32
|
-
@provider = Chef::Provider::ErlCall.new(@new_resource, @run_context)
|
33
|
-
|
34
|
-
@status = double("Status", stdout: "{ok, woohoo}", stderr: "")
|
35
|
-
allow(@provider).to receive(:shell_out!).and_return(@status)
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should return a Chef::Provider::ErlCall object" do
|
39
|
-
provider = Chef::Provider::ErlCall.new(@new_resource, @run_context)
|
40
|
-
expect(provider).to be_a_kind_of(Chef::Provider::ErlCall)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should return true" do
|
44
|
-
expect(@provider.load_current_resource).to eql(true)
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "when running a distributed erl call resource" do
|
48
|
-
before do
|
49
|
-
@new_resource.cookie("nomnomnom")
|
50
|
-
@new_resource.distributed(true)
|
51
|
-
@new_resource.name_type("sname")
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should write to stdin of the erl_call command" do
|
55
|
-
expected_cmd = "erl_call -e -s -sname chef@localhost -c nomnomnom"
|
56
|
-
expect(@provider).to receive(:shell_out!).with(expected_cmd, input: @new_resource.code).and_return(@status)
|
57
|
-
|
58
|
-
@provider.action_run
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "when running a local erl call resource" do
|
63
|
-
before do
|
64
|
-
@new_resource.cookie(nil)
|
65
|
-
@new_resource.distributed(false)
|
66
|
-
@new_resource.name_type("name")
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should write to stdin of the erl_call command" do
|
70
|
-
expected_cmd = "erl_call -e -name chef@localhost "
|
71
|
-
expect(@provider).to receive(:shell_out!).with(expected_cmd, input: @new_resource.code).and_return(@status)
|
72
|
-
|
73
|
-
@provider.action_run
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
@@ -1,2294 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Adam Jacob (<adam@chef.io>)
|
3
|
-
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require "spec_helper"
|
20
|
-
require "securerandom"
|
21
|
-
|
22
|
-
describe Chef::Provider::Package::Yum do
|
23
|
-
before(:each) do
|
24
|
-
@node = Chef::Node.new
|
25
|
-
@events = Chef::EventDispatch::Dispatcher.new
|
26
|
-
@run_context = Chef::RunContext.new(@node, {}, @events)
|
27
|
-
@new_resource = Chef::Resource::YumPackage.new("cups")
|
28
|
-
@status = double("Status", :exitstatus => 0)
|
29
|
-
@yum_cache = double(
|
30
|
-
"Chef::Provider::Yum::YumCache",
|
31
|
-
:reload_installed => true,
|
32
|
-
:reset => true,
|
33
|
-
:installed_version => "1.2.4-11.18.el5",
|
34
|
-
:candidate_version => "1.2.4-11.18.el5_2.3",
|
35
|
-
:package_available? => true,
|
36
|
-
:version_available? => true,
|
37
|
-
:allow_multi_install => [ "kernel" ],
|
38
|
-
:package_repository => "base",
|
39
|
-
:disable_extra_repo_control => true
|
40
|
-
)
|
41
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
42
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
43
|
-
allow(::File).to receive(:exist?).with("/usr/bin/yum-deprecated").and_return(false)
|
44
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
45
|
-
@pid = double("PID")
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "when loading the current system state" do
|
49
|
-
it "should create a current resource with the name of the new_resource" do
|
50
|
-
@provider.load_current_resource
|
51
|
-
expect(@provider.current_resource.name).to eq("cups")
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should set the current resources package name to the new resources package name" do
|
55
|
-
@provider.load_current_resource
|
56
|
-
expect(@provider.current_resource.package_name).to eq("cups")
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should set the installed version to nil on the current resource if no installed package" do
|
60
|
-
allow(@yum_cache).to receive(:installed_version).and_return(nil)
|
61
|
-
@provider.load_current_resource
|
62
|
-
expect(@provider.current_resource.version).to be_nil
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should set the installed version if yum has one" do
|
66
|
-
@provider.load_current_resource
|
67
|
-
expect(@provider.current_resource.version).to eq("1.2.4-11.18.el5")
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should set the candidate version if yum info has one" do
|
71
|
-
@provider.load_current_resource
|
72
|
-
expect(@provider.candidate_version).to eql("1.2.4-11.18.el5_2.3")
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should return the current resouce" do
|
76
|
-
expect(@provider.load_current_resource).to eql(@provider.current_resource)
|
77
|
-
end
|
78
|
-
|
79
|
-
describe "when source is provided" do
|
80
|
-
it "should set the candidate version" do
|
81
|
-
@new_resource = Chef::Resource::YumPackage.new("testing.source")
|
82
|
-
@new_resource.source "chef-server-core-12.0.5-1.rpm"
|
83
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
84
|
-
allow(File).to receive(:exist?).with(@new_resource.source).and_return(true)
|
85
|
-
allow(@yum_cache).to receive(:installed_version).and_return(nil)
|
86
|
-
shellout_double = double(:stdout => "chef-server-core 12.0.5-1 i386")
|
87
|
-
allow(@provider).to receive(:shell_out!).and_return(shellout_double)
|
88
|
-
@provider.load_current_resource
|
89
|
-
expect(@provider.candidate_version).to eql("12.0.5-1")
|
90
|
-
expect(@provider.new_resource.arch).to eql("i386")
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
describe "yum_binary accessor" do
|
95
|
-
it "when yum-deprecated exists" do
|
96
|
-
expect(File).to receive(:exist?).with("/usr/bin/yum-deprecated").and_return(true)
|
97
|
-
expect(@yum_cache).to receive(:yum_binary=).with("yum-deprecated")
|
98
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
99
|
-
expect(@provider.send(:yum_binary)).to eql("yum-deprecated")
|
100
|
-
end
|
101
|
-
|
102
|
-
it "when yum-deprecated does not exist" do
|
103
|
-
expect(File).to receive(:exist?).with("/usr/bin/yum-deprecated").and_return(false)
|
104
|
-
expect(@yum_cache).to receive(:yum_binary=).with("yum")
|
105
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
106
|
-
expect(@provider.send(:yum_binary)).to eql("yum")
|
107
|
-
end
|
108
|
-
|
109
|
-
it "when the yum_binary is set on the resource" do
|
110
|
-
@new_resource.yum_binary "/usr/bin/yum-something"
|
111
|
-
expect(File).not_to receive(:exist?)
|
112
|
-
expect(@yum_cache).to receive(:yum_binary=).with("/usr/bin/yum-something")
|
113
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
114
|
-
expect(@provider.send(:yum_binary)).to eql("/usr/bin/yum-something")
|
115
|
-
end
|
116
|
-
|
117
|
-
it "when the new_resource is a vanilla package class and yum-deprecated exists" do
|
118
|
-
@new_resource = Chef::Resource::YumPackage.new("cups")
|
119
|
-
expect(File).to receive(:exist?).with("/usr/bin/yum-deprecated").and_return(true)
|
120
|
-
expect(@yum_cache).to receive(:yum_binary=).with("yum-deprecated")
|
121
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
122
|
-
expect(@provider.send(:yum_binary)).to eql("yum-deprecated")
|
123
|
-
end
|
124
|
-
|
125
|
-
it "when the new_resource is a vanilla package class and yum-deprecated does not exist" do
|
126
|
-
@new_resource = Chef::Resource::YumPackage.new("cups")
|
127
|
-
expect(File).to receive(:exist?).with("/usr/bin/yum-deprecated").and_return(false)
|
128
|
-
expect(@yum_cache).to receive(:yum_binary=).with("yum")
|
129
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
130
|
-
expect(@provider.send(:yum_binary)).to eql("yum")
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
describe "when arch in package_name" do
|
135
|
-
it "should set the arch if no existing package_name is found and new_package_name+new_arch is available" do
|
136
|
-
@new_resource = Chef::Resource::YumPackage.new("testing.noarch")
|
137
|
-
@yum_cache = double(
|
138
|
-
"Chef::Provider::Yum::YumCache"
|
139
|
-
)
|
140
|
-
allow(@yum_cache).to receive(:installed_version) do |package_name, arch|
|
141
|
-
# nothing installed for package_name/new_package_name
|
142
|
-
nil
|
143
|
-
end
|
144
|
-
allow(@yum_cache).to receive(:candidate_version) do |package_name, arch|
|
145
|
-
if package_name == "testing.noarch" || package_name == "testing.more.noarch"
|
146
|
-
nil
|
147
|
-
# candidate for new_package_name
|
148
|
-
elsif package_name == "testing" || package_name == "testing.more"
|
149
|
-
"1.1"
|
150
|
-
end
|
151
|
-
end
|
152
|
-
allow(@yum_cache).to receive(:package_available?).and_return(true)
|
153
|
-
allow(@yum_cache).to receive(:disable_extra_repo_control).and_return(true)
|
154
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
155
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
156
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
157
|
-
@provider.load_current_resource
|
158
|
-
expect(@provider.new_resource.package_name).to eq("testing")
|
159
|
-
expect(@provider.new_resource.arch).to eq("noarch")
|
160
|
-
|
161
|
-
@new_resource = Chef::Resource::YumPackage.new("testing.more.noarch")
|
162
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
163
|
-
@provider.load_current_resource
|
164
|
-
expect(@provider.new_resource.package_name).to eq("testing.more")
|
165
|
-
expect(@provider.new_resource.arch).to eq("noarch")
|
166
|
-
end
|
167
|
-
|
168
|
-
describe "when version constraint in package_name" do
|
169
|
-
it "should set package_version if no existing package_name is found and new_package_name is available" do
|
170
|
-
@new_resource = Chef::Resource::YumPackage.new("cups = 1.2.4-11.18.el5_2.3")
|
171
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
172
|
-
allow(@yum_cache).to receive(:package_available?) { |pkg| pkg == "cups" ? true : false }
|
173
|
-
allow(@yum_cache).to receive(:packages_from_require) do |pkg|
|
174
|
-
[Chef::Provider::Package::Yum::RPMDbPackage.new("cups", "1.2.4-11.18.el5_2.3", "noarch", [], false, true, "base"),
|
175
|
-
Chef::Provider::Package::Yum::RPMDbPackage.new("cups", "1.2.4-11.18.el5_2.2", "noarch", [], false, true, "base")]
|
176
|
-
end
|
177
|
-
expect(Chef::Log).to receive(:debug).exactly(1).times.with(%r{checking yum info})
|
178
|
-
expect(Chef::Log).to receive(:debug).exactly(1).times.with(%r{installed version})
|
179
|
-
expect(Chef::Log).to receive(:debug).exactly(1).times.with(%r{matched 2 packages,})
|
180
|
-
@provider.load_current_resource
|
181
|
-
expect(@provider.new_resource.package_name).to eq("cups")
|
182
|
-
expect(@provider.new_resource.version).to eq("1.2.4-11.18.el5_2.3")
|
183
|
-
expect(@provider.send(:new_version_array)).to eq(["1.2.4-11.18.el5_2.3"])
|
184
|
-
expect(@provider.send(:package_name_array)).to eq(["cups"])
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
it "should not set the arch when an existing package_name is found" do
|
189
|
-
@new_resource = Chef::Resource::YumPackage.new("testing.beta3")
|
190
|
-
@yum_cache = double(
|
191
|
-
"Chef::Provider::Yum::YumCache"
|
192
|
-
)
|
193
|
-
allow(@yum_cache).to receive(:installed_version) do |package_name, arch|
|
194
|
-
# installed for package_name
|
195
|
-
if package_name == "testing.beta3" || package_name == "testing.beta3.more"
|
196
|
-
"1.1"
|
197
|
-
elsif package_name == "testing" || package_name == "testing.beta3"
|
198
|
-
nil
|
199
|
-
end
|
200
|
-
end
|
201
|
-
allow(@yum_cache).to receive(:candidate_version) do |package_name, arch|
|
202
|
-
# no candidate for package_name/new_package_name
|
203
|
-
nil
|
204
|
-
end
|
205
|
-
allow(@yum_cache).to receive(:package_available?).and_return(true)
|
206
|
-
allow(@yum_cache).to receive(:disable_extra_repo_control).and_return(true)
|
207
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
208
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
209
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
210
|
-
# annoying side effect of the fun stub'ing above
|
211
|
-
@provider.load_current_resource
|
212
|
-
expect(@provider.new_resource.package_name).to eq("testing.beta3")
|
213
|
-
expect(@provider.new_resource.arch).to eq(nil)
|
214
|
-
|
215
|
-
@new_resource = Chef::Resource::YumPackage.new("testing.beta3.more")
|
216
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
217
|
-
@provider.load_current_resource
|
218
|
-
expect(@provider.new_resource.package_name).to eq("testing.beta3.more")
|
219
|
-
expect(@provider.new_resource.arch).to eq(nil)
|
220
|
-
end
|
221
|
-
|
222
|
-
it "should not set the arch when no existing package_name or new_package_name+new_arch is found" do
|
223
|
-
@new_resource = Chef::Resource::YumPackage.new("testing.beta3")
|
224
|
-
@yum_cache = double(
|
225
|
-
"Chef::Provider::Yum::YumCache"
|
226
|
-
)
|
227
|
-
allow(@yum_cache).to receive(:installed_version) do |package_name, arch|
|
228
|
-
# nothing installed for package_name/new_package_name
|
229
|
-
nil
|
230
|
-
end
|
231
|
-
allow(@yum_cache).to receive(:candidate_version) do |package_name, arch|
|
232
|
-
# no candidate for package_name/new_package_name
|
233
|
-
nil
|
234
|
-
end
|
235
|
-
allow(@yum_cache).to receive(:package_available?).and_return(true)
|
236
|
-
allow(@yum_cache).to receive(:disable_extra_repo_control).and_return(true)
|
237
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
238
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
239
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
240
|
-
@provider.load_current_resource
|
241
|
-
expect(@provider.new_resource.package_name).to eq("testing.beta3")
|
242
|
-
expect(@provider.new_resource.arch).to eq(nil)
|
243
|
-
|
244
|
-
@new_resource = Chef::Resource::YumPackage.new("testing.beta3.more")
|
245
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
246
|
-
@provider.load_current_resource
|
247
|
-
expect(@provider.new_resource.package_name).to eq("testing.beta3.more")
|
248
|
-
expect(@provider.new_resource.arch).to eq(nil)
|
249
|
-
end
|
250
|
-
|
251
|
-
it "should ensure it doesn't clobber an existing arch if passed" do
|
252
|
-
@new_resource = Chef::Resource::YumPackage.new("testing.i386")
|
253
|
-
@new_resource.arch("x86_64")
|
254
|
-
@yum_cache = double(
|
255
|
-
"Chef::Provider::Yum::YumCache"
|
256
|
-
)
|
257
|
-
allow(@yum_cache).to receive(:installed_version) do |package_name, arch|
|
258
|
-
# nothing installed for package_name/new_package_name
|
259
|
-
nil
|
260
|
-
end
|
261
|
-
allow(@yum_cache).to receive(:candidate_version) do |package_name, arch|
|
262
|
-
if package_name == "testing.noarch"
|
263
|
-
nil
|
264
|
-
# candidate for new_package_name
|
265
|
-
elsif package_name == "testing"
|
266
|
-
"1.1"
|
267
|
-
end
|
268
|
-
end.and_return("something")
|
269
|
-
allow(@yum_cache).to receive(:package_available?).and_return(true)
|
270
|
-
allow(@yum_cache).to receive(:disable_extra_repo_control).and_return(true)
|
271
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
272
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
273
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
274
|
-
@provider.load_current_resource
|
275
|
-
expect(@provider.new_resource.package_name).to eq("testing.i386")
|
276
|
-
expect(@provider.new_resource.arch).to eq("x86_64")
|
277
|
-
end
|
278
|
-
end
|
279
|
-
|
280
|
-
it "should flush the cache if :before is true" do
|
281
|
-
@new_resource.flush_cache({ :after => false, :before => true })
|
282
|
-
expect(@yum_cache).to receive(:reload).once
|
283
|
-
@provider.load_current_resource
|
284
|
-
end
|
285
|
-
|
286
|
-
it "should flush the cache if :before is false" do
|
287
|
-
@new_resource.flush_cache({ :after => false, :before => false })
|
288
|
-
expect(@yum_cache).not_to receive(:reload)
|
289
|
-
@provider.load_current_resource
|
290
|
-
end
|
291
|
-
|
292
|
-
it "should detect --enablerepo or --disablerepo when passed among options, collect them preserving order and notify the yum cache" do
|
293
|
-
@new_resource.options("--stuff --enablerepo=foo --otherthings --disablerepo=a,b,c --enablerepo=bar")
|
294
|
-
expect(@yum_cache).to receive(:enable_extra_repo_control).with("--enablerepo=foo --disablerepo=a,b,c --enablerepo=bar")
|
295
|
-
@provider.load_current_resource
|
296
|
-
end
|
297
|
-
|
298
|
-
it "should let the yum cache know extra repos are disabled if --enablerepo or --disablerepo aren't among options" do
|
299
|
-
@new_resource.options("--stuff --otherthings")
|
300
|
-
expect(@yum_cache).to receive(:disable_extra_repo_control)
|
301
|
-
@provider.load_current_resource
|
302
|
-
end
|
303
|
-
|
304
|
-
it "should let the yum cache know extra repos are disabled if options aren't set" do
|
305
|
-
@new_resource.options(nil)
|
306
|
-
expect(@yum_cache).to receive(:disable_extra_repo_control)
|
307
|
-
@provider.load_current_resource
|
308
|
-
end
|
309
|
-
|
310
|
-
context "when the package name isn't found" do
|
311
|
-
let(:yum_cache) do
|
312
|
-
double(
|
313
|
-
"Chef::Provider::Yum::YumCache",
|
314
|
-
:reload_installed => true,
|
315
|
-
:reset => true,
|
316
|
-
:installed_version => "1.0.1.el5",
|
317
|
-
:candidate_version => "2.0.1.el5",
|
318
|
-
:package_available? => false,
|
319
|
-
:version_available? => true,
|
320
|
-
:disable_extra_repo_control => true
|
321
|
-
)
|
322
|
-
end
|
323
|
-
|
324
|
-
before do
|
325
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(yum_cache)
|
326
|
-
allow(yum_cache).to receive(:yum_binary=).with("yum")
|
327
|
-
@pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "2.0.1.el5", "x86_64", [])
|
328
|
-
expect(yum_cache).to receive(:packages_from_require).and_return([@pkg])
|
329
|
-
end
|
330
|
-
|
331
|
-
it "should search provides then set package_name to match" do
|
332
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
333
|
-
@provider.load_current_resource
|
334
|
-
expect(@new_resource.package_name).to eq("test-package")
|
335
|
-
expect(@new_resource.version).to eq(nil)
|
336
|
-
end
|
337
|
-
|
338
|
-
it "should search provides then set version to match if a requirement was passed in the package name" do
|
339
|
-
@new_resource = Chef::Resource::YumPackage.new("test-package = 2.0.1.el5")
|
340
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
341
|
-
@provider.load_current_resource
|
342
|
-
expect(@new_resource.package_name).to eq("test-package")
|
343
|
-
expect(@new_resource.version).to eq("2.0.1.el5")
|
344
|
-
end
|
345
|
-
|
346
|
-
it "should search provides then set version to match if a requirement was passed in the version" do
|
347
|
-
@new_resource = Chef::Resource::YumPackage.new("test-package")
|
348
|
-
@new_resource.version("= 2.0.1.el5")
|
349
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
350
|
-
@provider.load_current_resource
|
351
|
-
expect(@new_resource.package_name).to eq("test-package")
|
352
|
-
expect(@new_resource.version).to eq("2.0.1.el5")
|
353
|
-
end
|
354
|
-
|
355
|
-
it "should search provides and not set the version to match if a specific version was requested" do
|
356
|
-
@new_resource = Chef::Resource::YumPackage.new("test-package")
|
357
|
-
@new_resource.version("3.0.1.el5")
|
358
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
359
|
-
@provider.load_current_resource
|
360
|
-
expect(@new_resource.package_name).to eq("test-package")
|
361
|
-
expect(@new_resource.version).to eq("3.0.1.el5")
|
362
|
-
end
|
363
|
-
|
364
|
-
it "should search provides then set versions to match if requirements were passed in the package name as an array" do
|
365
|
-
@new_resource = Chef::Resource::YumPackage.new(["test-package = 2.0.1.el5"])
|
366
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
367
|
-
@provider.load_current_resource
|
368
|
-
expect(@new_resource.package_name).to eq(["test-package"])
|
369
|
-
expect(@new_resource.version).to eq(["2.0.1.el5"])
|
370
|
-
end
|
371
|
-
|
372
|
-
it "should search provides and not set the versions to match if specific versions were requested in an array" do
|
373
|
-
@new_resource = Chef::Resource::YumPackage.new(["test-package"])
|
374
|
-
@new_resource.version(["3.0.1.el5"])
|
375
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
376
|
-
@provider.load_current_resource
|
377
|
-
expect(@new_resource.package_name).to eq(["test-package"])
|
378
|
-
expect(@new_resource.version).to eq(["3.0.1.el5"])
|
379
|
-
end
|
380
|
-
|
381
|
-
end
|
382
|
-
|
383
|
-
it "should not return an error if no version number is specified in the resource" do
|
384
|
-
@new_resource = Chef::Resource::YumPackage.new("test-package")
|
385
|
-
@yum_cache = double(
|
386
|
-
"Chef::Provider::Yum::YumCache",
|
387
|
-
:reload_installed => true,
|
388
|
-
:reset => true,
|
389
|
-
:installed_version => "1.0.1.el5",
|
390
|
-
:candidate_version => "2.0.1.el5",
|
391
|
-
:package_available? => false,
|
392
|
-
:version_available? => true,
|
393
|
-
:disable_extra_repo_control => true
|
394
|
-
)
|
395
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
396
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
397
|
-
pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "2.0.1.el5", "x86_64", [])
|
398
|
-
expect(@yum_cache).to receive(:packages_from_require).and_return([pkg])
|
399
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
400
|
-
@provider.load_current_resource
|
401
|
-
expect(@new_resource.package_name).to eq("test-package")
|
402
|
-
expect(@new_resource.version).to eq(nil)
|
403
|
-
end
|
404
|
-
|
405
|
-
it "should give precedence to the version attribute when both a requirement in the resource name and a version attribute are specified" do
|
406
|
-
@new_resource = Chef::Resource::YumPackage.new("test-package")
|
407
|
-
@yum_cache = double(
|
408
|
-
"Chef::Provider::Yum::YumCache",
|
409
|
-
:reload_installed => true,
|
410
|
-
:reset => true,
|
411
|
-
:installed_version => "1.2.4-11.18.el5",
|
412
|
-
:candidate_version => "1.2.4-11.18.el5",
|
413
|
-
:package_available? => false,
|
414
|
-
:version_available? => true,
|
415
|
-
:disable_extra_repo_control => true
|
416
|
-
)
|
417
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
418
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
419
|
-
pkg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "2.0.1.el5", "x86_64", [])
|
420
|
-
expect(@yum_cache).to receive(:packages_from_require).and_return([pkg])
|
421
|
-
@new_resource = Chef::Resource::YumPackage.new("test-package = 2.0.1.el5")
|
422
|
-
@new_resource.version("3.0.1.el5")
|
423
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
424
|
-
@provider.load_current_resource
|
425
|
-
expect(@new_resource.package_name).to eq("test-package")
|
426
|
-
expect(@new_resource.version).to eq("3.0.1.el5")
|
427
|
-
end
|
428
|
-
|
429
|
-
it "should correctly detect the installed states of an array of package names and version numbers" do
|
430
|
-
@yum_cache = double(
|
431
|
-
"Chef::Provider::Yum::YumCache",
|
432
|
-
:reload_installed => true,
|
433
|
-
:reset => true,
|
434
|
-
:installed_version => "1.0.1.el5",
|
435
|
-
:candidate_version => "2.0.1.el5",
|
436
|
-
:package_available? => false,
|
437
|
-
:version_available? => true,
|
438
|
-
:disable_extra_repo_control => true
|
439
|
-
)
|
440
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
441
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
442
|
-
|
443
|
-
expect(@yum_cache).to receive(:packages_from_require).exactly(4).times.and_return([])
|
444
|
-
expect(@yum_cache).to receive(:reload_provides).twice
|
445
|
-
|
446
|
-
@new_resource = Chef::Resource::YumPackage.new(["test-package", "test-package2"])
|
447
|
-
@new_resource.version(["2.0.1.el5", "3.0.1.el5"])
|
448
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
449
|
-
@provider.load_current_resource
|
450
|
-
expect(@new_resource.package_name).to eq(["test-package", "test-package2"])
|
451
|
-
expect(@new_resource.version).to eq(["2.0.1.el5", "3.0.1.el5"])
|
452
|
-
end
|
453
|
-
|
454
|
-
it "should search provides if no package is available - if no match in installed provides then load the complete set" do
|
455
|
-
@yum_cache = double(
|
456
|
-
"Chef::Provider::Yum::YumCache",
|
457
|
-
:reload_installed => true,
|
458
|
-
:reset => true,
|
459
|
-
:installed_version => "1.2.4-11.18.el5",
|
460
|
-
:candidate_version => "1.2.4-11.18.el5",
|
461
|
-
:package_available? => false,
|
462
|
-
:version_available? => true,
|
463
|
-
:disable_extra_repo_control => true
|
464
|
-
)
|
465
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
466
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
467
|
-
expect(@yum_cache).to receive(:packages_from_require).twice.and_return([])
|
468
|
-
expect(@yum_cache).to receive(:reload_provides)
|
469
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
470
|
-
@provider.load_current_resource
|
471
|
-
expect(@new_resource.version).to eq(nil)
|
472
|
-
end
|
473
|
-
|
474
|
-
it "should search provides if no package is available and not load the complete set if action is :remove or :purge" do
|
475
|
-
@yum_cache = double(
|
476
|
-
"Chef::Provider::Yum::YumCache",
|
477
|
-
:reload_installed => true,
|
478
|
-
:reset => true,
|
479
|
-
:installed_version => "1.2.4-11.18.el5",
|
480
|
-
:candidate_version => "1.2.4-11.18.el5",
|
481
|
-
:package_available? => false,
|
482
|
-
:version_available? => true,
|
483
|
-
:disable_extra_repo_control => true
|
484
|
-
)
|
485
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
486
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
487
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
488
|
-
expect(@yum_cache).to receive(:packages_from_require).once.and_return([])
|
489
|
-
expect(@yum_cache).not_to receive(:reload_provides)
|
490
|
-
@new_resource.action(:remove)
|
491
|
-
@provider.load_current_resource
|
492
|
-
expect(@yum_cache).to receive(:packages_from_require).once.and_return([])
|
493
|
-
expect(@yum_cache).not_to receive(:reload_provides)
|
494
|
-
@new_resource.action(:purge)
|
495
|
-
@provider.load_current_resource
|
496
|
-
end
|
497
|
-
|
498
|
-
it "should search provides if no package is available - if no match in provides leave the name intact" do
|
499
|
-
@yum_cache = double(
|
500
|
-
"Chef::Provider::Yum::YumCache",
|
501
|
-
:reload_provides => true,
|
502
|
-
:reload_installed => true,
|
503
|
-
:reset => true,
|
504
|
-
:installed_version => "1.2.4-11.18.el5",
|
505
|
-
:candidate_version => "1.2.4-11.18.el5",
|
506
|
-
:package_available? => false,
|
507
|
-
:version_available? => true,
|
508
|
-
:disable_extra_repo_control => true
|
509
|
-
)
|
510
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
511
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
512
|
-
expect(@yum_cache).to receive(:packages_from_require).twice.and_return([])
|
513
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
514
|
-
@provider.load_current_resource
|
515
|
-
expect(@new_resource.package_name).to eq("cups")
|
516
|
-
end
|
517
|
-
end
|
518
|
-
|
519
|
-
describe "when installing a package" do
|
520
|
-
it "should run yum install with the package name and version" do
|
521
|
-
@provider.load_current_resource
|
522
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
523
|
-
expect(@provider).to receive(:yum_command).with(
|
524
|
-
"-d0 -e0 -y install cups-1.2.4-11.19.el5"
|
525
|
-
)
|
526
|
-
@provider.install_package("cups", "1.2.4-11.19.el5")
|
527
|
-
end
|
528
|
-
|
529
|
-
it "should run yum localinstall if given a path to an rpm" do
|
530
|
-
@new_resource.source("/tmp/emacs-21.4-20.el5.i386.rpm")
|
531
|
-
expect(@provider).to receive(:yum_command).with(
|
532
|
-
"-d0 -e0 -y localinstall /tmp/emacs-21.4-20.el5.i386.rpm"
|
533
|
-
)
|
534
|
-
@provider.install_package("emacs", "21.4-20.el5")
|
535
|
-
end
|
536
|
-
|
537
|
-
it "should run yum localinstall if given a path to an rpm as the package" do
|
538
|
-
@new_resource = Chef::Resource::YumPackage.new("/tmp/emacs-21.4-20.el5.i386.rpm")
|
539
|
-
allow(::File).to receive(:exist?).with("/tmp/emacs-21.4-20.el5.i386.rpm").and_return(true)
|
540
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
541
|
-
expect(@new_resource.source).to eq("/tmp/emacs-21.4-20.el5.i386.rpm")
|
542
|
-
expect(@provider).to receive(:yum_command).with(
|
543
|
-
"-d0 -e0 -y localinstall /tmp/emacs-21.4-20.el5.i386.rpm"
|
544
|
-
)
|
545
|
-
@provider.install_package("/tmp/emacs-21.4-20.el5.i386.rpm", "21.4-20.el5")
|
546
|
-
end
|
547
|
-
|
548
|
-
it "should run yum install with the package name, version and arch" do
|
549
|
-
@new_resource.arch("i386")
|
550
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
551
|
-
@provider.load_current_resource
|
552
|
-
expect(@provider).to receive(:yum_command).with(
|
553
|
-
"-d0 -e0 -y install cups-1.2.4-11.19.el5.i386"
|
554
|
-
)
|
555
|
-
@provider.install_package("cups", "1.2.4-11.19.el5")
|
556
|
-
end
|
557
|
-
|
558
|
-
it "installs the package with the options given in the resource" do
|
559
|
-
@provider.load_current_resource
|
560
|
-
allow(@provider).to receive(:candidate_version).and_return("11")
|
561
|
-
@new_resource.options("--disablerepo epmd")
|
562
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
563
|
-
expect(@provider).to receive(:yum_command).with(
|
564
|
-
"-d0 -e0 -y --disablerepo epmd install cups-11"
|
565
|
-
)
|
566
|
-
@provider.install_package(@new_resource.name, @provider.candidate_version)
|
567
|
-
end
|
568
|
-
|
569
|
-
it "should raise an exception if the package is not available" do
|
570
|
-
@yum_cache = double(
|
571
|
-
"Chef::Provider::Yum::YumCache",
|
572
|
-
:reload_from_cache => true,
|
573
|
-
:reset => true,
|
574
|
-
:installed_version => "1.2.4-11.18.el5",
|
575
|
-
:candidate_version => "1.2.4-11.18.el5_2.3",
|
576
|
-
:package_available? => true,
|
577
|
-
:version_available? => nil,
|
578
|
-
:disable_extra_repo_control => true
|
579
|
-
)
|
580
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
581
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
582
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
583
|
-
expect { @provider.install_package("lolcats", "0.99") }.to raise_error(Chef::Exceptions::Package, %r{Version .* not found})
|
584
|
-
end
|
585
|
-
|
586
|
-
it "should raise an exception if candidate version is older than the installed version and allow_downgrade is false" do
|
587
|
-
@new_resource.allow_downgrade(false)
|
588
|
-
@yum_cache = double(
|
589
|
-
"Chef::Provider::Yum::YumCache",
|
590
|
-
:reload_installed => true,
|
591
|
-
:reset => true,
|
592
|
-
:installed_version => "1.2.4-11.18.el5",
|
593
|
-
:candidate_version => "1.2.4-11.15.el5",
|
594
|
-
:package_available? => true,
|
595
|
-
:version_available? => true,
|
596
|
-
:allow_multi_install => [ "kernel" ],
|
597
|
-
:disable_extra_repo_control => true
|
598
|
-
)
|
599
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
600
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
601
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
602
|
-
@provider.load_current_resource
|
603
|
-
expect { @provider.install_package("cups", "1.2.4-11.15.el5") }.to raise_error(Chef::Exceptions::Package, %r{is newer than candidate package})
|
604
|
-
end
|
605
|
-
|
606
|
-
it "should not raise an exception if candidate version is older than the installed version and the package is list in yum's installonlypkg option" do
|
607
|
-
@yum_cache = double(
|
608
|
-
"Chef::Provider::Yum::YumCache",
|
609
|
-
:reload_installed => true,
|
610
|
-
:reset => true,
|
611
|
-
:installed_version => "1.2.4-11.18.el5",
|
612
|
-
:candidate_version => "1.2.4-11.15.el5",
|
613
|
-
:package_available? => true,
|
614
|
-
:version_available? => true,
|
615
|
-
:allow_multi_install => [ "cups" ],
|
616
|
-
:package_repository => "base",
|
617
|
-
:disable_extra_repo_control => true
|
618
|
-
)
|
619
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
620
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
621
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
622
|
-
@provider.load_current_resource
|
623
|
-
expect(@provider).to receive(:yum_command).with(
|
624
|
-
"-d0 -e0 -y install cups-1.2.4-11.15.el5"
|
625
|
-
)
|
626
|
-
@provider.install_package("cups", "1.2.4-11.15.el5")
|
627
|
-
end
|
628
|
-
|
629
|
-
it "should run yum downgrade if candidate version is older than the installed version and allow_downgrade is true" do
|
630
|
-
@new_resource.allow_downgrade(true)
|
631
|
-
@yum_cache = double(
|
632
|
-
"Chef::Provider::Yum::YumCache",
|
633
|
-
:reload_installed => true,
|
634
|
-
:reset => true,
|
635
|
-
:installed_version => "1.2.4-11.18.el5",
|
636
|
-
:candidate_version => "1.2.4-11.15.el5",
|
637
|
-
:package_available? => true,
|
638
|
-
:version_available? => true,
|
639
|
-
:allow_multi_install => [],
|
640
|
-
:package_repository => "base",
|
641
|
-
:disable_extra_repo_control => true
|
642
|
-
)
|
643
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
644
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
645
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
646
|
-
@provider.load_current_resource
|
647
|
-
expect(@provider).to receive(:yum_command).with(
|
648
|
-
"-d0 -e0 -y downgrade cups-1.2.4-11.15.el5"
|
649
|
-
)
|
650
|
-
@provider.install_package("cups", "1.2.4-11.15.el5")
|
651
|
-
end
|
652
|
-
|
653
|
-
it "should run yum install then flush the cache if :after is true" do
|
654
|
-
@new_resource.flush_cache({ :after => true, :before => false })
|
655
|
-
@provider.load_current_resource
|
656
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
657
|
-
expect(@provider).to receive(:yum_command).with(
|
658
|
-
"-d0 -e0 -y install cups-1.2.4-11.15.el5"
|
659
|
-
)
|
660
|
-
expect(@yum_cache).to receive(:reload).once
|
661
|
-
@provider.install_package("cups", "1.2.4-11.15.el5")
|
662
|
-
end
|
663
|
-
|
664
|
-
it "should run yum install then not flush the cache if :after is false" do
|
665
|
-
@new_resource.flush_cache({ :after => false, :before => false })
|
666
|
-
@provider.load_current_resource
|
667
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
668
|
-
expect(@provider).to receive(:yum_command).with(
|
669
|
-
"-d0 -e0 -y install cups-1.2.4-11.15.el5"
|
670
|
-
)
|
671
|
-
expect(@yum_cache).not_to receive(:reload)
|
672
|
-
@provider.install_package("cups", "1.2.4-11.15.el5")
|
673
|
-
end
|
674
|
-
end
|
675
|
-
|
676
|
-
describe "when upgrading a package" do
|
677
|
-
it "should run yum install if the package is installed and a version is given" do
|
678
|
-
@provider.load_current_resource
|
679
|
-
allow(@provider).to receive(:candidate_version).and_return("11")
|
680
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
681
|
-
expect(@provider).to receive(:yum_command).with(
|
682
|
-
"-d0 -e0 -y install cups-11"
|
683
|
-
)
|
684
|
-
@provider.upgrade_package(@new_resource.name, @provider.candidate_version)
|
685
|
-
end
|
686
|
-
|
687
|
-
it "should run yum install if the package is not installed" do
|
688
|
-
@provider.load_current_resource
|
689
|
-
@current_resource = Chef::Resource::YumPackage.new("cups")
|
690
|
-
allow(@provider).to receive(:candidate_version).and_return("11")
|
691
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
692
|
-
expect(@provider).to receive(:yum_command).with(
|
693
|
-
"-d0 -e0 -y install cups-11"
|
694
|
-
)
|
695
|
-
@provider.upgrade_package(@new_resource.name, @provider.candidate_version)
|
696
|
-
end
|
697
|
-
|
698
|
-
it "should raise an exception if candidate version is older than the installed version" do
|
699
|
-
@yum_cache = double(
|
700
|
-
"Chef::Provider::Yum::YumCache",
|
701
|
-
:reload_installed => true,
|
702
|
-
:reset => true,
|
703
|
-
:installed_version => "1.2.4-11.18.el5",
|
704
|
-
:candidate_version => "1.2.4-11.15.el5",
|
705
|
-
:package_available? => true,
|
706
|
-
:version_available? => true,
|
707
|
-
:allow_multi_install => [ "kernel" ],
|
708
|
-
:disable_extra_repo_control => true
|
709
|
-
)
|
710
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
711
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
712
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
713
|
-
@provider.load_current_resource
|
714
|
-
expect { @provider.upgrade_package("cups", "1.2.4-11.15.el5") }.to raise_error(Chef::Exceptions::Package, %r{is newer than candidate package})
|
715
|
-
end
|
716
|
-
|
717
|
-
# Test our little workaround, some crossover into Chef::Provider::Package territory
|
718
|
-
it "should call action_upgrade in the parent if the current resource version is nil" do
|
719
|
-
allow(@yum_cache).to receive(:installed_version).and_return(nil)
|
720
|
-
@current_resource = Chef::Resource::YumPackage.new("cups")
|
721
|
-
allow(@provider).to receive(:candidate_version).and_return("11")
|
722
|
-
expect(@provider).to receive(:upgrade_package).with(["cups"], ["11"])
|
723
|
-
@provider.run_action(:upgrade)
|
724
|
-
end
|
725
|
-
|
726
|
-
it "should call action_upgrade in the parent if the candidate version is nil" do
|
727
|
-
@provider.load_current_resource
|
728
|
-
@current_resource = Chef::Resource::YumPackage.new("cups")
|
729
|
-
allow(@provider).to receive(:candidate_version).and_return(nil)
|
730
|
-
expect(@provider).not_to receive(:upgrade_package)
|
731
|
-
@provider.run_action(:upgrade)
|
732
|
-
end
|
733
|
-
|
734
|
-
it "should call action_upgrade in the parent if the candidate is newer" do
|
735
|
-
@provider.load_current_resource
|
736
|
-
@current_resource = Chef::Resource::YumPackage.new("cups")
|
737
|
-
allow(@provider).to receive(:candidate_version).and_return("11")
|
738
|
-
expect(@provider).to receive(:upgrade_package).with(["cups"], ["11"])
|
739
|
-
@provider.run_action(:upgrade)
|
740
|
-
end
|
741
|
-
|
742
|
-
it "should not call action_upgrade in the parent if the candidate is older" do
|
743
|
-
allow(@yum_cache).to receive(:installed_version).and_return("12")
|
744
|
-
@provider.load_current_resource
|
745
|
-
@current_resource = Chef::Resource::YumPackage.new("cups")
|
746
|
-
allow(@provider).to receive(:candidate_version).and_return("11")
|
747
|
-
expect(@provider).not_to receive(:upgrade_package)
|
748
|
-
@provider.run_action(:upgrade)
|
749
|
-
end
|
750
|
-
end
|
751
|
-
|
752
|
-
describe "when removing a package" do
|
753
|
-
it "should run yum remove with the package name" do
|
754
|
-
expect(@provider).to receive(:yum_command).with(
|
755
|
-
"-d0 -e0 -y remove emacs-1.0"
|
756
|
-
)
|
757
|
-
@provider.remove_package("emacs", "1.0")
|
758
|
-
end
|
759
|
-
|
760
|
-
it "should run yum remove with the package name and arch" do
|
761
|
-
@new_resource.arch("x86_64")
|
762
|
-
expect(@provider).to receive(:yum_command).with(
|
763
|
-
"-d0 -e0 -y remove emacs-1.0.x86_64"
|
764
|
-
)
|
765
|
-
@provider.remove_package("emacs", "1.0")
|
766
|
-
end
|
767
|
-
end
|
768
|
-
|
769
|
-
describe "when purging a package" do
|
770
|
-
it "should run yum remove with the package name" do
|
771
|
-
expect(@provider).to receive(:yum_command).with(
|
772
|
-
"-d0 -e0 -y remove emacs-1.0"
|
773
|
-
)
|
774
|
-
@provider.purge_package("emacs", "1.0")
|
775
|
-
end
|
776
|
-
end
|
777
|
-
|
778
|
-
describe "when locking a package" do
|
779
|
-
it "should run yum versionlock add with the package name" do
|
780
|
-
expect(@provider).to receive(:yum_command).with(
|
781
|
-
"-d0 -e0 -y versionlock add emacs"
|
782
|
-
)
|
783
|
-
@provider.lock_package("emacs", nil)
|
784
|
-
end
|
785
|
-
end
|
786
|
-
|
787
|
-
describe "when unlocking a package" do
|
788
|
-
it "should run yum versionlock delete with the package name" do
|
789
|
-
expect(@provider).to receive(:yum_command).with(
|
790
|
-
"-d0 -e0 -y versionlock delete emacs"
|
791
|
-
)
|
792
|
-
@provider.unlock_package("emacs", nil)
|
793
|
-
end
|
794
|
-
end
|
795
|
-
|
796
|
-
describe "when running yum" do
|
797
|
-
it "should run yum once if it exits with a return code of 0" do
|
798
|
-
@status = double("Status", :exitstatus => 0, :stdout => "", :stderr => "")
|
799
|
-
allow(@provider).to receive(:shell_out).and_return(@status)
|
800
|
-
expect(@provider).to receive(:shell_out).once.with(
|
801
|
-
"yum -d0 -e0 -y install emacs-1.0",
|
802
|
-
{ :timeout => Chef::Config[:yum_timeout] }
|
803
|
-
)
|
804
|
-
@provider.send(:yum_command, "-d0 -e0 -y install emacs-1.0")
|
805
|
-
end
|
806
|
-
|
807
|
-
it "should run yum once if it exits with a return code > 0 and no scriptlet failures" do
|
808
|
-
@status = double("Status", :exitstatus => 2, :stdout => "failure failure", :stderr => "problem problem")
|
809
|
-
allow(@provider).to receive(:shell_out).and_return(@status)
|
810
|
-
expect(@provider).to receive(:shell_out).once.with(
|
811
|
-
"yum -d0 -e0 -y install emacs-1.0",
|
812
|
-
{ :timeout => Chef::Config[:yum_timeout] }
|
813
|
-
)
|
814
|
-
expect { @provider.send(:yum_command, "-d0 -e0 -y install emacs-1.0") }.to raise_error(Chef::Exceptions::Exec)
|
815
|
-
end
|
816
|
-
|
817
|
-
it "should run yum once if it exits with a return code of 1 and %pre scriptlet failures" do
|
818
|
-
@status = double("Status", :exitstatus => 1, :stdout => "error: %pre(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2",
|
819
|
-
:stderr => "")
|
820
|
-
allow(@provider).to receive(:shell_out).and_return(@status)
|
821
|
-
expect(@provider).to receive(:shell_out).once.with(
|
822
|
-
"yum -d0 -e0 -y install emacs-1.0",
|
823
|
-
{ :timeout => Chef::Config[:yum_timeout] }
|
824
|
-
)
|
825
|
-
# will still raise an exception, can't stub out the subsequent call
|
826
|
-
expect { @provider.send(:yum_command, "-d0 -e0 -y install emacs-1.0") }.to raise_error(Chef::Exceptions::Exec)
|
827
|
-
end
|
828
|
-
|
829
|
-
it "should run yum twice if it exits with a return code of 1 and %post scriptlet failures" do
|
830
|
-
@status = double("Status", :exitstatus => 1, :stdout => "error: %post(demo-1-1.el5.centos.x86_64) scriptlet failed, exit status 2",
|
831
|
-
:stderr => "")
|
832
|
-
allow(@provider).to receive(:shell_out).and_return(@status)
|
833
|
-
expect(@provider).to receive(:shell_out).twice.with(
|
834
|
-
"yum -d0 -e0 -y install emacs-1.0",
|
835
|
-
{ :timeout => Chef::Config[:yum_timeout] }
|
836
|
-
)
|
837
|
-
# will still raise an exception, can't stub out the subsequent call
|
838
|
-
expect { @provider.send(:yum_command, "-d0 -e0 -y install emacs-1.0") }.to raise_error(Chef::Exceptions::Exec)
|
839
|
-
end
|
840
|
-
|
841
|
-
it "should pass the yum_binary to the command if its specified" do
|
842
|
-
@new_resource.yum_binary "yum-deprecated"
|
843
|
-
expect(@yum_cache).to receive(:yum_binary=).with("yum-deprecated")
|
844
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
845
|
-
@status = double("Status", :exitstatus => 0, :stdout => "", :stderr => "")
|
846
|
-
allow(@provider).to receive(:shell_out).and_return(@status)
|
847
|
-
expect(@provider).to receive(:shell_out).once.with(
|
848
|
-
"yum-deprecated -d0 -e0 -y install emacs-1.0",
|
849
|
-
{ :timeout => Chef::Config[:yum_timeout] }
|
850
|
-
)
|
851
|
-
@provider.send(:yum_command, "-d0 -e0 -y install emacs-1.0")
|
852
|
-
end
|
853
|
-
end
|
854
|
-
end
|
855
|
-
|
856
|
-
describe Chef::Provider::Package::Yum::RPMUtils do
|
857
|
-
describe "version_parse" do
|
858
|
-
before do
|
859
|
-
@rpmutils = Chef::Provider::Package::Yum::RPMUtils
|
860
|
-
end
|
861
|
-
|
862
|
-
it "parses known good epoch strings" do
|
863
|
-
[
|
864
|
-
[ "0:3.3", [ 0, "3.3", nil ] ],
|
865
|
-
[ "9:1.7.3", [ 9, "1.7.3", nil ] ],
|
866
|
-
[ "15:20020927", [ 15, "20020927", nil ] ],
|
867
|
-
].each do |x, y|
|
868
|
-
expect(@rpmutils.version_parse(x)).to eq(y)
|
869
|
-
end
|
870
|
-
end
|
871
|
-
|
872
|
-
it "parses strange epoch strings" do
|
873
|
-
[
|
874
|
-
[ ":3.3", [ 0, "3.3", nil ] ],
|
875
|
-
[ "-1:1.7.3", [ nil, nil, "1:1.7.3" ] ],
|
876
|
-
[ "-:20020927", [ nil, nil, ":20020927" ] ],
|
877
|
-
].each do |x, y|
|
878
|
-
expect(@rpmutils.version_parse(x)).to eq(y)
|
879
|
-
end
|
880
|
-
end
|
881
|
-
|
882
|
-
it "parses known good version strings" do
|
883
|
-
[
|
884
|
-
[ "3.3", [ nil, "3.3", nil ] ],
|
885
|
-
[ "1.7.3", [ nil, "1.7.3", nil ] ],
|
886
|
-
[ "20020927", [ nil, "20020927", nil ] ],
|
887
|
-
].each do |x, y|
|
888
|
-
expect(@rpmutils.version_parse(x)).to eq(y)
|
889
|
-
end
|
890
|
-
end
|
891
|
-
|
892
|
-
it "parses strange version strings" do
|
893
|
-
[
|
894
|
-
[ "3..3", [ nil, "3..3", nil ] ],
|
895
|
-
[ "0001.7.3", [ nil, "0001.7.3", nil ] ],
|
896
|
-
[ "20020927,3", [ nil, "20020927,3", nil ] ],
|
897
|
-
].each do |x, y|
|
898
|
-
expect(@rpmutils.version_parse(x)).to eq(y)
|
899
|
-
end
|
900
|
-
end
|
901
|
-
|
902
|
-
it "parses known good version release strings" do
|
903
|
-
[
|
904
|
-
[ "3.3-0.pre3.1.60.el5_5.1", [ nil, "3.3", "0.pre3.1.60.el5_5.1" ] ],
|
905
|
-
[ "1.7.3-1jpp.2.el5", [ nil, "1.7.3", "1jpp.2.el5" ] ],
|
906
|
-
[ "20020927-46.el5", [ nil, "20020927", "46.el5" ] ],
|
907
|
-
].each do |x, y|
|
908
|
-
expect(@rpmutils.version_parse(x)).to eq(y)
|
909
|
-
end
|
910
|
-
end
|
911
|
-
|
912
|
-
it "parses strange version release strings" do
|
913
|
-
[
|
914
|
-
[ "3.3-", [ nil, "3.3", nil ] ],
|
915
|
-
[ "-1jpp.2.el5", [ nil, nil, "1jpp.2.el5" ] ],
|
916
|
-
[ "-0020020927-46.el5", [ nil, "-0020020927", "46.el5" ] ],
|
917
|
-
].each do |x, y|
|
918
|
-
expect(@rpmutils.version_parse(x)).to eq(y)
|
919
|
-
end
|
920
|
-
end
|
921
|
-
end
|
922
|
-
|
923
|
-
describe "rpmvercmp" do
|
924
|
-
before do
|
925
|
-
@rpmutils = Chef::Provider::Package::Yum::RPMUtils
|
926
|
-
end
|
927
|
-
|
928
|
-
it "should validate version compare logic for standard examples" do
|
929
|
-
[
|
930
|
-
# numeric
|
931
|
-
[ "0.0.2", "0.0.1", 1 ],
|
932
|
-
[ "0.2.0", "0.1.0", 1 ],
|
933
|
-
[ "2.0.0", "1.0.0", 1 ],
|
934
|
-
[ "0.0.1", "0.0.1", 0 ],
|
935
|
-
[ "0.0.1", "0.0.2", -1 ],
|
936
|
-
[ "0.1.0", "0.2.0", -1 ],
|
937
|
-
[ "1.0.0", "2.0.0", -1 ],
|
938
|
-
# alpha
|
939
|
-
[ "bb", "aa", 1 ],
|
940
|
-
[ "ab", "aa", 1 ],
|
941
|
-
[ "aa", "aa", 0 ],
|
942
|
-
[ "aa", "bb", -1 ],
|
943
|
-
[ "aa", "ab", -1 ],
|
944
|
-
[ "BB", "AA", 1 ],
|
945
|
-
[ "AA", "AA", 0 ],
|
946
|
-
[ "AA", "BB", -1 ],
|
947
|
-
[ "aa", "AA", 1 ],
|
948
|
-
[ "AA", "aa", -1 ],
|
949
|
-
# alphanumeric
|
950
|
-
[ "0.0.1b", "0.0.1a", 1 ],
|
951
|
-
[ "0.1b.0", "0.1a.0", 1 ],
|
952
|
-
[ "1b.0.0", "1a.0.0", 1 ],
|
953
|
-
[ "0.0.1a", "0.0.1a", 0 ],
|
954
|
-
[ "0.0.1a", "0.0.1b", -1 ],
|
955
|
-
[ "0.1a.0", "0.1b.0", -1 ],
|
956
|
-
[ "1a.0.0", "1b.0.0", -1 ],
|
957
|
-
# alphanumeric against alphanumeric
|
958
|
-
[ "0.0.1", "0.0.a", 1 ],
|
959
|
-
[ "0.1.0", "0.a.0", 1 ],
|
960
|
-
[ "1.0.0", "a.0.0", 1 ],
|
961
|
-
[ "0.0.a", "0.0.a", 0 ],
|
962
|
-
[ "0.0.a", "0.0.1", -1 ],
|
963
|
-
[ "0.a.0", "0.1.0", -1 ],
|
964
|
-
[ "a.0.0", "1.0.0", -1 ],
|
965
|
-
# alphanumeric against numeric
|
966
|
-
[ "0.0.2", "0.0.1a", 1 ],
|
967
|
-
[ "0.0.2a", "0.0.1", 1 ],
|
968
|
-
[ "0.0.1", "0.0.2a", -1 ],
|
969
|
-
[ "0.0.1a", "0.0.2", -1 ],
|
970
|
-
# length
|
971
|
-
[ "0.0.1aa", "0.0.1a", 1 ],
|
972
|
-
[ "0.0.1aa", "0.0.1aa", 0 ],
|
973
|
-
[ "0.0.1a", "0.0.1aa", -1 ],
|
974
|
-
].each do |x, y, result|
|
975
|
-
expect(@rpmutils.rpmvercmp(x, y)).to eq(result)
|
976
|
-
end
|
977
|
-
end
|
978
|
-
|
979
|
-
it "should validate version compare logic for strange examples" do
|
980
|
-
[
|
981
|
-
[ "2,0,0", "1.0.0", 1 ],
|
982
|
-
[ "0.0.1", "0,0.1", 0 ],
|
983
|
-
[ "1.0.0", "2,0,0", -1 ],
|
984
|
-
[ "002.0.0", "001.0.0", 1 ],
|
985
|
-
[ "001..0.1", "001..0.0", 1 ],
|
986
|
-
[ "-001..1", "-001..0", 1 ],
|
987
|
-
[ "1.0.1", nil, 1 ],
|
988
|
-
[ nil, nil, 0 ],
|
989
|
-
[ nil, "1.0.1", -1 ],
|
990
|
-
[ "1.0.1", "", 1 ],
|
991
|
-
[ "", "", 0 ],
|
992
|
-
[ "", "1.0.1", -1 ],
|
993
|
-
].each do |x, y, result|
|
994
|
-
expect(@rpmutils.rpmvercmp(x, y)).to eq(result)
|
995
|
-
end
|
996
|
-
end
|
997
|
-
|
998
|
-
it "tests isalnum good input" do
|
999
|
-
%w{a z A Z 0 9}.each do |t|
|
1000
|
-
expect(@rpmutils.isalnum(t)).to eq(true)
|
1001
|
-
end
|
1002
|
-
end
|
1003
|
-
|
1004
|
-
it "tests isalnum bad input" do
|
1005
|
-
[ "-", ".", "!", "^", ":", "_" ].each do |t|
|
1006
|
-
expect(@rpmutils.isalnum(t)).to eq(false)
|
1007
|
-
end
|
1008
|
-
end
|
1009
|
-
|
1010
|
-
it "tests isalpha good input" do
|
1011
|
-
%w{a z A Z}.each do |t|
|
1012
|
-
expect(@rpmutils.isalpha(t)).to eq(true)
|
1013
|
-
end
|
1014
|
-
end
|
1015
|
-
|
1016
|
-
it "tests isalpha bad input" do
|
1017
|
-
[ "0", "9", "-", ".", "!", "^", ":", "_" ].each do |t|
|
1018
|
-
expect(@rpmutils.isalpha(t)).to eq(false)
|
1019
|
-
end
|
1020
|
-
end
|
1021
|
-
|
1022
|
-
it "tests isdigit good input" do
|
1023
|
-
%w{0 9}.each do |t|
|
1024
|
-
expect(@rpmutils.isdigit(t)).to eq(true)
|
1025
|
-
end
|
1026
|
-
end
|
1027
|
-
|
1028
|
-
it "tests isdigit bad input" do
|
1029
|
-
[ "A", "z", "-", ".", "!", "^", ":", "_" ].each do |t|
|
1030
|
-
expect(@rpmutils.isdigit(t)).to eq(false)
|
1031
|
-
end
|
1032
|
-
end
|
1033
|
-
end
|
1034
|
-
|
1035
|
-
end
|
1036
|
-
|
1037
|
-
describe Chef::Provider::Package::Yum::RPMVersion do
|
1038
|
-
describe "new - with parsing" do
|
1039
|
-
before do
|
1040
|
-
@rpmv = Chef::Provider::Package::Yum::RPMVersion.new("1:1.6.5-9.36.el5")
|
1041
|
-
end
|
1042
|
-
|
1043
|
-
it "should expose evr (name-version-release) available" do
|
1044
|
-
expect(@rpmv.e).to eq(1)
|
1045
|
-
expect(@rpmv.v).to eq("1.6.5")
|
1046
|
-
expect(@rpmv.r).to eq("9.36.el5")
|
1047
|
-
|
1048
|
-
expect(@rpmv.evr).to eq("1:1.6.5-9.36.el5")
|
1049
|
-
end
|
1050
|
-
|
1051
|
-
it "should output a version-release string" do
|
1052
|
-
expect(@rpmv.to_s).to eq("1.6.5-9.36.el5")
|
1053
|
-
end
|
1054
|
-
end
|
1055
|
-
|
1056
|
-
describe "new - no parsing" do
|
1057
|
-
before do
|
1058
|
-
@rpmv = Chef::Provider::Package::Yum::RPMVersion.new("1", "1.6.5", "9.36.el5")
|
1059
|
-
end
|
1060
|
-
|
1061
|
-
it "should expose evr (name-version-release) available" do
|
1062
|
-
expect(@rpmv.e).to eq(1)
|
1063
|
-
expect(@rpmv.v).to eq("1.6.5")
|
1064
|
-
expect(@rpmv.r).to eq("9.36.el5")
|
1065
|
-
|
1066
|
-
expect(@rpmv.evr).to eq("1:1.6.5-9.36.el5")
|
1067
|
-
end
|
1068
|
-
|
1069
|
-
it "should output a version-release string" do
|
1070
|
-
expect(@rpmv.to_s).to eq("1.6.5-9.36.el5")
|
1071
|
-
end
|
1072
|
-
end
|
1073
|
-
|
1074
|
-
it "should raise an error unless passed 1 or 3 args" do
|
1075
|
-
expect do
|
1076
|
-
Chef::Provider::Package::Yum::RPMVersion.new()
|
1077
|
-
end.to raise_error(ArgumentError)
|
1078
|
-
expect do
|
1079
|
-
Chef::Provider::Package::Yum::RPMVersion.new("1:1.6.5-9.36.el5")
|
1080
|
-
end.not_to raise_error
|
1081
|
-
expect do
|
1082
|
-
Chef::Provider::Package::Yum::RPMVersion.new("1:1.6.5-9.36.el5", "extra")
|
1083
|
-
end.to raise_error(ArgumentError)
|
1084
|
-
expect do
|
1085
|
-
Chef::Provider::Package::Yum::RPMVersion.new("1", "1.6.5", "9.36.el5")
|
1086
|
-
end.not_to raise_error
|
1087
|
-
expect do
|
1088
|
-
Chef::Provider::Package::Yum::RPMVersion.new("1", "1.6.5", "9.36.el5", "extra")
|
1089
|
-
end.to raise_error(ArgumentError)
|
1090
|
-
end
|
1091
|
-
|
1092
|
-
# thanks version_class_spec.rb!
|
1093
|
-
describe "compare" do
|
1094
|
-
it "should sort based on complete epoch-version-release data" do
|
1095
|
-
[
|
1096
|
-
# smaller, larger
|
1097
|
-
[ "0:1.6.5-9.36.el5",
|
1098
|
-
"1:1.6.5-9.36.el5" ],
|
1099
|
-
[ "0:2.3-15.el5",
|
1100
|
-
"0:3.3-15.el5" ],
|
1101
|
-
[ "0:alpha9.8-27.2",
|
1102
|
-
"0:beta9.8-27.2" ],
|
1103
|
-
[ "0:0.09-14jpp.3",
|
1104
|
-
"0:0.09-15jpp.3" ],
|
1105
|
-
[ "0:0.9.0-0.6.20110211.el5",
|
1106
|
-
"0:0.9.0-0.6.20120211.el5" ],
|
1107
|
-
[ "0:1.9.1-4.el5",
|
1108
|
-
"0:1.9.1-5.el5" ],
|
1109
|
-
[ "0:1.4.10-7.20090624svn.el5",
|
1110
|
-
"0:1.4.10-7.20090625svn.el5" ],
|
1111
|
-
[ "0:2.3.4-2.el5",
|
1112
|
-
"0:2.3.4-2.el6" ],
|
1113
|
-
].each do |smaller, larger|
|
1114
|
-
sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller)
|
1115
|
-
lg = Chef::Provider::Package::Yum::RPMVersion.new(larger)
|
1116
|
-
expect(sm).to be < lg
|
1117
|
-
expect(lg).to be > sm
|
1118
|
-
expect(sm).not_to eq(lg)
|
1119
|
-
end
|
1120
|
-
end
|
1121
|
-
|
1122
|
-
it "should sort based on partial epoch-version-release data" do
|
1123
|
-
[
|
1124
|
-
# smaller, larger
|
1125
|
-
[ ":1.6.5-9.36.el5",
|
1126
|
-
"1:1.6.5-9.36.el5" ],
|
1127
|
-
[ "2.3-15.el5",
|
1128
|
-
"3.3-15.el5" ],
|
1129
|
-
[ "alpha9.8",
|
1130
|
-
"beta9.8" ],
|
1131
|
-
%w{14jpp
|
1132
|
-
15jpp},
|
1133
|
-
[ "0.9.0-0.6",
|
1134
|
-
"0.9.0-0.7" ],
|
1135
|
-
[ "0:1.9",
|
1136
|
-
"3:1.9" ],
|
1137
|
-
[ "2.3-2.el5",
|
1138
|
-
"2.3-2.el6" ],
|
1139
|
-
].each do |smaller, larger|
|
1140
|
-
sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller)
|
1141
|
-
lg = Chef::Provider::Package::Yum::RPMVersion.new(larger)
|
1142
|
-
expect(sm).to be < lg
|
1143
|
-
expect(lg).to be > sm
|
1144
|
-
expect(sm).not_to eq(lg)
|
1145
|
-
end
|
1146
|
-
end
|
1147
|
-
|
1148
|
-
it "should verify equality of complete epoch-version-release data" do
|
1149
|
-
[
|
1150
|
-
[ "0:1.6.5-9.36.el5",
|
1151
|
-
"0:1.6.5-9.36.el5" ],
|
1152
|
-
[ "0:2.3-15.el5",
|
1153
|
-
"0:2.3-15.el5" ],
|
1154
|
-
[ "0:alpha9.8-27.2",
|
1155
|
-
"0:alpha9.8-27.2" ],
|
1156
|
-
].each do |smaller, larger|
|
1157
|
-
sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller)
|
1158
|
-
lg = Chef::Provider::Package::Yum::RPMVersion.new(larger)
|
1159
|
-
expect(sm).to eq(lg)
|
1160
|
-
end
|
1161
|
-
end
|
1162
|
-
|
1163
|
-
it "should verify equality of partial epoch-version-release data" do
|
1164
|
-
[
|
1165
|
-
[ ":1.6.5-9.36.el5",
|
1166
|
-
"0:1.6.5-9.36.el5" ],
|
1167
|
-
[ "2.3-15.el5",
|
1168
|
-
"2.3-15.el5" ],
|
1169
|
-
[ "alpha9.8-3",
|
1170
|
-
"alpha9.8-3" ],
|
1171
|
-
].each do |smaller, larger|
|
1172
|
-
sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller)
|
1173
|
-
lg = Chef::Provider::Package::Yum::RPMVersion.new(larger)
|
1174
|
-
expect(sm).to eq(lg)
|
1175
|
-
end
|
1176
|
-
end
|
1177
|
-
end
|
1178
|
-
|
1179
|
-
describe "partial compare" do
|
1180
|
-
it "should compare based on partial epoch-version-release data" do
|
1181
|
-
[
|
1182
|
-
# smaller, larger
|
1183
|
-
[ "0:1.1.1-1",
|
1184
|
-
"1:" ],
|
1185
|
-
[ "0:1.1.1-1",
|
1186
|
-
"0:1.1.2" ],
|
1187
|
-
[ "0:1.1.1-1",
|
1188
|
-
"0:1.1.2-1" ],
|
1189
|
-
[ "0:",
|
1190
|
-
"1:1.1.1-1" ],
|
1191
|
-
[ "0:1.1.1",
|
1192
|
-
"0:1.1.2-1" ],
|
1193
|
-
[ "0:1.1.1-1",
|
1194
|
-
"0:1.1.2-1" ],
|
1195
|
-
].each do |smaller, larger|
|
1196
|
-
sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller)
|
1197
|
-
lg = Chef::Provider::Package::Yum::RPMVersion.new(larger)
|
1198
|
-
expect(sm.partial_compare(lg)).to eq(-1)
|
1199
|
-
expect(lg.partial_compare(sm)).to eq(1)
|
1200
|
-
expect(sm.partial_compare(lg)).not_to eq(0)
|
1201
|
-
end
|
1202
|
-
end
|
1203
|
-
|
1204
|
-
it "should verify equality based on partial epoch-version-release data" do
|
1205
|
-
[
|
1206
|
-
[ "0:",
|
1207
|
-
"0:1.1.1-1" ],
|
1208
|
-
[ "0:1.1.1",
|
1209
|
-
"0:1.1.1-1" ],
|
1210
|
-
[ "0:1.1.1-1",
|
1211
|
-
"0:1.1.1-1" ],
|
1212
|
-
].each do |smaller, larger|
|
1213
|
-
sm = Chef::Provider::Package::Yum::RPMVersion.new(smaller)
|
1214
|
-
lg = Chef::Provider::Package::Yum::RPMVersion.new(larger)
|
1215
|
-
expect(sm.partial_compare(lg)).to eq(0)
|
1216
|
-
end
|
1217
|
-
end
|
1218
|
-
end
|
1219
|
-
|
1220
|
-
end
|
1221
|
-
|
1222
|
-
describe Chef::Provider::Package::Yum::RPMPackage do
|
1223
|
-
describe "new - with parsing" do
|
1224
|
-
before do
|
1225
|
-
@rpm = Chef::Provider::Package::Yum::RPMPackage.new("testing", "1:1.6.5-9.36.el5", "x86_64", [])
|
1226
|
-
end
|
1227
|
-
|
1228
|
-
it "should expose nevra (name-epoch-version-release-arch) available" do
|
1229
|
-
expect(@rpm.name).to eq("testing")
|
1230
|
-
expect(@rpm.version.e).to eq(1)
|
1231
|
-
expect(@rpm.version.v).to eq("1.6.5")
|
1232
|
-
expect(@rpm.version.r).to eq("9.36.el5")
|
1233
|
-
expect(@rpm.arch).to eq("x86_64")
|
1234
|
-
|
1235
|
-
expect(@rpm.nevra).to eq("testing-1:1.6.5-9.36.el5.x86_64")
|
1236
|
-
expect(@rpm.to_s).to eq(@rpm.nevra)
|
1237
|
-
end
|
1238
|
-
|
1239
|
-
it "should always have at least one provide, itself" do
|
1240
|
-
expect(@rpm.provides.size).to eq(1)
|
1241
|
-
expect(@rpm.provides[0].name).to eql("testing")
|
1242
|
-
expect(@rpm.provides[0].version.evr).to eql("1:1.6.5-9.36.el5")
|
1243
|
-
expect(@rpm.provides[0].flag).to eql(:==)
|
1244
|
-
end
|
1245
|
-
end
|
1246
|
-
|
1247
|
-
describe "new - no parsing" do
|
1248
|
-
before do
|
1249
|
-
@rpm = Chef::Provider::Package::Yum::RPMPackage.new("testing", "1", "1.6.5", "9.36.el5", "x86_64", [])
|
1250
|
-
end
|
1251
|
-
|
1252
|
-
it "should expose nevra (name-epoch-version-release-arch) available" do
|
1253
|
-
expect(@rpm.name).to eq("testing")
|
1254
|
-
expect(@rpm.version.e).to eq(1)
|
1255
|
-
expect(@rpm.version.v).to eq("1.6.5")
|
1256
|
-
expect(@rpm.version.r).to eq("9.36.el5")
|
1257
|
-
expect(@rpm.arch).to eq("x86_64")
|
1258
|
-
|
1259
|
-
expect(@rpm.nevra).to eq("testing-1:1.6.5-9.36.el5.x86_64")
|
1260
|
-
expect(@rpm.to_s).to eq(@rpm.nevra)
|
1261
|
-
end
|
1262
|
-
|
1263
|
-
it "should always have at least one provide, itself" do
|
1264
|
-
expect(@rpm.provides.size).to eq(1)
|
1265
|
-
expect(@rpm.provides[0].name).to eql("testing")
|
1266
|
-
expect(@rpm.provides[0].version.evr).to eql("1:1.6.5-9.36.el5")
|
1267
|
-
expect(@rpm.provides[0].flag).to eql(:==)
|
1268
|
-
end
|
1269
|
-
end
|
1270
|
-
|
1271
|
-
it "should raise an error unless passed 4 or 6 args" do
|
1272
|
-
expect do
|
1273
|
-
Chef::Provider::Package::Yum::RPMPackage.new()
|
1274
|
-
end.to raise_error(ArgumentError)
|
1275
|
-
expect do
|
1276
|
-
Chef::Provider::Package::Yum::RPMPackage.new("testing")
|
1277
|
-
end.to raise_error(ArgumentError)
|
1278
|
-
expect do
|
1279
|
-
Chef::Provider::Package::Yum::RPMPackage.new("testing", "1:1.6.5-9.36.el5")
|
1280
|
-
end.to raise_error(ArgumentError)
|
1281
|
-
expect do
|
1282
|
-
Chef::Provider::Package::Yum::RPMPackage.new("testing", "1:1.6.5-9.36.el5", "x86_64")
|
1283
|
-
end.to raise_error(ArgumentError)
|
1284
|
-
expect do
|
1285
|
-
Chef::Provider::Package::Yum::RPMPackage.new("testing", "1:1.6.5-9.36.el5", "x86_64", [])
|
1286
|
-
end.not_to raise_error
|
1287
|
-
expect do
|
1288
|
-
Chef::Provider::Package::Yum::RPMPackage.new("testing", "1", "1.6.5", "9.36.el5", "x86_64")
|
1289
|
-
end.to raise_error(ArgumentError)
|
1290
|
-
expect do
|
1291
|
-
Chef::Provider::Package::Yum::RPMPackage.new("testing", "1", "1.6.5", "9.36.el5", "x86_64", [])
|
1292
|
-
end.not_to raise_error
|
1293
|
-
expect do
|
1294
|
-
Chef::Provider::Package::Yum::RPMPackage.new("testing", "1", "1.6.5", "9.36.el5", "x86_64", [], "extra")
|
1295
|
-
end.to raise_error(ArgumentError)
|
1296
|
-
end
|
1297
|
-
|
1298
|
-
describe "<=>" do
|
1299
|
-
it "should sort alphabetically based on package name" do
|
1300
|
-
[
|
1301
|
-
[ "a-test",
|
1302
|
-
"b-test" ],
|
1303
|
-
[ "B-test",
|
1304
|
-
"a-test" ],
|
1305
|
-
[ "A-test",
|
1306
|
-
"B-test" ],
|
1307
|
-
[ "Aa-test",
|
1308
|
-
"aA-test" ],
|
1309
|
-
%w{1test
|
1310
|
-
2test},
|
1311
|
-
].each do |smaller, larger|
|
1312
|
-
sm = Chef::Provider::Package::Yum::RPMPackage.new(smaller, "0:0.0.1-1", "x86_64", [])
|
1313
|
-
lg = Chef::Provider::Package::Yum::RPMPackage.new(larger, "0:0.0.1-1", "x86_64", [])
|
1314
|
-
expect(sm).to be < lg
|
1315
|
-
expect(lg).to be > sm
|
1316
|
-
expect(sm).not_to eq(lg)
|
1317
|
-
end
|
1318
|
-
end
|
1319
|
-
|
1320
|
-
it "should sort alphabetically based on package arch" do
|
1321
|
-
[
|
1322
|
-
%w{i386
|
1323
|
-
x86_64},
|
1324
|
-
%w{i386
|
1325
|
-
noarch},
|
1326
|
-
%w{noarch
|
1327
|
-
x86_64},
|
1328
|
-
].each do |smaller, larger|
|
1329
|
-
sm = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "0:0.0.1-1", smaller, [])
|
1330
|
-
lg = Chef::Provider::Package::Yum::RPMPackage.new("test-package", "0:0.0.1-1", larger, [])
|
1331
|
-
expect(sm).to be < lg
|
1332
|
-
expect(lg).to be > sm
|
1333
|
-
expect(sm).not_to eq(lg)
|
1334
|
-
end
|
1335
|
-
end
|
1336
|
-
end
|
1337
|
-
|
1338
|
-
end
|
1339
|
-
|
1340
|
-
describe Chef::Provider::Package::Yum::RPMDbPackage do
|
1341
|
-
before(:each) do
|
1342
|
-
# name, version, arch, installed, available, repoid
|
1343
|
-
@rpm_x = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-b", "0:1.6.5-9.36.el5", "noarch", [], false, true, "base")
|
1344
|
-
@rpm_y = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-b", "0:1.6.5-9.36.el5", "noarch", [], true, true, "extras")
|
1345
|
-
@rpm_z = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-b", "0:1.6.5-9.36.el5", "noarch", [], true, false, "other")
|
1346
|
-
end
|
1347
|
-
|
1348
|
-
describe "initialize" do
|
1349
|
-
it "should return a Chef::Provider::Package::Yum::RPMDbPackage object" do
|
1350
|
-
expect(@rpm_x).to be_kind_of(Chef::Provider::Package::Yum::RPMDbPackage)
|
1351
|
-
end
|
1352
|
-
end
|
1353
|
-
|
1354
|
-
describe "available" do
|
1355
|
-
it "should return true" do
|
1356
|
-
expect(@rpm_x.available).to eq(true)
|
1357
|
-
expect(@rpm_y.available).to eq(true)
|
1358
|
-
expect(@rpm_z.available).to eq(false)
|
1359
|
-
end
|
1360
|
-
end
|
1361
|
-
|
1362
|
-
describe "installed" do
|
1363
|
-
it "should return true" do
|
1364
|
-
expect(@rpm_x.installed).to eq(false)
|
1365
|
-
expect(@rpm_y.installed).to eq(true)
|
1366
|
-
expect(@rpm_z.installed).to eq(true)
|
1367
|
-
end
|
1368
|
-
end
|
1369
|
-
|
1370
|
-
describe "repoid" do
|
1371
|
-
it "should return the source repository repoid" do
|
1372
|
-
expect(@rpm_x.repoid).to eq("base")
|
1373
|
-
expect(@rpm_y.repoid).to eq("extras")
|
1374
|
-
expect(@rpm_z.repoid).to eq("other")
|
1375
|
-
end
|
1376
|
-
end
|
1377
|
-
end
|
1378
|
-
|
1379
|
-
describe Chef::Provider::Package::Yum::RPMDependency do
|
1380
|
-
describe "new - with parsing" do
|
1381
|
-
before do
|
1382
|
-
@rpmdep = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==)
|
1383
|
-
end
|
1384
|
-
|
1385
|
-
it "should expose name, version, flag available" do
|
1386
|
-
expect(@rpmdep.name).to eq("testing")
|
1387
|
-
expect(@rpmdep.version.e).to eq(1)
|
1388
|
-
expect(@rpmdep.version.v).to eq("1.6.5")
|
1389
|
-
expect(@rpmdep.version.r).to eq("9.36.el5")
|
1390
|
-
expect(@rpmdep.flag).to eq(:==)
|
1391
|
-
end
|
1392
|
-
end
|
1393
|
-
|
1394
|
-
describe "new - no parsing" do
|
1395
|
-
before do
|
1396
|
-
@rpmdep = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1", "1.6.5", "9.36.el5", :==)
|
1397
|
-
end
|
1398
|
-
|
1399
|
-
it "should expose name, version, flag available" do
|
1400
|
-
expect(@rpmdep.name).to eq("testing")
|
1401
|
-
expect(@rpmdep.version.e).to eq(1)
|
1402
|
-
expect(@rpmdep.version.v).to eq("1.6.5")
|
1403
|
-
expect(@rpmdep.version.r).to eq("9.36.el5")
|
1404
|
-
expect(@rpmdep.flag).to eq(:==)
|
1405
|
-
end
|
1406
|
-
end
|
1407
|
-
|
1408
|
-
it "should raise an error unless passed 3 or 5 args" do
|
1409
|
-
expect do
|
1410
|
-
Chef::Provider::Package::Yum::RPMDependency.new()
|
1411
|
-
end.to raise_error(ArgumentError)
|
1412
|
-
expect do
|
1413
|
-
Chef::Provider::Package::Yum::RPMDependency.new("testing")
|
1414
|
-
end.to raise_error(ArgumentError)
|
1415
|
-
expect do
|
1416
|
-
Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5")
|
1417
|
-
end.to raise_error(ArgumentError)
|
1418
|
-
expect do
|
1419
|
-
Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==)
|
1420
|
-
end.not_to raise_error
|
1421
|
-
expect do
|
1422
|
-
Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==, "extra")
|
1423
|
-
end.to raise_error(ArgumentError)
|
1424
|
-
expect do
|
1425
|
-
Chef::Provider::Package::Yum::RPMDependency.new("testing", "1", "1.6.5", "9.36.el5", :==)
|
1426
|
-
end.not_to raise_error
|
1427
|
-
expect do
|
1428
|
-
Chef::Provider::Package::Yum::RPMDependency.new("testing", "1", "1.6.5", "9.36.el5", :==, "extra")
|
1429
|
-
end.to raise_error(ArgumentError)
|
1430
|
-
end
|
1431
|
-
|
1432
|
-
describe "parse" do
|
1433
|
-
it "should parse a name, flag, version string into a valid RPMDependency object" do
|
1434
|
-
@rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing >= 1:1.6.5-9.36.el5")
|
1435
|
-
|
1436
|
-
expect(@rpmdep.name).to eq("testing")
|
1437
|
-
expect(@rpmdep.version.e).to eq(1)
|
1438
|
-
expect(@rpmdep.version.v).to eq("1.6.5")
|
1439
|
-
expect(@rpmdep.version.r).to eq("9.36.el5")
|
1440
|
-
expect(@rpmdep.flag).to eq(:>=)
|
1441
|
-
end
|
1442
|
-
|
1443
|
-
it "should parse a name into a valid RPMDependency object" do
|
1444
|
-
@rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing")
|
1445
|
-
|
1446
|
-
expect(@rpmdep.name).to eq("testing")
|
1447
|
-
expect(@rpmdep.version.e).to eq(nil)
|
1448
|
-
expect(@rpmdep.version.v).to eq(nil)
|
1449
|
-
expect(@rpmdep.version.r).to eq(nil)
|
1450
|
-
expect(@rpmdep.flag).to eq(:==)
|
1451
|
-
end
|
1452
|
-
|
1453
|
-
it "should parse an invalid string into the name of a RPMDependency object" do
|
1454
|
-
@rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing blah >")
|
1455
|
-
|
1456
|
-
expect(@rpmdep.name).to eq("testing blah >")
|
1457
|
-
expect(@rpmdep.version.e).to eq(nil)
|
1458
|
-
expect(@rpmdep.version.v).to eq(nil)
|
1459
|
-
expect(@rpmdep.version.r).to eq(nil)
|
1460
|
-
expect(@rpmdep.flag).to eq(:==)
|
1461
|
-
end
|
1462
|
-
|
1463
|
-
it "should parse various valid flags" do
|
1464
|
-
[
|
1465
|
-
[ ">", :> ],
|
1466
|
-
[ ">=", :>= ],
|
1467
|
-
[ "=", :== ],
|
1468
|
-
[ "==", :== ],
|
1469
|
-
[ "<=", :<= ],
|
1470
|
-
[ "<", :< ],
|
1471
|
-
].each do |before, after|
|
1472
|
-
@rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing #{before} 1:1.1-1")
|
1473
|
-
expect(@rpmdep.flag).to eq(after)
|
1474
|
-
end
|
1475
|
-
end
|
1476
|
-
|
1477
|
-
it "should parse various invalid flags and treat them as names" do
|
1478
|
-
[
|
1479
|
-
[ "<>", :== ],
|
1480
|
-
[ "!=", :== ],
|
1481
|
-
[ ">>", :== ],
|
1482
|
-
[ "<<", :== ],
|
1483
|
-
[ "!", :== ],
|
1484
|
-
[ "~", :== ],
|
1485
|
-
].each do |before, after|
|
1486
|
-
@rpmdep = Chef::Provider::Package::Yum::RPMDependency.parse("testing #{before} 1:1.1-1")
|
1487
|
-
expect(@rpmdep.name).to eq("testing #{before} 1:1.1-1")
|
1488
|
-
expect(@rpmdep.flag).to eq(after)
|
1489
|
-
end
|
1490
|
-
end
|
1491
|
-
end
|
1492
|
-
|
1493
|
-
describe "satisfy?" do
|
1494
|
-
it "should raise an error unless a RPMDependency is passed" do
|
1495
|
-
@rpmprovide = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==)
|
1496
|
-
@rpmrequire = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :>=)
|
1497
|
-
expect do
|
1498
|
-
@rpmprovide.satisfy?("hi")
|
1499
|
-
end.to raise_error(ArgumentError)
|
1500
|
-
expect do
|
1501
|
-
@rpmprovide.satisfy?(@rpmrequire)
|
1502
|
-
end.not_to raise_error
|
1503
|
-
end
|
1504
|
-
|
1505
|
-
it "should validate dependency satisfaction logic for standard examples" do
|
1506
|
-
[
|
1507
|
-
# names
|
1508
|
-
[ "test", "test", true ],
|
1509
|
-
[ "test", "foo", false ],
|
1510
|
-
# full: epoch:version-relese
|
1511
|
-
[ "testing = 1:1.1-1", "testing > 1:1.1-0", true ],
|
1512
|
-
[ "testing = 1:1.1-1", "testing >= 1:1.1-0", true ],
|
1513
|
-
[ "testing = 1:1.1-1", "testing >= 1:1.1-1", true ],
|
1514
|
-
[ "testing = 1:1.1-1", "testing = 1:1.1-1", true ],
|
1515
|
-
[ "testing = 1:1.1-1", "testing == 1:1.1-1", true ],
|
1516
|
-
[ "testing = 1:1.1-1", "testing <= 1:1.1-1", true ],
|
1517
|
-
[ "testing = 1:1.1-1", "testing <= 1:1.1-0", false ],
|
1518
|
-
[ "testing = 1:1.1-1", "testing < 1:1.1-0", false ],
|
1519
|
-
# partial: epoch:version
|
1520
|
-
[ "testing = 1:1.1", "testing > 1:1.0", true ],
|
1521
|
-
[ "testing = 1:1.1", "testing >= 1:1.0", true ],
|
1522
|
-
[ "testing = 1:1.1", "testing >= 1:1.1", true ],
|
1523
|
-
[ "testing = 1:1.1", "testing = 1:1.1", true ],
|
1524
|
-
[ "testing = 1:1.1", "testing == 1:1.1", true ],
|
1525
|
-
[ "testing = 1:1.1", "testing <= 1:1.1", true ],
|
1526
|
-
[ "testing = 1:1.1", "testing <= 1:1.0", false ],
|
1527
|
-
[ "testing = 1:1.1", "testing < 1:1.0", false ],
|
1528
|
-
# partial: epoch
|
1529
|
-
[ "testing = 1:", "testing > 0:", true ],
|
1530
|
-
[ "testing = 1:", "testing >= 0:", true ],
|
1531
|
-
[ "testing = 1:", "testing >= 1:", true ],
|
1532
|
-
[ "testing = 1:", "testing = 1:", true ],
|
1533
|
-
[ "testing = 1:", "testing == 1:", true ],
|
1534
|
-
[ "testing = 1:", "testing <= 1:", true ],
|
1535
|
-
[ "testing = 1:", "testing <= 0:", false ],
|
1536
|
-
[ "testing = 1:", "testing < 0:", false ],
|
1537
|
-
# mix and match!
|
1538
|
-
[ "testing = 1:1.1-1", "testing == 1:1.1", true ],
|
1539
|
-
[ "testing = 1:1.1-1", "testing == 1:", true ],
|
1540
|
-
].each do |prov, req, result|
|
1541
|
-
@rpmprovide = Chef::Provider::Package::Yum::RPMDependency.parse(prov)
|
1542
|
-
@rpmrequire = Chef::Provider::Package::Yum::RPMDependency.parse(req)
|
1543
|
-
|
1544
|
-
expect(@rpmprovide.satisfy?(@rpmrequire)).to eq(result)
|
1545
|
-
expect(@rpmrequire.satisfy?(@rpmprovide)).to eq(result)
|
1546
|
-
end
|
1547
|
-
end
|
1548
|
-
end
|
1549
|
-
|
1550
|
-
end
|
1551
|
-
|
1552
|
-
# thanks resource_collection_spec.rb!
|
1553
|
-
describe Chef::Provider::Package::Yum::RPMDb do
|
1554
|
-
before(:each) do
|
1555
|
-
@rpmdb = Chef::Provider::Package::Yum::RPMDb.new
|
1556
|
-
# name, version, arch, installed, available
|
1557
|
-
deps_v = [
|
1558
|
-
Chef::Provider::Package::Yum::RPMDependency.parse("libz.so.1()(64bit)"),
|
1559
|
-
Chef::Provider::Package::Yum::RPMDependency.parse("test-package-a = 0:1.6.5-9.36.el5"),
|
1560
|
-
]
|
1561
|
-
deps_z = [
|
1562
|
-
Chef::Provider::Package::Yum::RPMDependency.parse("libz.so.1()(64bit)"),
|
1563
|
-
Chef::Provider::Package::Yum::RPMDependency.parse("config(test) = 0:1.6.5-9.36.el5"),
|
1564
|
-
Chef::Provider::Package::Yum::RPMDependency.parse("test-package-c = 0:1.6.5-9.36.el5"),
|
1565
|
-
]
|
1566
|
-
@rpm_v = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-a", "0:1.6.5-9.36.el5", "i386", deps_v, true, false, "base")
|
1567
|
-
@rpm_w = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-b", "0:1.6.5-9.36.el5", "i386", [], true, true, "extras")
|
1568
|
-
@rpm_x = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-b", "0:1.6.5-9.36.el5", "x86_64", [], false, true, "extras")
|
1569
|
-
@rpm_y = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-b", "1:1.6.5-9.36.el5", "x86_64", [], true, true, "extras")
|
1570
|
-
@rpm_z = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-c", "0:1.6.5-9.36.el5", "noarch", deps_z, true, true, "base")
|
1571
|
-
@rpm_z_mirror = Chef::Provider::Package::Yum::RPMDbPackage.new("test-package-c", "0:1.6.5-9.36.el5", "noarch", deps_z, true, true, "base")
|
1572
|
-
end
|
1573
|
-
|
1574
|
-
describe "initialize" do
|
1575
|
-
it "should return a Chef::Provider::Package::Yum::RPMDb object" do
|
1576
|
-
expect(@rpmdb).to be_kind_of(Chef::Provider::Package::Yum::RPMDb)
|
1577
|
-
end
|
1578
|
-
end
|
1579
|
-
|
1580
|
-
describe "push" do
|
1581
|
-
it "should accept an RPMDbPackage object through pushing" do
|
1582
|
-
expect { @rpmdb.push(@rpm_w) }.not_to raise_error
|
1583
|
-
end
|
1584
|
-
|
1585
|
-
it "should accept multiple RPMDbPackage object through pushing" do
|
1586
|
-
expect { @rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z) }.not_to raise_error
|
1587
|
-
end
|
1588
|
-
|
1589
|
-
it "should only accept an RPMDbPackage object" do
|
1590
|
-
expect { @rpmdb.push("string") }.to raise_error(ArgumentError)
|
1591
|
-
end
|
1592
|
-
|
1593
|
-
it "should add the package to the package db" do
|
1594
|
-
@rpmdb.push(@rpm_w)
|
1595
|
-
expect(@rpmdb["test-package-b"]).not_to eq(nil)
|
1596
|
-
end
|
1597
|
-
|
1598
|
-
it "should add conditionally add the package to the available list" do
|
1599
|
-
expect(@rpmdb.available_size).to eq(0)
|
1600
|
-
@rpmdb.push(@rpm_v, @rpm_w)
|
1601
|
-
expect(@rpmdb.available_size).to eq(1)
|
1602
|
-
end
|
1603
|
-
|
1604
|
-
it "should add conditionally add the package to the installed list" do
|
1605
|
-
expect(@rpmdb.installed_size).to eq(0)
|
1606
|
-
@rpmdb.push(@rpm_w, @rpm_x)
|
1607
|
-
expect(@rpmdb.installed_size).to eq(1)
|
1608
|
-
end
|
1609
|
-
|
1610
|
-
it "should have a total of 2 packages in the RPMDb" do
|
1611
|
-
expect(@rpmdb.size).to eq(0)
|
1612
|
-
@rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z)
|
1613
|
-
expect(@rpmdb.size).to eq(2)
|
1614
|
-
end
|
1615
|
-
|
1616
|
-
it "should keep the Array unique when a duplicate is pushed" do
|
1617
|
-
@rpmdb.push(@rpm_z, @rpm_z_mirror)
|
1618
|
-
expect(@rpmdb["test-package-c"].size).to eq(1)
|
1619
|
-
end
|
1620
|
-
|
1621
|
-
it "should register the package provides in the provides index" do
|
1622
|
-
@rpmdb.push(@rpm_v, @rpm_w, @rpm_z)
|
1623
|
-
expect(@rpmdb.lookup_provides("test-package-a")[0]).to eq(@rpm_v)
|
1624
|
-
expect(@rpmdb.lookup_provides("config(test)")[0]).to eq(@rpm_z)
|
1625
|
-
expect(@rpmdb.lookup_provides("libz.so.1()(64bit)")[0]).to eq(@rpm_v)
|
1626
|
-
expect(@rpmdb.lookup_provides("libz.so.1()(64bit)")[1]).to eq(@rpm_z)
|
1627
|
-
end
|
1628
|
-
end
|
1629
|
-
|
1630
|
-
describe "<<" do
|
1631
|
-
it "should accept an RPMPackage object through the << operator" do
|
1632
|
-
expect { @rpmdb << @rpm_w }.not_to raise_error
|
1633
|
-
end
|
1634
|
-
end
|
1635
|
-
|
1636
|
-
describe "lookup" do
|
1637
|
-
it "should return an Array of RPMPackage objects by index" do
|
1638
|
-
@rpmdb << @rpm_w
|
1639
|
-
expect(@rpmdb.lookup("test-package-b")).to be_kind_of(Array)
|
1640
|
-
end
|
1641
|
-
end
|
1642
|
-
|
1643
|
-
describe "[]" do
|
1644
|
-
it "should return an Array of RPMPackage objects though the [index] operator" do
|
1645
|
-
@rpmdb << @rpm_w
|
1646
|
-
expect(@rpmdb["test-package-b"]).to be_kind_of(Array)
|
1647
|
-
end
|
1648
|
-
|
1649
|
-
it "should return an Array of 3 RPMPackage objects" do
|
1650
|
-
@rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z)
|
1651
|
-
expect(@rpmdb["test-package-b"].size).to eq(3)
|
1652
|
-
end
|
1653
|
-
|
1654
|
-
it "should return an Array of RPMPackage objects sorted from newest to oldest" do
|
1655
|
-
@rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z)
|
1656
|
-
expect(@rpmdb["test-package-b"][0]).to eq(@rpm_y)
|
1657
|
-
expect(@rpmdb["test-package-b"][1]).to eq(@rpm_x)
|
1658
|
-
expect(@rpmdb["test-package-b"][2]).to eq(@rpm_w)
|
1659
|
-
end
|
1660
|
-
end
|
1661
|
-
|
1662
|
-
describe "lookup_provides" do
|
1663
|
-
it "should return an Array of RPMPackage objects by index" do
|
1664
|
-
@rpmdb << @rpm_z
|
1665
|
-
x = @rpmdb.lookup_provides("config(test)")
|
1666
|
-
expect(x).to be_kind_of(Array)
|
1667
|
-
expect(x[0]).to eq(@rpm_z)
|
1668
|
-
end
|
1669
|
-
end
|
1670
|
-
|
1671
|
-
describe "clear" do
|
1672
|
-
it "should clear the RPMDb" do
|
1673
|
-
expect(@rpmdb).to receive(:clear_available).once
|
1674
|
-
expect(@rpmdb).to receive(:clear_installed).once
|
1675
|
-
@rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z)
|
1676
|
-
expect(@rpmdb.size).not_to eq(0)
|
1677
|
-
expect(@rpmdb.lookup_provides("config(test)")).to be_kind_of(Array)
|
1678
|
-
@rpmdb.clear
|
1679
|
-
expect(@rpmdb.lookup_provides("config(test)")).to eq(nil)
|
1680
|
-
expect(@rpmdb.size).to eq(0)
|
1681
|
-
end
|
1682
|
-
end
|
1683
|
-
|
1684
|
-
describe "clear_available" do
|
1685
|
-
it "should clear the available list" do
|
1686
|
-
@rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z)
|
1687
|
-
expect(@rpmdb.available_size).not_to eq(0)
|
1688
|
-
@rpmdb.clear_available
|
1689
|
-
expect(@rpmdb.available_size).to eq(0)
|
1690
|
-
end
|
1691
|
-
end
|
1692
|
-
|
1693
|
-
describe "available?" do
|
1694
|
-
it "should return true if a package is available" do
|
1695
|
-
expect(@rpmdb.available?(@rpm_w)).to eq(false)
|
1696
|
-
@rpmdb.push(@rpm_v, @rpm_w)
|
1697
|
-
expect(@rpmdb.available?(@rpm_v)).to eq(false)
|
1698
|
-
expect(@rpmdb.available?(@rpm_w)).to eq(true)
|
1699
|
-
end
|
1700
|
-
end
|
1701
|
-
|
1702
|
-
describe "clear_installed" do
|
1703
|
-
it "should clear the installed list" do
|
1704
|
-
@rpmdb.push(@rpm_w, @rpm_x, @rpm_y, @rpm_z)
|
1705
|
-
expect(@rpmdb.installed_size).not_to eq(0)
|
1706
|
-
@rpmdb.clear_installed
|
1707
|
-
expect(@rpmdb.installed_size).to eq(0)
|
1708
|
-
end
|
1709
|
-
end
|
1710
|
-
|
1711
|
-
describe "installed?" do
|
1712
|
-
it "should return true if a package is installed" do
|
1713
|
-
expect(@rpmdb.installed?(@rpm_w)).to eq(false)
|
1714
|
-
@rpmdb.push(@rpm_w, @rpm_x)
|
1715
|
-
expect(@rpmdb.installed?(@rpm_w)).to eq(true)
|
1716
|
-
expect(@rpmdb.installed?(@rpm_x)).to eq(false)
|
1717
|
-
end
|
1718
|
-
end
|
1719
|
-
|
1720
|
-
describe "whatprovides" do
|
1721
|
-
it "should raise an error unless a RPMDependency is passed" do
|
1722
|
-
@rpmprovide = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :==)
|
1723
|
-
@rpmrequire = Chef::Provider::Package::Yum::RPMDependency.new("testing", "1:1.6.5-9.36.el5", :>=)
|
1724
|
-
expect do
|
1725
|
-
@rpmdb.whatprovides("hi")
|
1726
|
-
end.to raise_error(ArgumentError)
|
1727
|
-
expect do
|
1728
|
-
@rpmdb.whatprovides(@rpmrequire)
|
1729
|
-
end.not_to raise_error
|
1730
|
-
end
|
1731
|
-
|
1732
|
-
it "should return an Array of packages statisfying a RPMDependency" do
|
1733
|
-
@rpmdb.push(@rpm_v, @rpm_w, @rpm_z)
|
1734
|
-
|
1735
|
-
@rpmrequire = Chef::Provider::Package::Yum::RPMDependency.parse("test-package-a >= 1.6.5")
|
1736
|
-
x = @rpmdb.whatprovides(@rpmrequire)
|
1737
|
-
expect(x).to be_kind_of(Array)
|
1738
|
-
expect(x[0]).to eq(@rpm_v)
|
1739
|
-
|
1740
|
-
@rpmrequire = Chef::Provider::Package::Yum::RPMDependency.parse("libz.so.1()(64bit)")
|
1741
|
-
x = @rpmdb.whatprovides(@rpmrequire)
|
1742
|
-
expect(x).to be_kind_of(Array)
|
1743
|
-
expect(x[0]).to eq(@rpm_v)
|
1744
|
-
expect(x[1]).to eq(@rpm_z)
|
1745
|
-
end
|
1746
|
-
end
|
1747
|
-
|
1748
|
-
end
|
1749
|
-
|
1750
|
-
describe Chef::Provider::Package::Yum::YumCache do
|
1751
|
-
# allow for the reset of a Singleton
|
1752
|
-
# thanks to Ian White (http://blog.ardes.com/2006/12/11/testing-singletons-with-ruby)
|
1753
|
-
class << Chef::Provider::Package::Yum::YumCache
|
1754
|
-
def reset_instance
|
1755
|
-
Singleton.send :__init__, self
|
1756
|
-
self
|
1757
|
-
end
|
1758
|
-
end
|
1759
|
-
|
1760
|
-
let(:yum_exe) do
|
1761
|
-
StringIO.new("#!/usr/bin/python\n\naldsjfa\ldsajflkdsjf\lajsdfj")
|
1762
|
-
end
|
1763
|
-
|
1764
|
-
let(:bin_exe) do
|
1765
|
-
StringIO.new(SecureRandom.random_bytes)
|
1766
|
-
end
|
1767
|
-
|
1768
|
-
before(:each) do
|
1769
|
-
@stdin = double("STDIN", :nil_object => true)
|
1770
|
-
@stdout = double("STDOUT", :nil_object => true)
|
1771
|
-
|
1772
|
-
@stdout_good = <<EOF
|
1773
|
-
[option installonlypkgs] kernel kernel-bigmem kernel-enterprise
|
1774
|
-
erlang-mochiweb 0 1.4.1 5.el5 x86_64 ['erlang-mochiweb = 1.4.1-5.el5', 'mochiweb = 1.4.1-5.el5'] i installed
|
1775
|
-
zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
|
1776
|
-
zisofs-tools 0 1.0.6 3.2.2 x86_64 [] a extras
|
1777
|
-
zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] r base
|
1778
|
-
zlib 0 1.2.3 3 i386 ['zlib = 1.2.3-3', 'libz.so.1'] r base
|
1779
|
-
zlib-devel 0 1.2.3 3 i386 [] a extras
|
1780
|
-
zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] r base
|
1781
|
-
znc 0 0.098 1.el5 x86_64 [] a base
|
1782
|
-
znc-devel 0 0.098 1.el5 i386 [] a extras
|
1783
|
-
znc-devel 0 0.098 1.el5 x86_64 [] a base
|
1784
|
-
znc-extra 0 0.098 1.el5 x86_64 [] a base
|
1785
|
-
znc-modtcl 0 0.098 1.el5 x86_64 [] a base
|
1786
|
-
znc-test.beta1 0 0.098 1.el5 x86_64 [] a extras
|
1787
|
-
znc-test.test.beta1 0 0.098 1.el5 x86_64 [] a base
|
1788
|
-
EOF
|
1789
|
-
@stdout_bad_type = <<EOF
|
1790
|
-
zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
|
1791
|
-
zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] c base
|
1792
|
-
zlib-devel 0 1.2.3 3 i386 [] a extras
|
1793
|
-
zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] bad installed
|
1794
|
-
znc-modtcl 0 0.098 1.el5 x86_64 [] a base
|
1795
|
-
EOF
|
1796
|
-
|
1797
|
-
@stdout_bad_separators = <<EOF
|
1798
|
-
zip 0 2.31 2.el5 x86_64 ['zip = 2.31-2.el5'] r base
|
1799
|
-
zlib 0 1.2.3 3 x86_64 ['zlib = 1.2.3-3', 'libz.so.1()(64bit)'] i base bad
|
1800
|
-
zlib-devel 0 1.2.3 3 i386 [] a extras
|
1801
|
-
bad zlib-devel 0 1.2.3 3 x86_64 ['zlib-devel = 1.2.3-3'] i installed
|
1802
|
-
znc-modtcl 0 0.098 1.el5 x86_64 [] a base bad
|
1803
|
-
EOF
|
1804
|
-
|
1805
|
-
@stdout_no_output = ""
|
1806
|
-
|
1807
|
-
@stderr = <<EOF
|
1808
|
-
yum-dump Config Error: File contains no section headers.
|
1809
|
-
file: file://///etc/yum.repos.d/CentOS-Base.repo, line: 12
|
1810
|
-
'qeqwewe\n'
|
1811
|
-
EOF
|
1812
|
-
@status = double("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_good, :stderr => @stderr)
|
1813
|
-
# new singleton each time
|
1814
|
-
Chef::Provider::Package::Yum::YumCache.reset_instance
|
1815
|
-
@yc = Chef::Provider::Package::Yum::YumCache.instance
|
1816
|
-
# load valid data
|
1817
|
-
@yc.yum_binary = "yum"
|
1818
|
-
allow(@yc).to receive(:shell_out!).and_return(@status)
|
1819
|
-
allow_any_instance_of(described_class).to receive(:which).with("yum").and_return("/usr/bin/yum")
|
1820
|
-
allow(::File).to receive(:open).with("/usr/bin/yum", "r") do |&block|
|
1821
|
-
res = block.call(yum_exe)
|
1822
|
-
# a bit of a hack. rewind this since it seem that no matter what
|
1823
|
-
# I do, we get the same StringIO objects on multiple calls to
|
1824
|
-
# ::File.open
|
1825
|
-
yum_exe.rewind; res
|
1826
|
-
end
|
1827
|
-
end
|
1828
|
-
|
1829
|
-
describe "initialize" do
|
1830
|
-
it "should return a Chef::Provider::Package::Yum::YumCache object" do
|
1831
|
-
expect(@yc).to be_kind_of(Chef::Provider::Package::Yum::YumCache)
|
1832
|
-
end
|
1833
|
-
|
1834
|
-
it "should register reload for start of Chef::Client runs" do
|
1835
|
-
Chef::Provider::Package::Yum::YumCache.reset_instance
|
1836
|
-
expect(Chef::Client).to receive(:when_run_starts) do |&b|
|
1837
|
-
expect(b).not_to be_nil
|
1838
|
-
end
|
1839
|
-
@yc = Chef::Provider::Package::Yum::YumCache.instance
|
1840
|
-
end
|
1841
|
-
end
|
1842
|
-
|
1843
|
-
describe "python_bin" do
|
1844
|
-
it "should return the default python if an error occurs" do
|
1845
|
-
allow(::File).to receive(:open).with("/usr/bin/yum", "r").and_raise(StandardError)
|
1846
|
-
expect(@yc.python_bin).to eq("/usr/bin/python")
|
1847
|
-
end
|
1848
|
-
|
1849
|
-
it "should return the default python if the yum-executable doesn't start with #!" do
|
1850
|
-
allow(::File).to receive(:open).with("/usr/bin/yum", "r") { |&b| r = b.call(bin_exe); bin_exe.rewind; r }
|
1851
|
-
expect(@yc.python_bin).to eq("/usr/bin/python")
|
1852
|
-
end
|
1853
|
-
|
1854
|
-
it "should return /usr/bin/python if the interpreter is /bin/bash" do
|
1855
|
-
other = StringIO.new("#!/bin/bash\n# The yum executable redirecting to dnf from dnf-yum compatible package.")
|
1856
|
-
allow(::File).to receive(:open).with("/usr/bin/yum", "r") { |&b| r = b.call(other); other.rewind; r }
|
1857
|
-
expect(@yc.python_bin).to eq("/usr/bin/python")
|
1858
|
-
end
|
1859
|
-
|
1860
|
-
it "should return the interpreter for yum" do
|
1861
|
-
other = StringIO.new("#!/usr/bin/super_python\n\nlasjdfdsaljf\nlasdjfs")
|
1862
|
-
allow(::File).to receive(:open).with("/usr/bin/yum", "r") { |&b| r = b.call(other); other.rewind; r }
|
1863
|
-
expect(@yc.python_bin).to eq("/usr/bin/super_python")
|
1864
|
-
end
|
1865
|
-
end
|
1866
|
-
|
1867
|
-
describe "refresh" do
|
1868
|
-
it "should implicitly call yum-dump.py only once by default after being instantiated" do
|
1869
|
-
expect(@yc).to receive(:shell_out!).once
|
1870
|
-
@yc.installed_version("zlib")
|
1871
|
-
@yc.reset
|
1872
|
-
@yc.installed_version("zlib")
|
1873
|
-
end
|
1874
|
-
|
1875
|
-
it "should run yum-dump.py using the system python when next_refresh is for :all" do
|
1876
|
-
@yc.reload
|
1877
|
-
expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --yum-lock-timeout 30$}, :timeout => Chef::Config[:yum_timeout])
|
1878
|
-
@yc.refresh
|
1879
|
-
end
|
1880
|
-
|
1881
|
-
it "should run yum-dump.py with the installed flag when next_refresh is for :installed" do
|
1882
|
-
@yc.reload_installed
|
1883
|
-
expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --installed --yum-lock-timeout 30$}, :timeout => Chef::Config[:yum_timeout])
|
1884
|
-
@yc.refresh
|
1885
|
-
end
|
1886
|
-
|
1887
|
-
it "should run yum-dump.py with the all-provides flag when next_refresh is for :provides" do
|
1888
|
-
@yc.reload_provides
|
1889
|
-
expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --all-provides --yum-lock-timeout 30$}, :timeout => Chef::Config[:yum_timeout])
|
1890
|
-
@yc.refresh
|
1891
|
-
end
|
1892
|
-
|
1893
|
-
it "should pass extra_repo_control args to yum-dump.py" do
|
1894
|
-
@yc.enable_extra_repo_control("--enablerepo=foo --disablerepo=bar")
|
1895
|
-
expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar --yum-lock-timeout 30$}, :timeout => Chef::Config[:yum_timeout])
|
1896
|
-
@yc.refresh
|
1897
|
-
end
|
1898
|
-
|
1899
|
-
it "should pass extra_repo_control args and configured yum lock timeout to yum-dump.py" do
|
1900
|
-
Chef::Config[:yum_lock_timeout] = 999
|
1901
|
-
@yc.enable_extra_repo_control("--enablerepo=foo --disablerepo=bar")
|
1902
|
-
expect(@yc).to receive(:shell_out!).with(%r{^/usr/bin/python .*/yum-dump.py --options --installed-provides --enablerepo=foo --disablerepo=bar --yum-lock-timeout 999$}, :timeout => Chef::Config[:yum_timeout])
|
1903
|
-
@yc.refresh
|
1904
|
-
end
|
1905
|
-
|
1906
|
-
it "should warn about invalid data with too many separators" do
|
1907
|
-
@status = double("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_bad_separators, :stderr => @stderr)
|
1908
|
-
allow(@yc).to receive(:shell_out!).and_return(@status)
|
1909
|
-
expect(Chef::Log).to receive(:warn).exactly(3).times.with(%r{Problem parsing})
|
1910
|
-
@yc.refresh
|
1911
|
-
end
|
1912
|
-
|
1913
|
-
it "should warn about invalid data with an incorrect type" do
|
1914
|
-
@status = double("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_bad_type, :stderr => @stderr)
|
1915
|
-
allow(@yc).to receive(:shell_out!).and_return(@status)
|
1916
|
-
expect(Chef::Log).to receive(:warn).exactly(2).times.with(%r{Problem parsing})
|
1917
|
-
@yc.refresh
|
1918
|
-
end
|
1919
|
-
|
1920
|
-
it "should warn about no output from yum-dump.py" do
|
1921
|
-
@status = double("Status", :exitstatus => 0, :stdin => @stdin, :stdout => @stdout_no_output, :stderr => @stderr)
|
1922
|
-
allow(@yc).to receive(:shell_out!).and_return(@status)
|
1923
|
-
expect(Chef::Log).to receive(:warn).exactly(1).times.with(%r{no output from yum-dump.py})
|
1924
|
-
@yc.refresh
|
1925
|
-
end
|
1926
|
-
|
1927
|
-
it "should raise exception yum-dump.py exits with a non zero status" do
|
1928
|
-
@status = double("Status", :exitstatus => 1, :stdin => @stdin, :stdout => @stdout_no_output, :stderr => @stderr)
|
1929
|
-
allow(@yc).to receive(:shell_out!).and_return(@status)
|
1930
|
-
expect { @yc.refresh }.to raise_error(Chef::Exceptions::Package, %r{CentOS-Base.repo, line: 12})
|
1931
|
-
end
|
1932
|
-
|
1933
|
-
it "should parse type 'i' into an installed state for a package" do
|
1934
|
-
expect(@yc.available_version("erlang-mochiweb")).to eq(nil)
|
1935
|
-
expect(@yc.installed_version("erlang-mochiweb")).not_to eq(nil)
|
1936
|
-
end
|
1937
|
-
|
1938
|
-
it "should parse type 'a' into an available state for a package" do
|
1939
|
-
expect(@yc.available_version("znc")).not_to eq(nil)
|
1940
|
-
expect(@yc.installed_version("znc")).to eq(nil)
|
1941
|
-
end
|
1942
|
-
|
1943
|
-
it "should parse type 'r' into an installed and available states for a package" do
|
1944
|
-
expect(@yc.available_version("zip")).not_to eq(nil)
|
1945
|
-
expect(@yc.installed_version("zip")).not_to eq(nil)
|
1946
|
-
end
|
1947
|
-
|
1948
|
-
it "should parse installonlypkgs from yum-dump.py options output" do
|
1949
|
-
expect(@yc.allow_multi_install).to eq(%w{kernel kernel-bigmem kernel-enterprise})
|
1950
|
-
end
|
1951
|
-
end
|
1952
|
-
|
1953
|
-
describe "installed_version" do
|
1954
|
-
it "should take one or two arguments" do
|
1955
|
-
expect { @yc.installed_version("zip") }.not_to raise_error
|
1956
|
-
expect { @yc.installed_version("zip", "i386") }.not_to raise_error
|
1957
|
-
expect { @yc.installed_version("zip", "i386", "extra") }.to raise_error(ArgumentError)
|
1958
|
-
end
|
1959
|
-
|
1960
|
-
it "should return version-release for matching package regardless of arch" do
|
1961
|
-
expect(@yc.installed_version("zip", "x86_64")).to eq("2.31-2.el5")
|
1962
|
-
expect(@yc.installed_version("zip", nil)).to eq("2.31-2.el5")
|
1963
|
-
end
|
1964
|
-
|
1965
|
-
it "should return version-release for matching package and arch" do
|
1966
|
-
expect(@yc.installed_version("zip", "x86_64")).to eq("2.31-2.el5")
|
1967
|
-
expect(@yc.installed_version("zisofs-tools", "i386")).to eq(nil)
|
1968
|
-
end
|
1969
|
-
|
1970
|
-
it "should return nil for an unmatched package" do
|
1971
|
-
expect(@yc.installed_version(nil, nil)).to eq(nil)
|
1972
|
-
expect(@yc.installed_version("test1", nil)).to eq(nil)
|
1973
|
-
expect(@yc.installed_version("test2", "x86_64")).to eq(nil)
|
1974
|
-
end
|
1975
|
-
end
|
1976
|
-
|
1977
|
-
describe "available_version" do
|
1978
|
-
it "should take one or two arguments" do
|
1979
|
-
expect { @yc.available_version("zisofs-tools") }.not_to raise_error
|
1980
|
-
expect { @yc.available_version("zisofs-tools", "i386") }.not_to raise_error
|
1981
|
-
expect { @yc.available_version("zisofs-tools", "i386", "extra") }.to raise_error(ArgumentError)
|
1982
|
-
end
|
1983
|
-
|
1984
|
-
it "should return version-release for matching package regardless of arch" do
|
1985
|
-
expect(@yc.available_version("zip", "x86_64")).to eq("2.31-2.el5")
|
1986
|
-
expect(@yc.available_version("zip", nil)).to eq("2.31-2.el5")
|
1987
|
-
end
|
1988
|
-
|
1989
|
-
it "should return version-release for matching package and arch" do
|
1990
|
-
expect(@yc.available_version("zip", "x86_64")).to eq("2.31-2.el5")
|
1991
|
-
expect(@yc.available_version("zisofs-tools", "i386")).to eq(nil)
|
1992
|
-
end
|
1993
|
-
|
1994
|
-
it "should return nil for an unmatched package" do
|
1995
|
-
expect(@yc.available_version(nil, nil)).to eq(nil)
|
1996
|
-
expect(@yc.available_version("test1", nil)).to eq(nil)
|
1997
|
-
expect(@yc.available_version("test2", "x86_64")).to eq(nil)
|
1998
|
-
end
|
1999
|
-
end
|
2000
|
-
|
2001
|
-
describe "version_available?" do
|
2002
|
-
it "should take two or three arguments" do
|
2003
|
-
expect { @yc.version_available?("zisofs-tools") }.to raise_error(ArgumentError)
|
2004
|
-
expect { @yc.version_available?("zisofs-tools", "1.0.6-3.2.2") }.not_to raise_error
|
2005
|
-
expect { @yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "x86_64") }.not_to raise_error
|
2006
|
-
end
|
2007
|
-
|
2008
|
-
it "should return true if our package-version-arch is available" do
|
2009
|
-
expect(@yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "x86_64")).to eq(true)
|
2010
|
-
end
|
2011
|
-
|
2012
|
-
it "should return true if our package-version, no arch, is available" do
|
2013
|
-
expect(@yc.version_available?("zisofs-tools", "1.0.6-3.2.2", nil)).to eq(true)
|
2014
|
-
expect(@yc.version_available?("zisofs-tools", "1.0.6-3.2.2")).to eq(true)
|
2015
|
-
end
|
2016
|
-
|
2017
|
-
it "should return false if our package-version-arch isn't available" do
|
2018
|
-
expect(@yc.version_available?("zisofs-tools", "1.0.6-3.2.2", "pretend")).to eq(false)
|
2019
|
-
expect(@yc.version_available?("zisofs-tools", "pretend", "x86_64")).to eq(false)
|
2020
|
-
expect(@yc.version_available?("pretend", "1.0.6-3.2.2", "x86_64")).to eq(false)
|
2021
|
-
end
|
2022
|
-
|
2023
|
-
it "should return false if our package-version, no arch, isn't available" do
|
2024
|
-
expect(@yc.version_available?("zisofs-tools", "pretend", nil)).to eq(false)
|
2025
|
-
expect(@yc.version_available?("zisofs-tools", "pretend")).to eq(false)
|
2026
|
-
expect(@yc.version_available?("pretend", "1.0.6-3.2.2")).to eq(false)
|
2027
|
-
end
|
2028
|
-
end
|
2029
|
-
|
2030
|
-
describe "package_repository" do
|
2031
|
-
it "should take two or three arguments" do
|
2032
|
-
expect { @yc.package_repository("zisofs-tools") }.to raise_error(ArgumentError)
|
2033
|
-
expect { @yc.package_repository("zisofs-tools", "1.0.6-3.2.2") }.not_to raise_error
|
2034
|
-
expect { @yc.package_repository("zisofs-tools", "1.0.6-3.2.2", "x86_64") }.not_to raise_error
|
2035
|
-
end
|
2036
|
-
|
2037
|
-
it "should return repoid for package-version-arch" do
|
2038
|
-
expect(@yc.package_repository("zlib-devel", "1.2.3-3", "i386")).to eq("extras")
|
2039
|
-
expect(@yc.package_repository("zlib-devel", "1.2.3-3", "x86_64")).to eq("base")
|
2040
|
-
end
|
2041
|
-
|
2042
|
-
it "should return repoid for package-version, no arch" do
|
2043
|
-
expect(@yc.package_repository("zisofs-tools", "1.0.6-3.2.2", nil)).to eq("extras")
|
2044
|
-
expect(@yc.package_repository("zisofs-tools", "1.0.6-3.2.2")).to eq("extras")
|
2045
|
-
end
|
2046
|
-
|
2047
|
-
it "should return nil when no match for package-version-arch" do
|
2048
|
-
expect(@yc.package_repository("zisofs-tools", "1.0.6-3.2.2", "pretend")).to eq(nil)
|
2049
|
-
expect(@yc.package_repository("zisofs-tools", "pretend", "x86_64")).to eq(nil)
|
2050
|
-
expect(@yc.package_repository("pretend", "1.0.6-3.2.2", "x86_64")).to eq(nil)
|
2051
|
-
end
|
2052
|
-
|
2053
|
-
it "should return nil when no match for package-version, no arch" do
|
2054
|
-
expect(@yc.package_repository("zisofs-tools", "pretend", nil)).to eq(nil)
|
2055
|
-
expect(@yc.package_repository("zisofs-tools", "pretend")).to eq(nil)
|
2056
|
-
expect(@yc.package_repository("pretend", "1.0.6-3.2.2")).to eq(nil)
|
2057
|
-
end
|
2058
|
-
end
|
2059
|
-
|
2060
|
-
describe "reset" do
|
2061
|
-
it "should empty the installed and available packages RPMDb" do
|
2062
|
-
expect(@yc.available_version("zip", "x86_64")).to eq("2.31-2.el5")
|
2063
|
-
expect(@yc.installed_version("zip", "x86_64")).to eq("2.31-2.el5")
|
2064
|
-
@yc.reset
|
2065
|
-
expect(@yc.available_version("zip", "x86_64")).to eq(nil)
|
2066
|
-
expect(@yc.installed_version("zip", "x86_64")).to eq(nil)
|
2067
|
-
end
|
2068
|
-
end
|
2069
|
-
|
2070
|
-
describe "package_available?" do
|
2071
|
-
it "should return true a package name is available" do
|
2072
|
-
expect(@yc.package_available?("zisofs-tools")).to eq(true)
|
2073
|
-
expect(@yc.package_available?("moo")).to eq(false)
|
2074
|
-
expect(@yc.package_available?(nil)).to eq(false)
|
2075
|
-
end
|
2076
|
-
|
2077
|
-
it "should return true a package name + arch is available" do
|
2078
|
-
expect(@yc.package_available?("zlib-devel.i386")).to eq(true)
|
2079
|
-
expect(@yc.package_available?("zisofs-tools.x86_64")).to eq(true)
|
2080
|
-
expect(@yc.package_available?("znc-test.beta1.x86_64")).to eq(true)
|
2081
|
-
expect(@yc.package_available?("znc-test.beta1")).to eq(true)
|
2082
|
-
expect(@yc.package_available?("znc-test.test.beta1")).to eq(true)
|
2083
|
-
expect(@yc.package_available?("moo.i386")).to eq(false)
|
2084
|
-
expect(@yc.package_available?("zisofs-tools.beta")).to eq(false)
|
2085
|
-
expect(@yc.package_available?("znc-test.test")).to eq(false)
|
2086
|
-
end
|
2087
|
-
end
|
2088
|
-
|
2089
|
-
describe "enable_extra_repo_control" do
|
2090
|
-
it "should set @extra_repo_control to arg" do
|
2091
|
-
@yc.enable_extra_repo_control("--enablerepo=test")
|
2092
|
-
expect(@yc.extra_repo_control).to eq("--enablerepo=test")
|
2093
|
-
end
|
2094
|
-
|
2095
|
-
it "should call reload once when set to flag cache for update" do
|
2096
|
-
expect(@yc).to receive(:reload).once
|
2097
|
-
@yc.enable_extra_repo_control("--enablerepo=test")
|
2098
|
-
@yc.enable_extra_repo_control("--enablerepo=test")
|
2099
|
-
end
|
2100
|
-
end
|
2101
|
-
|
2102
|
-
describe "disable_extra_repo_control" do
|
2103
|
-
it "should set @extra_repo_control to nil" do
|
2104
|
-
@yc.enable_extra_repo_control("--enablerepo=test")
|
2105
|
-
@yc.disable_extra_repo_control
|
2106
|
-
expect(@yc.extra_repo_control).to eq(nil)
|
2107
|
-
end
|
2108
|
-
|
2109
|
-
it "should call reload once when cleared to flag cache for update" do
|
2110
|
-
expect(@yc).to receive(:reload).once
|
2111
|
-
@yc.enable_extra_repo_control("--enablerepo=test")
|
2112
|
-
expect(@yc).to receive(:reload).once
|
2113
|
-
@yc.disable_extra_repo_control
|
2114
|
-
@yc.disable_extra_repo_control
|
2115
|
-
end
|
2116
|
-
end
|
2117
|
-
|
2118
|
-
end
|
2119
|
-
|
2120
|
-
describe "Chef::Provider::Package::Yum - Multi" do
|
2121
|
-
before(:each) do
|
2122
|
-
@node = Chef::Node.new
|
2123
|
-
@events = Chef::EventDispatch::Dispatcher.new
|
2124
|
-
@run_context = Chef::RunContext.new(@node, {}, @events)
|
2125
|
-
@new_resource = Chef::Resource::YumPackage.new(%w{cups vim})
|
2126
|
-
@status = double("Status", :exitstatus => 0)
|
2127
|
-
@yum_cache = double(
|
2128
|
-
"Chef::Provider::Yum::YumCache",
|
2129
|
-
:reload_installed => true,
|
2130
|
-
:reset => true,
|
2131
|
-
:installed_version => "XXXX",
|
2132
|
-
:candidate_version => "YYYY",
|
2133
|
-
:package_available? => true,
|
2134
|
-
:version_available? => true,
|
2135
|
-
:allow_multi_install => [ "kernel" ],
|
2136
|
-
:package_repository => "base",
|
2137
|
-
:disable_extra_repo_control => true
|
2138
|
-
)
|
2139
|
-
allow(Chef::Provider::Package::Yum::YumCache).to receive(:instance).and_return(@yum_cache)
|
2140
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
2141
|
-
allow(@yum_cache).to receive(:yum_binary=).with("yum")
|
2142
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
2143
|
-
@pid = double("PID")
|
2144
|
-
end
|
2145
|
-
|
2146
|
-
describe "when evaluating the correctness of the resource" do
|
2147
|
-
it "raises an error if the array lengths of package name, arch, and version do not match up" do
|
2148
|
-
@new_resource.version(["1.1"])
|
2149
|
-
@new_resource.arch(%w{x86_64 i386 i686})
|
2150
|
-
expect { @provider.check_resource_semantics! }.to raise_error(Chef::Exceptions::InvalidResourceSpecification)
|
2151
|
-
end
|
2152
|
-
end
|
2153
|
-
|
2154
|
-
describe "when loading the current system state" do
|
2155
|
-
it "should create a current resource with the name of the new_resource" do
|
2156
|
-
@provider.load_current_resource
|
2157
|
-
expect(@provider.current_resource.name).to eq("cups, vim")
|
2158
|
-
end
|
2159
|
-
|
2160
|
-
it "should set the current resources package name to the new resources package name" do
|
2161
|
-
@provider.load_current_resource
|
2162
|
-
expect(@provider.current_resource.package_name).to eq(%w{cups vim})
|
2163
|
-
end
|
2164
|
-
|
2165
|
-
it "should set the installed version to nil on the current resource if no installed package" do
|
2166
|
-
allow(@yum_cache).to receive(:installed_version).and_return(nil)
|
2167
|
-
@provider.load_current_resource
|
2168
|
-
expect(@provider.current_resource.version).to eq([nil, nil])
|
2169
|
-
end
|
2170
|
-
|
2171
|
-
it "should set the installed version if yum has one" do
|
2172
|
-
allow(@yum_cache).to receive(:installed_version).with("cups", nil).and_return("1.2.4-11.18.el5")
|
2173
|
-
allow(@yum_cache).to receive(:installed_version).with("vim", nil).and_return("1.0")
|
2174
|
-
allow(@yum_cache).to receive(:candidate_version).with("cups", nil).and_return("1.2.4-11.18.el5_2.3")
|
2175
|
-
allow(@yum_cache).to receive(:candidate_version).with("vim", nil).and_return("1.5")
|
2176
|
-
@provider.load_current_resource
|
2177
|
-
expect(@provider.current_resource.version).to eq(["1.2.4-11.18.el5", "1.0"])
|
2178
|
-
end
|
2179
|
-
|
2180
|
-
it "should set the candidate version if yum info has one" do
|
2181
|
-
allow(@yum_cache).to receive(:installed_version).with("cups", nil).and_return("1.2.4-11.18.el5")
|
2182
|
-
allow(@yum_cache).to receive(:installed_version).with("vim", nil).and_return("1.0")
|
2183
|
-
allow(@yum_cache).to receive(:candidate_version).with("cups", nil).and_return("1.2.4-11.18.el5_2.3")
|
2184
|
-
allow(@yum_cache).to receive(:candidate_version).with("vim", nil).and_return("1.5")
|
2185
|
-
@provider.load_current_resource
|
2186
|
-
expect(@provider.candidate_version).to eql(["1.2.4-11.18.el5_2.3", "1.5"])
|
2187
|
-
end
|
2188
|
-
|
2189
|
-
it "should return the current resouce" do
|
2190
|
-
expect(@provider.load_current_resource).to eql(@provider.current_resource)
|
2191
|
-
end
|
2192
|
-
|
2193
|
-
describe "when version constraint in package_name" do
|
2194
|
-
it "should set package_version if no existing package_name is found and new_package_name is available" do
|
2195
|
-
@new_resource = Chef::Resource::YumPackage.new(["cups = 1.2.4-11.18.el5_2.3", "emacs = 24.4"])
|
2196
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
2197
|
-
allow(@yum_cache).to receive(:package_available?) { |pkg| %w{cups emacs}.include?(pkg) ? true : false }
|
2198
|
-
allow(@yum_cache).to receive(:candidate_version) do |pkg|
|
2199
|
-
if pkg == "cups"
|
2200
|
-
"1.2.4-11.18.el5_2.3"
|
2201
|
-
elsif pkg == "emacs"
|
2202
|
-
"24.4"
|
2203
|
-
end
|
2204
|
-
end
|
2205
|
-
allow(@yum_cache).to receive(:packages_from_require) do |pkg|
|
2206
|
-
if pkg.name == "cups"
|
2207
|
-
[Chef::Provider::Package::Yum::RPMDbPackage.new("cups", "1.2.4-11.18.el5_2.3", "noarch", [], false, true, "base")]
|
2208
|
-
elsif pkg.name == "emacs"
|
2209
|
-
[Chef::Provider::Package::Yum::RPMDbPackage.new("emacs", "24.4", "noarch", [], false, true, "base")]
|
2210
|
-
end
|
2211
|
-
end
|
2212
|
-
expect(Chef::Log).to receive(:debug).exactly(2).times.with(%r{matched 1 package,})
|
2213
|
-
expect(Chef::Log).to receive(:debug).exactly(1).times.with(%r{candidate version: 1.2.4-11.18.el5_2.3})
|
2214
|
-
expect(Chef::Log).to receive(:debug).exactly(1).times.with(%r{candidate version: 24.4})
|
2215
|
-
expect(Chef::Log).to receive(:debug).at_least(2).times.with(%r{checking yum info})
|
2216
|
-
@provider.load_current_resource
|
2217
|
-
expect(@provider.new_resource.package_name).to eq(%w{cups emacs})
|
2218
|
-
expect(@provider.new_resource.version).to eq(["1.2.4-11.18.el5_2.3", "24.4"])
|
2219
|
-
expect(@provider.send(:package_name_array)).to eq(%w{cups emacs})
|
2220
|
-
expect(@provider.send(:new_version_array)).to eq(["1.2.4-11.18.el5_2.3", "24.4"])
|
2221
|
-
end
|
2222
|
-
end
|
2223
|
-
end
|
2224
|
-
|
2225
|
-
describe "when installing a package" do
|
2226
|
-
it "should run yum install with the package name and version" do
|
2227
|
-
@provider.load_current_resource
|
2228
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
2229
|
-
allow(@yum_cache).to receive(:installed_version).with("cups", nil).and_return("1.2.4-11.18.el5")
|
2230
|
-
allow(@yum_cache).to receive(:installed_version).with("vim", nil).and_return("0.9")
|
2231
|
-
expect(@provider).to receive(:yum_command).with(
|
2232
|
-
"-d0 -e0 -y install cups-1.2.4-11.19.el5 vim-1.0"
|
2233
|
-
)
|
2234
|
-
@provider.install_package(%w{cups vim}, ["1.2.4-11.19.el5", "1.0"])
|
2235
|
-
end
|
2236
|
-
|
2237
|
-
it "should not run yum install with nil package name" do
|
2238
|
-
@provider.load_current_resource
|
2239
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
2240
|
-
expect(@provider).to receive(:yum_command).with(
|
2241
|
-
"-d0 -e0 -y install cups-1.2.4-11.19.el5"
|
2242
|
-
)
|
2243
|
-
@provider.install_package(["cups", nil], ["1.2.4-11.19.el5", nil])
|
2244
|
-
end
|
2245
|
-
|
2246
|
-
it "should run yum install with the package name, version and arch" do
|
2247
|
-
@provider.load_current_resource
|
2248
|
-
@new_resource.arch(%w{i386 i386})
|
2249
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
2250
|
-
expect(@provider).to receive(:yum_command).with(
|
2251
|
-
"-d0 -e0 -y install cups-1.2.4-11.19.el5.i386 vim-1.0.i386"
|
2252
|
-
)
|
2253
|
-
@provider.install_package(%w{cups vim}, ["1.2.4-11.19.el5", "1.0"])
|
2254
|
-
end
|
2255
|
-
|
2256
|
-
it "installs the package with the options given in the resource" do
|
2257
|
-
@provider.load_current_resource
|
2258
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
2259
|
-
allow(@yum_cache).to receive(:installed_version).with("cups", nil).and_return("1.2.4-11.18.el5")
|
2260
|
-
allow(@yum_cache).to receive(:installed_version).with("vim", nil).and_return("0.9")
|
2261
|
-
expect(@provider).to receive(:yum_command).with(
|
2262
|
-
"-d0 -e0 -y --disablerepo epmd install cups-1.2.4-11.19.el5 vim-1.0"
|
2263
|
-
)
|
2264
|
-
@new_resource.options("--disablerepo epmd")
|
2265
|
-
@provider.install_package(%w{cups vim}, ["1.2.4-11.19.el5", "1.0"])
|
2266
|
-
end
|
2267
|
-
|
2268
|
-
it "should run yum install with the package name and version when name has arch" do
|
2269
|
-
@new_resource = Chef::Resource::YumPackage.new(["cups.x86_64", "vim"])
|
2270
|
-
@provider = Chef::Provider::Package::Yum.new(@new_resource, @run_context)
|
2271
|
-
allow(Chef::Provider::Package::Yum::RPMUtils).to receive(:rpmvercmp).and_return(-1)
|
2272
|
-
|
2273
|
-
# Inside of load_current_resource() we'll call parse_arch for cups,
|
2274
|
-
# and we need to craft the right response. The default mock setup above
|
2275
|
-
# will just return valid versions all the time which won't work for this
|
2276
|
-
# test.
|
2277
|
-
allow(@yum_cache).to receive(:installed_version).with("cups", "x86_64").and_return("XXXX")
|
2278
|
-
allow(@yum_cache).to receive(:candidate_version).with("cups", "x86_64").and_return("1.2.4-11.18.el5")
|
2279
|
-
allow(@yum_cache).to receive(:installed_version).with("cups.x86_64").and_return(nil)
|
2280
|
-
allow(@yum_cache).to receive(:candidate_version).with("cups.x86_64").and_return(nil)
|
2281
|
-
|
2282
|
-
# Normal mock's for the idempotency check
|
2283
|
-
allow(@yum_cache).to receive(:installed_version).with("cups", nil).and_return("1.2.4-11.18.el5")
|
2284
|
-
allow(@yum_cache).to receive(:installed_version).with("vim", nil).and_return("0.9")
|
2285
|
-
|
2286
|
-
@provider.load_current_resource
|
2287
|
-
expect(@provider).to receive(:yum_command).with(
|
2288
|
-
"-d0 -e0 -y install cups-1.2.4-11.19.el5.x86_64 vim-1.0"
|
2289
|
-
)
|
2290
|
-
@provider.install_package(%w{cups vim}, ["1.2.4-11.19.el5", "1.0"])
|
2291
|
-
end
|
2292
|
-
|
2293
|
-
end
|
2294
|
-
end
|