chef 15.11.3-universal-mingw32 → 16.1.16-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/Gemfile +3 -7
- data/README.md +1 -1
- data/Rakefile +44 -16
- data/chef.gemspec +6 -4
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +18 -1
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +38 -3
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +3 -2
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -4
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +84 -90
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
- data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -31
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +2 -3
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_rescind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +16 -2
- data/lib/chef/mixin/shell_out.rb +1 -5
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +5 -31
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +24 -6
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -9
- data/lib/chef/provider/file.rb +6 -6
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +45 -64
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +5 -6
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +107 -43
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/msu.rb +4 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/portage.rb +1 -0
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +30 -3
- data/lib/chef/provider/package/windows.rb +29 -53
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +1 -9
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +5 -11
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +5 -5
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +30 -28
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/mac.rb +20 -15
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +10 -10
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +44 -57
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +210 -0
- data/lib/chef/resource/apt_package.rb +33 -3
- data/lib/chef/resource/apt_preference.rb +103 -7
- data/lib/chef/resource/apt_repository.rb +357 -18
- data/lib/chef/resource/apt_update.rb +58 -5
- data/lib/chef/resource/archive_file.rb +6 -5
- data/lib/chef/resource/bash.rb +3 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +10 -2
- data/lib/chef/resource/breakpoint.rb +1 -2
- data/lib/chef/resource/build_essential.rb +49 -51
- data/lib/chef/resource/cab_package.rb +9 -2
- data/lib/chef/resource/chef_client_cron.rb +228 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
- data/lib/chef/resource/chef_gem.rb +15 -18
- data/lib/chef/resource/chef_handler.rb +5 -4
- data/lib/chef/resource/chef_sleep.rb +7 -5
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +8 -4
- data/lib/chef/resource/chocolatey_feature.rb +7 -4
- data/lib/chef/resource/chocolatey_package.rb +7 -4
- data/lib/chef/resource/chocolatey_source.rb +7 -4
- data/lib/chef/resource/cookbook_file.rb +4 -3
- data/lib/chef/resource/cron.rb +34 -80
- data/lib/chef/resource/cron_access.rb +10 -6
- data/lib/chef/resource/cron_d.rb +44 -95
- data/lib/chef/resource/csh.rb +3 -1
- data/lib/chef/resource/directory.rb +3 -3
- data/lib/chef/resource/dmg_package.rb +22 -19
- data/lib/chef/resource/dnf_package.rb +3 -4
- data/lib/chef/resource/dpkg_package.rb +3 -2
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +15 -14
- data/lib/chef/resource/file.rb +14 -9
- data/lib/chef/resource/freebsd_package.rb +3 -2
- data/lib/chef/resource/gem_package.rb +19 -11
- data/lib/chef/resource/group.rb +5 -2
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +3 -2
- data/lib/chef/resource/homebrew_package.rb +5 -3
- data/lib/chef/resource/homebrew_tap.rb +3 -2
- data/lib/chef/resource/hostname.rb +26 -20
- data/lib/chef/resource/http_request.rb +1 -2
- data/lib/chef/resource/ifconfig.rb +8 -8
- data/lib/chef/resource/ips_package.rb +11 -3
- data/lib/chef/resource/kernel_module.rb +30 -30
- data/lib/chef/resource/ksh.rb +3 -1
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/link.rb +5 -27
- data/lib/chef/resource/locale.rb +60 -26
- data/lib/chef/resource/log.rb +13 -2
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +18 -10
- data/lib/chef/resource/macosx_service.rb +3 -2
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +63 -3
- data/lib/chef/resource/mount.rb +4 -1
- data/lib/chef/resource/msu_package.rb +19 -2
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +20 -4
- data/lib/chef/resource/ohai_hint.rb +4 -13
- data/lib/chef/resource/openbsd_package.rb +10 -2
- data/lib/chef/resource/openssl_dhparam.rb +11 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
- data/lib/chef/resource/openssl_x509_crl.rb +13 -2
- data/lib/chef/resource/openssl_x509_request.rb +38 -2
- data/lib/chef/resource/osx_profile.rb +4 -3
- data/lib/chef/resource/package.rb +3 -2
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +13 -4
- data/lib/chef/resource/perl.rb +3 -1
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +14 -4
- data/lib/chef/resource/powershell_package.rb +2 -4
- data/lib/chef/resource/powershell_package_source.rb +4 -2
- data/lib/chef/resource/powershell_script.rb +8 -18
- data/lib/chef/resource/python.rb +3 -1
- data/lib/chef/resource/reboot.rb +1 -2
- data/lib/chef/resource/registry_key.rb +2 -3
- data/lib/chef/resource/remote_directory.rb +3 -1
- data/lib/chef/resource/remote_file.rb +3 -2
- data/lib/chef/resource/rhsm_errata.rb +1 -4
- data/lib/chef/resource/rhsm_errata_level.rb +1 -2
- data/lib/chef/resource/rhsm_register.rb +3 -3
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -4
- data/lib/chef/resource/route.rb +6 -2
- data/lib/chef/resource/rpm_package.rb +13 -3
- data/lib/chef/resource/ruby.rb +3 -1
- data/lib/chef/resource/ruby_block.rb +2 -5
- data/lib/chef/resource/scm/_scm.rb +49 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
- data/lib/chef/resource/script.rb +7 -4
- data/lib/chef/resource/service.rb +7 -8
- data/lib/chef/resource/smartos_package.rb +10 -2
- data/lib/chef/resource/snap_package.rb +4 -2
- data/lib/chef/resource/solaris_package.rb +10 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +11 -11
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +7 -5
- data/lib/chef/resource/sysctl.rb +63 -4
- data/lib/chef/resource/systemd_unit.rb +6 -4
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +8 -19
- data/lib/chef/resource/user.rb +3 -5
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +116 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +20 -7
- data/lib/chef/resource/windows_auto_run.rb +2 -3
- data/lib/chef/resource/windows_certificate.rb +3 -3
- data/lib/chef/resource/windows_dfs_folder.rb +1 -2
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
- data/lib/chef/resource/windows_dfs_server.rb +2 -3
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +12 -4
- data/lib/chef/resource/windows_feature.rb +59 -4
- data/lib/chef/resource/windows_feature_dism.rb +24 -24
- data/lib/chef/resource/windows_feature_powershell.rb +44 -78
- data/lib/chef/resource/windows_firewall_rule.rb +121 -8
- data/lib/chef/resource/windows_font.rb +10 -2
- data/lib/chef/resource/windows_package.rb +76 -7
- data/lib/chef/resource/windows_pagefile.rb +31 -4
- data/lib/chef/resource/windows_path.rb +18 -2
- data/lib/chef/resource/windows_printer.rb +26 -7
- data/lib/chef/resource/windows_printer_port.rb +29 -2
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +119 -0
- data/lib/chef/resource/windows_service.rb +46 -32
- data/lib/chef/resource/windows_share.rb +22 -6
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +129 -16
- data/lib/chef/resource/windows_uac.rb +20 -2
- data/lib/chef/resource/windows_user_privilege.rb +199 -0
- data/lib/chef/resource/windows_workgroup.rb +19 -4
- data/lib/chef/resource/yum_package.rb +91 -7
- data/lib/chef/resource/yum_repository.rb +30 -12
- data/lib/chef/resource/zypper_package.rb +32 -5
- data/lib/chef/resource/zypper_repository.rb +19 -6
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +3 -2
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/shell.rb +22 -0
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +1 -9
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/security.rb +40 -2
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +23 -19
- data/spec/functional/resource/cron_spec.rb +10 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/msu_package_spec.rb +5 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -4
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -1
- data/spec/functional/shell_spec.rb +1 -1
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +34 -6
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +49 -20
- data/spec/integration/recipes/notifying_block_spec.rb +8 -5
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
- data/spec/integration/recipes/resource_load_spec.rb +133 -12
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/spec_helper.rb +18 -3
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +2 -20
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -16
- data/spec/support/shared/integration/knife_support.rb +9 -6
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_collector_spec.rb +39 -18
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +20 -38
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/ssh_spec.rb +8 -111
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/node/attribute_spec.rb +3 -3
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +12 -9
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +34 -36
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +41 -1
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +3 -2
- data/spec/unit/provider/package/rubygems_spec.rb +211 -26
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/debian_service_spec.rb +34 -13
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +17 -17
- data/spec/unit/provider_resolver_spec.rb +4 -4
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/msu_package_spec.rb +4 -0
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -0
- data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +14 -0
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource_reporter_spec.rb +2 -6
- data/spec/unit/resource_spec.rb +10 -3
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/win32/registry_spec.rb +1 -1
- data/tasks/rspec.rb +6 -14
- metadata +92 -37
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -15,179 +15,97 @@
|
|
15
15
|
# See the License for the specific language governing permissions and
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
|
-
|
19
18
|
require "spec_helper"
|
20
19
|
|
21
|
-
|
20
|
+
def create_provider_for(name)
|
21
|
+
@new_resource = Chef::Resource::Package.new(name)
|
22
|
+
provider = Chef::Provider::Package::Pacman.new(@new_resource, @run_context)
|
23
|
+
allow(provider).to receive(:shell_out_compacted).and_return(@status)
|
24
|
+
provider
|
25
|
+
end
|
26
|
+
|
27
|
+
RSpec.shared_examples "current_resource" do |pkg, version, candidate|
|
28
|
+
let(:current_resource) { @provider.load_current_resource }
|
22
29
|
before(:each) do
|
23
|
-
@
|
24
|
-
@events = Chef::EventDispatch::Dispatcher.new
|
25
|
-
@run_context = Chef::RunContext.new(@node, {}, @events)
|
26
|
-
@new_resource = Chef::Resource::Package.new("nano")
|
27
|
-
@current_resource = Chef::Resource::Package.new("nano")
|
28
|
-
|
29
|
-
@status = double(stdout: "", exitstatus: 0)
|
30
|
-
@provider = Chef::Provider::Package::Pacman.new(@new_resource, @run_context)
|
31
|
-
allow(Chef::Resource::Package).to receive(:new).and_return(@current_resource)
|
32
|
-
|
33
|
-
allow(@provider).to receive(:shell_out_compacted).and_return(@status)
|
34
|
-
@stdin = StringIO.new
|
35
|
-
@stdout = StringIO.new(<<~ERR)
|
36
|
-
error: package "nano" not found
|
37
|
-
ERR
|
38
|
-
@stderr = StringIO.new
|
39
|
-
@pid = 2342
|
30
|
+
@provider = create_provider_for(pkg)
|
40
31
|
end
|
41
32
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
@provider.load_current_resource
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should set the current resources package name to the new resources package name" do
|
49
|
-
expect(@current_resource).to receive(:package_name).with(@new_resource.package_name)
|
50
|
-
@provider.load_current_resource
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should run pacman query with the package name" do
|
54
|
-
expect(@provider).to receive(:shell_out_compacted).with("pacman", "-Qi", @new_resource.package_name, { timeout: 900 }).and_return(@status)
|
55
|
-
@provider.load_current_resource
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should read stdout on pacman" do
|
59
|
-
allow(@provider).to receive(:shell_out_compacted).and_return(@status)
|
60
|
-
@provider.load_current_resource
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should set the installed version to nil on the current resource if pacman installed version not exists" do
|
64
|
-
allow(@provider).to receive(:shell_out_compacted).and_return(@status)
|
65
|
-
@provider.load_current_resource
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should set the installed version if pacman has one" do
|
69
|
-
stdout = <<~PACMAN
|
70
|
-
Name : nano
|
71
|
-
Version : 2.2.2-1
|
72
|
-
URL : http://www.nano-editor.org
|
73
|
-
Licenses : GPL
|
74
|
-
Groups : base
|
75
|
-
Provides : None
|
76
|
-
Depends On : glibc ncurses
|
77
|
-
Optional Deps : None
|
78
|
-
Required By : None
|
79
|
-
Conflicts With : None
|
80
|
-
Replaces : None
|
81
|
-
Installed Size : 1496.00 K
|
82
|
-
Packager : Andreas Radke <andyrtr@archlinux.org>
|
83
|
-
Architecture : i686
|
84
|
-
Build Date : Mon 18 Jan 2010 06:16:16 PM CET
|
85
|
-
Install Date : Mon 01 Feb 2010 10:06:30 PM CET
|
86
|
-
Install Reason : Explicitly installed
|
87
|
-
Install Script : Yes
|
88
|
-
Description : Pico editor clone with enhancements
|
89
|
-
PACMAN
|
90
|
-
|
91
|
-
status = double(stdout: stdout, exitstatus: 0)
|
92
|
-
allow(@provider).to receive(:shell_out_compacted).and_return(status)
|
93
|
-
@provider.load_current_resource
|
94
|
-
expect(@current_resource.version).to eq("2.2.2-1")
|
95
|
-
end
|
96
|
-
|
97
|
-
it "should set the candidate version if pacman has one" do
|
98
|
-
status = double(stdout: "core nano 2.2.3-1", exitstatus: 0)
|
99
|
-
allow(@provider).to receive(:shell_out_compacted).and_return(status)
|
100
|
-
@provider.load_current_resource
|
101
|
-
expect(@provider.candidate_version).to eql("2.2.3-1")
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should use pacman.conf to determine valid repo names for package versions" do
|
105
|
-
@pacman_conf = <<~PACMAN_CONF
|
106
|
-
[options]
|
107
|
-
HoldPkg = pacman glibc
|
108
|
-
Architecture = auto
|
33
|
+
it "sets current_resource name" do
|
34
|
+
expect(current_resource.package_name).to eql(pkg)
|
35
|
+
end
|
109
36
|
|
110
|
-
|
111
|
-
|
37
|
+
it "sets current_resource version" do
|
38
|
+
expect(current_resource.version).to eql(version)
|
39
|
+
end
|
112
40
|
|
113
|
-
|
114
|
-
|
41
|
+
it "sets candidate version" do
|
42
|
+
current_resource
|
43
|
+
expect(@provider.candidate_version).to eql(candidate)
|
44
|
+
end
|
45
|
+
end
|
115
46
|
|
116
|
-
|
117
|
-
|
47
|
+
describe Chef::Provider::Package::Pacman do
|
48
|
+
before(:each) do
|
49
|
+
@node = Chef::Node.new
|
50
|
+
@events = Chef::EventDispatch::Dispatcher.new
|
51
|
+
@run_context = Chef::RunContext.new(@node, {}, @events)
|
52
|
+
@pacman_conf = <<~PACMAN_CONF
|
53
|
+
[options]
|
54
|
+
HoldPkg = pacman glibc
|
55
|
+
Architecture = auto
|
118
56
|
|
119
|
-
|
120
|
-
|
121
|
-
PACMAN_CONF
|
57
|
+
[customrepo]
|
58
|
+
Server = https://my.custom.repo
|
122
59
|
|
123
|
-
|
124
|
-
|
125
|
-
allow(::File).to receive(:read).with("/etc/pacman.conf").and_return(@pacman_conf)
|
126
|
-
allow(@provider).to receive(:shell_out_compacted).and_return(status)
|
60
|
+
[core]
|
61
|
+
Include = /etc/pacman.d/mirrorlist
|
127
62
|
|
128
|
-
|
129
|
-
|
130
|
-
end
|
63
|
+
[extra]
|
64
|
+
Include = /etc/pacman.d/mirrorlist
|
131
65
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
end
|
66
|
+
[community]
|
67
|
+
Include = /etc/pacman.d/mirrorlist
|
68
|
+
PACMAN_CONF
|
136
69
|
|
137
|
-
|
138
|
-
|
139
|
-
expect { @provider.load_current_resource }.not_to raise_error
|
140
|
-
end
|
70
|
+
allow(::File).to receive(:exist?).with("/etc/pacman.conf").and_return(true)
|
71
|
+
allow(::File).to receive(:read).with("/etc/pacman.conf").and_return(@pacman_conf)
|
141
72
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
73
|
+
pacman_out = <<~PACMAN_OUT
|
74
|
+
extra nano 3.450-1
|
75
|
+
extra emacs 0.12.0-1 [installed]
|
76
|
+
core sed 3.234-2 [installed: 3.234-1]
|
77
|
+
PACMAN_OUT
|
78
|
+
@status = double(stdout: pacman_out, exitstatus: 0)
|
146
79
|
|
147
|
-
it "should return the current resouce" do
|
148
|
-
expect(@provider.load_current_resource).to eql(@current_resource)
|
149
|
-
end
|
150
80
|
end
|
151
81
|
|
152
|
-
describe
|
153
|
-
it "should run pacman install with the package name and version" do
|
154
|
-
expect(@provider).to receive(:shell_out_compacted!).with("pacman", "--sync", "--noconfirm", "--noprogressbar", "nano", { timeout: 900 })
|
155
|
-
@provider.install_package("nano", "1.0")
|
156
|
-
end
|
157
|
-
|
158
|
-
it "should run pacman install with the package name and version and options if specified" do
|
159
|
-
expect(@provider).to receive(:shell_out_compacted!).with("pacman", "--sync", "--noconfirm", "--noprogressbar", "--debug", "nano", { timeout: 900 })
|
160
|
-
@new_resource.options("--debug")
|
82
|
+
describe "loading the current resource" do
|
161
83
|
|
162
|
-
|
84
|
+
describe "for an existing and installed but upgradable package" do
|
85
|
+
include_examples "current_resource", ["sed"], ["3.234-1"], ["3.234-2"]
|
163
86
|
end
|
164
|
-
end
|
165
87
|
|
166
|
-
|
167
|
-
|
168
|
-
expect(@provider).to receive(:install_package).with("nano", "1.0")
|
169
|
-
@provider.upgrade_package("nano", "1.0")
|
88
|
+
describe "for an existing and installed package" do
|
89
|
+
include_examples "current_resource", ["emacs"], ["0.12.0-1"], ["0.12.0-1"]
|
170
90
|
end
|
171
|
-
end
|
172
91
|
|
173
|
-
|
174
|
-
|
175
|
-
expect(@provider).to receive(:shell_out_compacted!).with("pacman", "--remove", "--noconfirm", "--noprogressbar", "nano", { timeout: 900 })
|
176
|
-
@provider.remove_package("nano", "1.0")
|
92
|
+
describe "for an existing non installed package" do
|
93
|
+
include_examples "current_resource", ["nano"], [nil], ["3.450-1"]
|
177
94
|
end
|
178
95
|
|
179
|
-
|
180
|
-
|
181
|
-
@new_resource.options("--debug")
|
182
|
-
|
183
|
-
@provider.remove_package("nano", "1.0")
|
96
|
+
describe "for a non existing and an upgradable package" do
|
97
|
+
include_examples "current_resource", %w{nano sed}, [nil, "3.234-1"], ["3.450-1", "3.234-2"]
|
184
98
|
end
|
185
|
-
end
|
186
99
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
100
|
+
describe "for a non existing package" do
|
101
|
+
let(:current_resource) { @provider.load_current_resource }
|
102
|
+
before(:each) do
|
103
|
+
@provider = create_provider_for("vim")
|
104
|
+
end
|
105
|
+
|
106
|
+
it "raises an error" do
|
107
|
+
expect { current_resource }.to raise_error(Chef::Exceptions::Package)
|
108
|
+
end
|
191
109
|
end
|
192
110
|
|
193
111
|
end
|
@@ -118,13 +118,13 @@ describe Chef::Provider::Package::Portage, "load_current_resource" do
|
|
118
118
|
expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package)
|
119
119
|
end
|
120
120
|
|
121
|
-
it "should find the candidate_version if a category is
|
121
|
+
it "should find the candidate_version if a category is specified and there are no duplicates" do
|
122
122
|
status = double(stdout: "dev-vcs/git-2.16.2", exitstatus: 0)
|
123
123
|
expect(@provider).to receive(:shell_out_compacted).and_return(status)
|
124
124
|
expect(@provider.candidate_version).to eq("2.16.2")
|
125
125
|
end
|
126
126
|
|
127
|
-
it "should find the candidate_version if a category is not
|
127
|
+
it "should find the candidate_version if a category is not specified and there are no duplicates" do
|
128
128
|
status = double(stdout: "dev-vcs/git-2.16.2", exitstatus: 0)
|
129
129
|
@provider = Chef::Provider::Package::Portage.new(@new_resource_without_category, @run_context)
|
130
130
|
expect(@provider).to receive(:shell_out_compacted).and_return(status)
|
@@ -19,7 +19,7 @@
|
|
19
19
|
require "spec_helper"
|
20
20
|
require "chef/mixin/powershell_out"
|
21
21
|
|
22
|
-
describe Chef::Provider::Package::Powershell do
|
22
|
+
describe Chef::Provider::Package::Powershell, :windows_only do
|
23
23
|
include Chef::Mixin::PowershellOut
|
24
24
|
let(:timeout) { 900 }
|
25
25
|
let(:source) { nil }
|
@@ -28,6 +28,7 @@ describe Chef::Provider::Package::Powershell do
|
|
28
28
|
|
29
29
|
let(:provider) do
|
30
30
|
node = Chef::Node.new
|
31
|
+
node.consume_external_attrs(OHAI_SYSTEM.data.dup, {})
|
31
32
|
events = Chef::EventDispatch::Dispatcher.new
|
32
33
|
run_context = Chef::RunContext.new(node, {}, events)
|
33
34
|
Chef::Provider::Package::Powershell.new(new_resource, run_context)
|
@@ -130,7 +131,7 @@ describe Chef::Provider::Package::Powershell do
|
|
130
131
|
expect(provider.candidate_version).to eql(["2.12.0.0"])
|
131
132
|
end
|
132
133
|
|
133
|
-
it "should set the candidate_version to the latest version when not pinning and package name is space
|
134
|
+
it "should set the candidate_version to the latest version when not pinning and package name is space separated" do
|
134
135
|
allow(provider).to receive(:powershell_out).with("( Find-Package '7-Zip 16.02 (x64)' -Force -ForceBootstrap ).Version", { timeout: new_resource.timeout }).and_return(package_7zip_available)
|
135
136
|
new_resource.package_name(["7-Zip 16.02 (x64)"])
|
136
137
|
new_resource.version(nil)
|
@@ -363,7 +363,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
363
363
|
let(:bindir) { "/usr/bin" }
|
364
364
|
let(:options) { nil }
|
365
365
|
let(:source) { nil }
|
366
|
-
let(:include_default_source) {
|
366
|
+
let(:include_default_source) { nil }
|
367
367
|
|
368
368
|
let(:new_resource) do
|
369
369
|
new_resource = Chef::Resource::GemPackage.new(gem_name)
|
@@ -585,7 +585,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
585
585
|
|
586
586
|
it "determines the candidate version by querying the remote gem servers" do
|
587
587
|
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
588
|
-
.with(gem_dep, source
|
588
|
+
.with(gem_dep, source)
|
589
589
|
.and_return(Gem::Version.new(target_version))
|
590
590
|
expect(provider.candidate_version).to eq(target_version)
|
591
591
|
end
|
@@ -605,7 +605,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
605
605
|
|
606
606
|
it "determines the candidate version by querying the remote gem servers" do
|
607
607
|
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
608
|
-
.with(gem_dep, *
|
608
|
+
.with(gem_dep, *source)
|
609
609
|
.and_return(Gem::Version.new(target_version))
|
610
610
|
expect(provider.candidate_version).to eq(target_version)
|
611
611
|
end
|
@@ -645,13 +645,13 @@ describe Chef::Provider::Package::Rubygems do
|
|
645
645
|
|
646
646
|
before do
|
647
647
|
expected_source = [ source ]
|
648
|
-
expected_source <<
|
648
|
+
expected_source << "https://rubygems.org" if provider.include_default_source?
|
649
649
|
allow(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, *expected_source.flatten.compact).and_return(version)
|
650
650
|
end
|
651
651
|
|
652
652
|
describe "in the current gem environment" do
|
653
653
|
it "installs the gem via the gems api when no explicit options are used" do
|
654
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [
|
654
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ "https://rubygems.org" ])
|
655
655
|
provider.run_action(:install)
|
656
656
|
expect(new_resource).to be_updated_by_last_action
|
657
657
|
end
|
@@ -660,7 +660,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
660
660
|
let(:source) { "http://gems.example.org" }
|
661
661
|
|
662
662
|
it "installs the gem via the gems api" do
|
663
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [source
|
663
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [source])
|
664
664
|
provider.run_action(:install)
|
665
665
|
expect(new_resource).to be_updated_by_last_action
|
666
666
|
end
|
@@ -691,7 +691,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
691
691
|
it "installs the gem via the gems api, when the package has no file separator characters in it, but a matching file exists in cwd" do
|
692
692
|
allow(::File).to receive(:exist?).and_return(true)
|
693
693
|
new_resource.package_name("rspec-core")
|
694
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [
|
694
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ "https://rubygems.org" ])
|
695
695
|
provider.run_action(:install)
|
696
696
|
expect(new_resource).to be_updated_by_last_action
|
697
697
|
end
|
@@ -700,14 +700,14 @@ describe Chef::Provider::Package::Rubygems do
|
|
700
700
|
let(:options) { "-i /alt/install/location" }
|
701
701
|
|
702
702
|
it "installs the gem by shelling out when options are provided as a String" do
|
703
|
-
expected = "gem install rspec-core -q --no-document -v \"#{target_version}\" --source=https://
|
703
|
+
expected = "gem install rspec-core -q --no-document -v \"#{target_version}\" --source=https://rubygems.org #{options}"
|
704
704
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
705
705
|
provider.run_action(:install)
|
706
706
|
expect(new_resource).to be_updated_by_last_action
|
707
707
|
end
|
708
708
|
|
709
709
|
it "unmockening needs_nodocument?" do
|
710
|
-
expected = "gem install rspec-core -q --no-document -v \"#{target_version}\" --source=https://
|
710
|
+
expected = "gem install rspec-core -q --no-document -v \"#{target_version}\" --source=https://rubygems.org #{options}"
|
711
711
|
expect(provider).to receive(:needs_nodocument?).and_call_original
|
712
712
|
stub_const("Gem::VERSION", "3.0.0")
|
713
713
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
@@ -716,7 +716,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
716
716
|
end
|
717
717
|
|
718
718
|
it "when the rubygems_version is old it uses the old flags" do
|
719
|
-
expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://
|
719
|
+
expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://rubygems.org #{options}"
|
720
720
|
expect(provider).to receive(:needs_nodocument?).and_call_original
|
721
721
|
stub_const("Gem::VERSION", "2.8.0")
|
722
722
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
@@ -728,10 +728,10 @@ describe Chef::Provider::Package::Rubygems do
|
|
728
728
|
context "when the Chef::Config[:rubygems_url] option is provided" do
|
729
729
|
let(:gem_binary) { "/foo/bar" }
|
730
730
|
|
731
|
-
it "installs the gem
|
731
|
+
it "installs the gem" do
|
732
732
|
Chef::Config[:rubygems_url] = "https://mirror1"
|
733
|
-
expect(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep,
|
734
|
-
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=https://mirror1"
|
733
|
+
expect(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, "https://mirror1").and_return(version)
|
734
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=https://mirror1"
|
735
735
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
736
736
|
provider.run_action(:install)
|
737
737
|
expect(new_resource).to be_updated_by_last_action
|
@@ -742,19 +742,30 @@ describe Chef::Provider::Package::Rubygems do
|
|
742
742
|
let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
|
743
743
|
let(:gem_binary) { "/foo/bar" }
|
744
744
|
|
745
|
-
it "installs the gem
|
746
|
-
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=#{source}
|
745
|
+
it "installs the gem" do
|
746
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=#{source}"
|
747
747
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
748
748
|
provider.run_action(:install)
|
749
749
|
expect(new_resource).to be_updated_by_last_action
|
750
750
|
end
|
751
751
|
|
752
|
+
context "with include_default_source true" do
|
753
|
+
let(:include_default_source) { true }
|
754
|
+
|
755
|
+
it "ignores the Chef::Config setting" do
|
756
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=#{source} --source=https://rubygems.org"
|
757
|
+
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
758
|
+
provider.run_action(:install)
|
759
|
+
expect(new_resource).to be_updated_by_last_action
|
760
|
+
end
|
761
|
+
end
|
762
|
+
|
752
763
|
context "with include_default_source false" do
|
753
764
|
let(:include_default_source) { false }
|
754
765
|
|
755
766
|
it "ignores the Chef::Config setting" do
|
756
767
|
Chef::Config[:rubygems_url] = "https://ignored"
|
757
|
-
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=#{source}"
|
768
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=#{source}"
|
758
769
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
759
770
|
provider.run_action(:install)
|
760
771
|
expect(new_resource).to be_updated_by_last_action
|
@@ -767,18 +778,29 @@ describe Chef::Provider::Package::Rubygems do
|
|
767
778
|
let(:gem_binary) { "/foo/bar" }
|
768
779
|
|
769
780
|
it "installs the gem with an array as an added source" do
|
770
|
-
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=https://mirror1 --source=https://mirror2
|
781
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=https://mirror1 --source=https://mirror2"
|
771
782
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
772
783
|
provider.run_action(:install)
|
773
784
|
expect(new_resource).to be_updated_by_last_action
|
774
785
|
end
|
775
786
|
|
787
|
+
context "with include_default_source true" do
|
788
|
+
let(:include_default_source) { true }
|
789
|
+
|
790
|
+
it "installs the gem with rubygems as a source" do
|
791
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=https://mirror1 --source=https://mirror2 --source=https://rubygems.org"
|
792
|
+
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
793
|
+
provider.run_action(:install)
|
794
|
+
expect(new_resource).to be_updated_by_last_action
|
795
|
+
end
|
796
|
+
end
|
797
|
+
|
776
798
|
context "with include_default_source false" do
|
777
799
|
let(:include_default_source) { false }
|
778
800
|
|
779
801
|
it "ignores the Chef::Config setting" do
|
780
802
|
Chef::Config[:rubygems_url] = "https://ignored"
|
781
|
-
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=https://mirror1 --source=https://mirror2"
|
803
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=https://mirror1 --source=https://mirror2"
|
782
804
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
783
805
|
provider.run_action(:install)
|
784
806
|
expect(new_resource).to be_updated_by_last_action
|
@@ -786,13 +808,26 @@ describe Chef::Provider::Package::Rubygems do
|
|
786
808
|
end
|
787
809
|
end
|
788
810
|
|
789
|
-
context "when
|
811
|
+
context "when clear_sources is set true and an explicit source is specified" do
|
790
812
|
let(:gem_binary) { "/foo/bar" }
|
791
813
|
let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
|
792
814
|
|
793
815
|
it "installs the gem" do
|
794
816
|
new_resource.clear_sources(true)
|
795
|
-
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=#{source}
|
817
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --clear-sources --source=#{source}"
|
818
|
+
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
819
|
+
provider.run_action(:install)
|
820
|
+
expect(new_resource).to be_updated_by_last_action
|
821
|
+
end
|
822
|
+
end
|
823
|
+
|
824
|
+
context "when clear_sources is set false and an explicit source is specified" do
|
825
|
+
let(:gem_binary) { "/foo/bar" }
|
826
|
+
let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
|
827
|
+
|
828
|
+
it "installs the gem" do
|
829
|
+
new_resource.clear_sources(false)
|
830
|
+
expected = "#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=#{source}"
|
796
831
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
797
832
|
provider.run_action(:install)
|
798
833
|
expect(new_resource).to be_updated_by_last_action
|
@@ -804,7 +839,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
804
839
|
let(:options) { "-i /alt/install/location" }
|
805
840
|
|
806
841
|
it "installs the gem by shelling out when options are provided but no version is given" do
|
807
|
-
expected = "gem install rspec-core -q --no-document -v \"#{candidate_version}\" --source=https://
|
842
|
+
expected = "gem install rspec-core -q --no-document -v \"#{candidate_version}\" --source=https://rubygems.org #{options}"
|
808
843
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
809
844
|
provider.run_action(:install)
|
810
845
|
expect(new_resource).to be_updated_by_last_action
|
@@ -815,7 +850,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
815
850
|
let(:options) { { install_dir: "/alt/install/location" } }
|
816
851
|
|
817
852
|
it "installs the gem via the gems api when options are given as a Hash" do
|
818
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, { sources: [
|
853
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, { sources: [ "https://rubygems.org" ] }.merge(options))
|
819
854
|
provider.run_action(:install)
|
820
855
|
expect(new_resource).to be_updated_by_last_action
|
821
856
|
end
|
@@ -825,7 +860,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
825
860
|
let(:target_version) { "9000.0.2" }
|
826
861
|
|
827
862
|
it "installs the gem via the gems api" do
|
828
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [
|
863
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ "https://rubygems.org" ] )
|
829
864
|
provider.run_action(:install)
|
830
865
|
expect(new_resource).to be_updated_by_last_action
|
831
866
|
end
|
@@ -868,7 +903,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
868
903
|
let(:gem_binary) { "/usr/weird/bin/gem" }
|
869
904
|
|
870
905
|
it "installs the gem by shelling out to gem install" do
|
871
|
-
expect(provider).to receive(:shell_out_compacted!).with("#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=https://
|
906
|
+
expect(provider).to receive(:shell_out_compacted!).with("#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=https://rubygems.org", env: nil, timeout: 900)
|
872
907
|
provider.run_action(:install)
|
873
908
|
expect(new_resource).to be_updated_by_last_action
|
874
909
|
end
|
@@ -876,7 +911,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
876
911
|
it "unmockening needs_nodocument?" do
|
877
912
|
expect(provider).to receive(:needs_nodocument?).and_call_original
|
878
913
|
expect(provider.gem_env).to receive(:shell_out!).with("#{gem_binary} --version").and_return(instance_double(Mixlib::ShellOut, stdout: "3.0.0\n"))
|
879
|
-
expect(provider).to receive(:shell_out_compacted!).with("#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=https://
|
914
|
+
expect(provider).to receive(:shell_out_compacted!).with("#{gem_binary} install rspec-core -q --no-document -v \"#{target_version}\" --source=https://rubygems.org", env: nil, timeout: 900)
|
880
915
|
provider.run_action(:install)
|
881
916
|
expect(new_resource).to be_updated_by_last_action
|
882
917
|
end
|
@@ -884,7 +919,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
884
919
|
it "when the rubygems_version is old it uses the old flags" do
|
885
920
|
expect(provider).to receive(:needs_nodocument?).and_call_original
|
886
921
|
expect(provider.gem_env).to receive(:shell_out!).with("#{gem_binary} --version").and_return(instance_double(Mixlib::ShellOut, stdout: "2.8.0\n"))
|
887
|
-
expect(provider).to receive(:shell_out_compacted!).with("#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://
|
922
|
+
expect(provider).to receive(:shell_out_compacted!).with("#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://rubygems.org", env: nil, timeout: 900)
|
888
923
|
provider.run_action(:install)
|
889
924
|
expect(new_resource).to be_updated_by_last_action
|
890
925
|
end
|
@@ -979,3 +1014,153 @@ describe Chef::Provider::Package::Rubygems do
|
|
979
1014
|
end
|
980
1015
|
end
|
981
1016
|
end
|
1017
|
+
|
1018
|
+
describe Chef::Provider::Package::Rubygems, "clear_sources?" do
|
1019
|
+
let(:new_resource) do
|
1020
|
+
Chef::Resource::GemPackage.new("foo")
|
1021
|
+
end
|
1022
|
+
|
1023
|
+
let(:provider) do
|
1024
|
+
run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
|
1025
|
+
Chef::Provider::Package::Rubygems.new(new_resource, run_context)
|
1026
|
+
end
|
1027
|
+
|
1028
|
+
it "is false when clear_sources is unset" do
|
1029
|
+
expect(provider.clear_sources?).to be false
|
1030
|
+
end
|
1031
|
+
|
1032
|
+
it "is false when clear_sources is set false" do
|
1033
|
+
new_resource.clear_sources(false)
|
1034
|
+
expect(provider.clear_sources?).to be false
|
1035
|
+
end
|
1036
|
+
|
1037
|
+
it "is true when clear_sources is set true" do
|
1038
|
+
new_resource.clear_sources(true)
|
1039
|
+
expect(provider.clear_sources?).to be true
|
1040
|
+
end
|
1041
|
+
|
1042
|
+
context "when a source is set" do
|
1043
|
+
before do
|
1044
|
+
new_resource.source("http://mirror.ops.rhcloud.com/mirror/ruby")
|
1045
|
+
end
|
1046
|
+
|
1047
|
+
it "is true when clear_sources is unset" do
|
1048
|
+
expect(provider.clear_sources?).to be true
|
1049
|
+
end
|
1050
|
+
|
1051
|
+
it "is false when clear_sources is set false" do
|
1052
|
+
new_resource.clear_sources(false)
|
1053
|
+
expect(provider.clear_sources?).to be false
|
1054
|
+
end
|
1055
|
+
|
1056
|
+
it "is true when clear_sources is set true" do
|
1057
|
+
new_resource.clear_sources(true)
|
1058
|
+
expect(provider.clear_sources?).to be true
|
1059
|
+
end
|
1060
|
+
end
|
1061
|
+
|
1062
|
+
context "when Chef::Config[:rubygems_url] is set" do
|
1063
|
+
before do
|
1064
|
+
Chef::Config.rubygems_url = "https://example.com/"
|
1065
|
+
end
|
1066
|
+
|
1067
|
+
it "is true when clear_sources is unset" do
|
1068
|
+
expect(provider.clear_sources?).to be true
|
1069
|
+
end
|
1070
|
+
|
1071
|
+
it "is false when clear_sources is set false" do
|
1072
|
+
new_resource.clear_sources(false)
|
1073
|
+
expect(provider.clear_sources?).to be false
|
1074
|
+
end
|
1075
|
+
|
1076
|
+
it "is true when clear_sources is set true" do
|
1077
|
+
new_resource.clear_sources(true)
|
1078
|
+
expect(provider.clear_sources?).to be true
|
1079
|
+
end
|
1080
|
+
end
|
1081
|
+
end
|
1082
|
+
|
1083
|
+
describe Chef::Provider::Package::Rubygems, "include_default_source?" do
|
1084
|
+
let(:new_resource) do
|
1085
|
+
Chef::Resource::GemPackage.new("foo")
|
1086
|
+
end
|
1087
|
+
|
1088
|
+
let(:provider) do
|
1089
|
+
run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
|
1090
|
+
Chef::Provider::Package::Rubygems.new(new_resource, run_context)
|
1091
|
+
end
|
1092
|
+
|
1093
|
+
it "is true when include_default_source is unset" do
|
1094
|
+
expect(provider.include_default_source?).to be true
|
1095
|
+
end
|
1096
|
+
|
1097
|
+
it "is false when include_default_source is set false" do
|
1098
|
+
new_resource.include_default_source(false)
|
1099
|
+
expect(provider.include_default_source?).to be false
|
1100
|
+
end
|
1101
|
+
|
1102
|
+
it "is true when include_default_source is set true" do
|
1103
|
+
new_resource.include_default_source(true)
|
1104
|
+
expect(provider.include_default_source?).to be true
|
1105
|
+
end
|
1106
|
+
|
1107
|
+
context "when a source is set" do
|
1108
|
+
before do
|
1109
|
+
new_resource.source("http://mirror.ops.rhcloud.com/mirror/ruby")
|
1110
|
+
end
|
1111
|
+
|
1112
|
+
it "is false when include_default_source is unset" do
|
1113
|
+
expect(provider.include_default_source?).to be false
|
1114
|
+
end
|
1115
|
+
|
1116
|
+
it "is false when include_default_source is set false" do
|
1117
|
+
new_resource.include_default_source(false)
|
1118
|
+
expect(provider.include_default_source?).to be false
|
1119
|
+
end
|
1120
|
+
|
1121
|
+
it "is true when include_default_source is set true" do
|
1122
|
+
new_resource.include_default_source(true)
|
1123
|
+
expect(provider.include_default_source?).to be true
|
1124
|
+
end
|
1125
|
+
end
|
1126
|
+
|
1127
|
+
context "when Chef::Config[:rubygems_url] is set" do
|
1128
|
+
before do
|
1129
|
+
Chef::Config.rubygems_url = "https://example.com/"
|
1130
|
+
end
|
1131
|
+
|
1132
|
+
it "is true when include_default_source is unset" do
|
1133
|
+
expect(provider.include_default_source?).to be true
|
1134
|
+
end
|
1135
|
+
|
1136
|
+
it "is false when include_default_source is set false" do
|
1137
|
+
new_resource.include_default_source(false)
|
1138
|
+
expect(provider.include_default_source?).to be false
|
1139
|
+
end
|
1140
|
+
|
1141
|
+
it "is true when include_default_source is set true" do
|
1142
|
+
new_resource.include_default_source(true)
|
1143
|
+
expect(provider.include_default_source?).to be true
|
1144
|
+
end
|
1145
|
+
end
|
1146
|
+
|
1147
|
+
context "when clear_sources is set" do
|
1148
|
+
before do
|
1149
|
+
new_resource.clear_sources(true)
|
1150
|
+
end
|
1151
|
+
|
1152
|
+
it "is false when include_default_source is unset" do
|
1153
|
+
expect(provider.include_default_source?).to be false
|
1154
|
+
end
|
1155
|
+
|
1156
|
+
it "is false when include_default_source is set false" do
|
1157
|
+
new_resource.include_default_source(false)
|
1158
|
+
expect(provider.include_default_source?).to be false
|
1159
|
+
end
|
1160
|
+
|
1161
|
+
it "is true when include_default_source is set true" do
|
1162
|
+
new_resource.include_default_source(true)
|
1163
|
+
expect(provider.include_default_source?).to be true
|
1164
|
+
end
|
1165
|
+
end
|
1166
|
+
end
|