chef 15.17.4-universal-mingw32 → 16.0.257-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 +14 -20
- data/README.md +6 -6
- data/Rakefile +18 -23
- data/chef-universal-mingw32.gemspec +4 -4
- data/chef.gemspec +10 -26
- 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/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +20 -3
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.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/multiplexed_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/base_file.rb +0 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +5 -5
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.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_version.rb +40 -5
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/deprecated.rb +1 -9
- 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 +2 -3
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/environment.rb +2 -2
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/exceptions.rb +0 -3
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -2
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/knife.rb +1 -3
- 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 +93 -97
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +20 -20
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +13 -15
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -1
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +2 -3
- 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 +45 -58
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/environment_compare.rb +1 -1
- data/lib/chef/knife/exec.rb +2 -2
- 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/list.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -50
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +1 -2
- 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_recind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +3 -26
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +13 -1
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/template.rb +0 -1
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
- 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 +7 -36
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +22 -4
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +2 -2
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -8
- data/lib/chef/provider/file.rb +5 -5
- 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 +36 -51
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/mount/solaris.rb +1 -0
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +3 -4
- 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 +84 -30
- 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/freebsd/pkgng.rb +1 -3
- data/lib/chef/provider/package/homebrew.rb +106 -42
- data/lib/chef/provider/package/msu.rb +3 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/powershell.rb +2 -6
- data/lib/chef/provider/package/rubygems.rb +29 -2
- data/lib/chef/provider/package/snap.rb +27 -96
- data/lib/chef/provider/package/windows.rb +3 -2
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +0 -8
- data/lib/chef/provider/package/yum/yum_helper.py +0 -4
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +4 -10
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +3 -3
- 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 +2 -2
- data/lib/chef/provider/service/debian.rb +31 -29
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +7 -12
- data/lib/chef/provider/service/openbsd.rb +1 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +3 -3
- 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/dscl.rb +3 -3
- data/lib/chef/provider/user/mac.rb +10 -9
- 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 +7 -9
- data/lib/chef/provider/yum_repository.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +11 -31
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +41 -56
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +149 -0
- data/lib/chef/resource/apt_package.rb +2 -1
- data/lib/chef/resource/apt_preference.rb +69 -2
- data/lib/chef/resource/apt_repository.rb +337 -5
- data/lib/chef/resource/apt_update.rb +52 -1
- data/lib/chef/resource/archive_file.rb +9 -29
- data/lib/chef/resource/bash.rb +2 -0
- data/lib/chef/resource/bff_package.rb +9 -1
- data/lib/chef/resource/breakpoint.rb +0 -1
- data/lib/chef/resource/build_essential.rb +42 -48
- data/lib/chef/resource/cab_package.rb +8 -1
- data/lib/chef/resource/chef_client_cron.rb +225 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +198 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +177 -0
- data/lib/chef/resource/chef_gem.rb +9 -16
- data/lib/chef/resource/chef_handler.rb +2 -1
- data/lib/chef/resource/chef_sleep.rb +0 -1
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +3 -1
- data/lib/chef/resource/chocolatey_feature.rb +2 -1
- data/lib/chef/resource/chocolatey_package.rb +2 -1
- data/lib/chef/resource/chocolatey_source.rb +2 -1
- data/lib/chef/resource/cookbook_file.rb +1 -1
- data/lib/chef/resource/cron.rb +22 -68
- data/lib/chef/resource/cron_access.rb +8 -15
- data/lib/chef/resource/cron_d.rb +9 -75
- data/lib/chef/resource/csh.rb +2 -0
- data/lib/chef/resource/directory.rb +2 -2
- data/lib/chef/resource/dmg_package.rb +4 -4
- data/lib/chef/resource/dnf_package.rb +2 -3
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +13 -12
- data/lib/chef/resource/file.rb +3 -1
- data/lib/chef/resource/freebsd_package.rb +2 -1
- data/lib/chef/resource/gem_package.rb +14 -6
- data/lib/chef/resource/group.rb +4 -1
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +5 -4
- data/lib/chef/resource/homebrew_package.rb +4 -2
- data/lib/chef/resource/homebrew_tap.rb +2 -1
- data/lib/chef/resource/hostname.rb +41 -36
- data/lib/chef/resource/http_request.rb +0 -1
- data/lib/chef/resource/ifconfig.rb +1 -1
- data/lib/chef/resource/ips_package.rb +10 -2
- data/lib/chef/resource/kernel_module.rb +29 -29
- data/lib/chef/resource/ksh.rb +2 -0
- data/lib/chef/resource/launchd.rb +6 -6
- data/lib/chef/resource/link.rb +1 -23
- data/lib/chef/resource/locale.rb +58 -24
- data/lib/chef/resource/log.rb +12 -1
- data/lib/chef/resource/lwrp_base.rb +1 -8
- data/lib/chef/resource/macos_userdefaults.rb +9 -6
- data/lib/chef/resource/macosx_service.rb +2 -1
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +62 -2
- data/lib/chef/resource/mount.rb +3 -0
- data/lib/chef/resource/msu_package.rb +13 -1
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +19 -3
- data/lib/chef/resource/ohai_hint.rb +3 -12
- data/lib/chef/resource/openbsd_package.rb +9 -1
- data/lib/chef/resource/openssl_dhparam.rb +10 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +23 -1
- data/lib/chef/resource/openssl_ec_public_key.rb +21 -1
- data/lib/chef/resource/openssl_rsa_private_key.rb +20 -1
- data/lib/chef/resource/openssl_rsa_public_key.rb +22 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +37 -1
- data/lib/chef/resource/openssl_x509_crl.rb +12 -1
- data/lib/chef/resource/openssl_x509_request.rb +37 -1
- data/lib/chef/resource/osx_profile.rb +3 -2
- data/lib/chef/resource/package.rb +2 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +12 -3
- data/lib/chef/resource/perl.rb +2 -0
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +13 -3
- data/lib/chef/resource/powershell_package.rb +1 -3
- data/lib/chef/resource/powershell_package_source.rb +3 -1
- data/lib/chef/resource/powershell_script.rb +7 -17
- data/lib/chef/resource/python.rb +2 -0
- data/lib/chef/resource/reboot.rb +0 -1
- data/lib/chef/resource/registry_key.rb +1 -2
- data/lib/chef/resource/remote_directory.rb +2 -0
- data/lib/chef/resource/remote_file.rb +2 -0
- data/lib/chef/resource/rhsm_errata.rb +0 -1
- data/lib/chef/resource/rhsm_errata_level.rb +0 -1
- data/lib/chef/resource/rhsm_register.rb +2 -1
- data/lib/chef/resource/rhsm_repo.rb +3 -1
- data/lib/chef/resource/rhsm_subscription.rb +4 -1
- data/lib/chef/resource/route.rb +5 -1
- data/lib/chef/resource/rpm_package.rb +9 -2
- data/lib/chef/resource/ruby.rb +2 -0
- data/lib/chef/resource/ruby_block.rb +1 -1
- data/lib/chef/resource/scm/_scm.rb +48 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +8 -5
- data/lib/chef/resource/script.rb +6 -3
- data/lib/chef/resource/service.rb +6 -7
- data/lib/chef/resource/smartos_package.rb +9 -1
- data/lib/chef/resource/snap_package.rb +3 -1
- data/lib/chef/resource/solaris_package.rb +9 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +9 -9
- 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 +5 -3
- data/lib/chef/resource/sysctl.rb +2 -2
- data/lib/chef/resource/systemd_unit.rb +4 -2
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +7 -18
- data/lib/chef/resource/user.rb +1 -3
- 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 +114 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +19 -6
- data/lib/chef/resource/windows_auto_run.rb +0 -1
- data/lib/chef/resource/windows_certificate.rb +1 -1
- data/lib/chef/resource/windows_dfs_folder.rb +0 -1
- data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
- data/lib/chef/resource/windows_dfs_server.rb +0 -1
- 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 +2 -3
- data/lib/chef/resource/windows_feature.rb +2 -2
- data/lib/chef/resource/windows_feature_dism.rb +9 -22
- data/lib/chef/resource/windows_feature_powershell.rb +17 -82
- data/lib/chef/resource/windows_firewall_rule.rb +119 -10
- data/lib/chef/resource/windows_font.rb +1 -3
- data/lib/chef/resource/windows_package.rb +13 -4
- data/lib/chef/resource/windows_pagefile.rb +0 -1
- data/lib/chef/resource/windows_path.rb +0 -1
- data/lib/chef/resource/windows_printer.rb +0 -1
- data/lib/chef/resource/windows_printer_port.rb +0 -1
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +90 -0
- data/lib/chef/resource/windows_service.rb +45 -31
- data/lib/chef/resource/windows_share.rb +3 -7
- data/lib/chef/resource/windows_shortcut.rb +0 -1
- data/lib/chef/resource/windows_task.rb +14 -15
- data/lib/chef/resource/windows_uac.rb +0 -1
- data/lib/chef/resource/windows_user_privilege.rb +157 -0
- data/lib/chef/resource/windows_workgroup.rb +0 -1
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource/yum_repository.rb +2 -1
- data/lib/chef/resource/zypper_package.rb +3 -2
- data/lib/chef/resource/zypper_repository.rb +2 -1
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +6 -6
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/role.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/shell.rb +23 -32
- data/lib/chef/shell/shell_session.rb +0 -2
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/configuration_generator.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
- data/lib/chef/util/powershell/cmdlet.rb +1 -1
- data/lib/chef/version.rb +2 -2
- data/lib/chef/version_string.rb +1 -1
- data/lib/chef/win32/api/file.rb +18 -18
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +3 -11
- data/lib/chef/win32/process.rb +2 -2
- data/lib/chef/win32/security.rb +40 -2
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +27 -23
- data/spec/functional/resource/aix_service_spec.rb +1 -0
- data/spec/functional/resource/aixinit_service_spec.rb +8 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -0
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +11 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +6 -5
- data/spec/functional/resource/link_spec.rb +17 -17
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/user/dscl_spec.rb +2 -2
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +8 -8
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -2
- data/spec/functional/shell_spec.rb +6 -6
- 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/functional/win32/service_manager_spec.rb +1 -1
- 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 +30 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/accumulator_spec.rb +1 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -5
- data/spec/integration/recipes/lwrp_spec.rb +1 -1
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +50 -21
- data/spec/integration/recipes/notifying_block_spec.rb +9 -6
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +46 -144
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -3
- data/spec/integration/recipes/resource_load_spec.rb +133 -13
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/scripts/ssl-serve.rb +1 -1
- data/spec/spec_helper.rb +11 -14
- 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 +44 -19
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +3 -3
- data/spec/support/shared/functional/win32_service.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +5 -18
- data/spec/support/shared/integration/knife_support.rb +14 -8
- 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 -9
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +3 -4
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/data_collector_spec.rb +38 -17
- data/spec/unit/dsl/platform_introspection_spec.rb +0 -1
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/event_dispatch/dispatcher_spec.rb +0 -3
- data/spec/unit/file_access_control_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 +36 -54
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +6 -5
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +8 -68
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/ssh_spec.rb +10 -113
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife/supermarket_share_spec.rb +3 -5
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/lwrp_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/securable_spec.rb +1 -0
- data/spec/unit/mixin/user_context_spec.rb +9 -1
- data/spec/unit/node/attribute_spec.rb +2 -2
- 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 +18 -15
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +9 -11
- 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 +44 -4
- 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/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +2 -2
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/powershell_spec.rb +88 -96
- data/spec/unit/provider/package/rubygems_spec.rb +221 -31
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/package/windows_spec.rb +53 -30
- 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/arch_service_spec.rb +2 -3
- data/spec/unit/provider/service/debian_service_spec.rb +35 -14
- data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider/service/windows_spec.rb +6 -2
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/systemd_unit_spec.rb +24 -28
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +25 -75
- data/spec/unit/provider_resolver_spec.rb +11 -11
- data/spec/unit/provider_spec.rb +0 -1
- 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/archive_file_spec.rb +2 -11
- 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/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_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +6 -47
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +4 -1
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_reporter_spec.rb +1 -5
- data/spec/unit/resource_spec.rb +11 -4
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +0 -9
- data/spec/unit/win32/security_spec.rb +3 -4
- data/tasks/rspec.rb +1 -1
- metadata +116 -87
- 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/functional/resource/windows_font_spec.rb +0 -49
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -106,25 +106,30 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
|
|
106
106
|
context "new default rubygems behavior" do
|
107
107
|
before do
|
108
108
|
Chef::Config[:rubygems_cache_enabled] = false
|
109
|
-
|
110
|
-
dep_installer = Gem::DependencyInstaller.new
|
111
|
-
expect(dep_installer).not_to receive(:find_gems_with_sources)
|
112
|
-
allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
|
113
109
|
end
|
114
110
|
|
115
111
|
it "finds a matching gem candidate version on rubygems 2.0.0+" do
|
116
112
|
dep = Gem::Dependency.new("rspec", ">= 0")
|
113
|
+
dep_installer = Gem::DependencyInstaller.new
|
114
|
+
allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
|
115
|
+
expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
|
117
116
|
expect(@gem_env.candidate_version_from_remote(dep)).to be_kind_of(Gem::Version)
|
118
117
|
end
|
119
118
|
|
120
119
|
it "gives the candidate version as nil if none is found" do
|
121
120
|
dep = Gem::Dependency.new("lksdjflksdjflsdkfj", ">= 0")
|
121
|
+
dep_installer = Gem::DependencyInstaller.new
|
122
|
+
allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
|
123
|
+
expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
|
122
124
|
expect(@gem_env.candidate_version_from_remote(dep)).to be_nil
|
123
125
|
end
|
124
126
|
|
125
127
|
it "finds a matching gem from a specific gemserver when explicit sources are given (to a server that doesn't respond to api requests)" do
|
126
128
|
dep = Gem::Dependency.new("rspec", ">= 0")
|
127
|
-
|
129
|
+
dep_installer = Gem::DependencyInstaller.new
|
130
|
+
allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
|
131
|
+
expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
|
132
|
+
expect(@gem_env.candidate_version_from_remote(dep, "http://production.cf.rubygems.org")).to be_kind_of(Gem::Version)
|
128
133
|
end
|
129
134
|
end
|
130
135
|
|
@@ -358,7 +363,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
358
363
|
let(:bindir) { "/usr/bin" }
|
359
364
|
let(:options) { nil }
|
360
365
|
let(:source) { nil }
|
361
|
-
let(:include_default_source) {
|
366
|
+
let(:include_default_source) { nil }
|
362
367
|
|
363
368
|
let(:new_resource) do
|
364
369
|
new_resource = Chef::Resource::GemPackage.new(gem_name)
|
@@ -580,7 +585,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
580
585
|
|
581
586
|
it "determines the candidate version by querying the remote gem servers" do
|
582
587
|
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
583
|
-
.with(gem_dep, source
|
588
|
+
.with(gem_dep, source)
|
584
589
|
.and_return(Gem::Version.new(target_version))
|
585
590
|
expect(provider.candidate_version).to eq(target_version)
|
586
591
|
end
|
@@ -600,7 +605,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
600
605
|
|
601
606
|
it "determines the candidate version by querying the remote gem servers" do
|
602
607
|
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
603
|
-
.with(gem_dep, *
|
608
|
+
.with(gem_dep, *source)
|
604
609
|
.and_return(Gem::Version.new(target_version))
|
605
610
|
expect(provider.candidate_version).to eq(target_version)
|
606
611
|
end
|
@@ -640,13 +645,13 @@ describe Chef::Provider::Package::Rubygems do
|
|
640
645
|
|
641
646
|
before do
|
642
647
|
expected_source = [ source ]
|
643
|
-
expected_source <<
|
648
|
+
expected_source << "https://rubygems.org" if provider.include_default_source?
|
644
649
|
allow(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, *expected_source.flatten.compact).and_return(version)
|
645
650
|
end
|
646
651
|
|
647
652
|
describe "in the current gem environment" do
|
648
653
|
it "installs the gem via the gems api when no explicit options are used" do
|
649
|
-
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" ])
|
650
655
|
provider.run_action(:install)
|
651
656
|
expect(new_resource).to be_updated_by_last_action
|
652
657
|
end
|
@@ -655,7 +660,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
655
660
|
let(:source) { "http://gems.example.org" }
|
656
661
|
|
657
662
|
it "installs the gem via the gems api" do
|
658
|
-
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])
|
659
664
|
provider.run_action(:install)
|
660
665
|
expect(new_resource).to be_updated_by_last_action
|
661
666
|
end
|
@@ -686,7 +691,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
686
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
|
687
692
|
allow(::File).to receive(:exist?).and_return(true)
|
688
693
|
new_resource.package_name("rspec-core")
|
689
|
-
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" ])
|
690
695
|
provider.run_action(:install)
|
691
696
|
expect(new_resource).to be_updated_by_last_action
|
692
697
|
end
|
@@ -695,14 +700,14 @@ describe Chef::Provider::Package::Rubygems do
|
|
695
700
|
let(:options) { "-i /alt/install/location" }
|
696
701
|
|
697
702
|
it "installs the gem by shelling out when options are provided as a String" do
|
698
|
-
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}"
|
699
704
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
700
705
|
provider.run_action(:install)
|
701
706
|
expect(new_resource).to be_updated_by_last_action
|
702
707
|
end
|
703
708
|
|
704
709
|
it "unmockening needs_nodocument?" do
|
705
|
-
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}"
|
706
711
|
expect(provider).to receive(:needs_nodocument?).and_call_original
|
707
712
|
stub_const("Gem::VERSION", "3.0.0")
|
708
713
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
@@ -711,7 +716,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
711
716
|
end
|
712
717
|
|
713
718
|
it "when the rubygems_version is old it uses the old flags" do
|
714
|
-
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}"
|
715
720
|
expect(provider).to receive(:needs_nodocument?).and_call_original
|
716
721
|
stub_const("Gem::VERSION", "2.8.0")
|
717
722
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
@@ -723,10 +728,10 @@ describe Chef::Provider::Package::Rubygems do
|
|
723
728
|
context "when the Chef::Config[:rubygems_url] option is provided" do
|
724
729
|
let(:gem_binary) { "/foo/bar" }
|
725
730
|
|
726
|
-
it "installs the gem
|
731
|
+
it "installs the gem" do
|
727
732
|
Chef::Config[:rubygems_url] = "https://mirror1"
|
728
|
-
expect(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep,
|
729
|
-
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"
|
730
735
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
731
736
|
provider.run_action(:install)
|
732
737
|
expect(new_resource).to be_updated_by_last_action
|
@@ -737,19 +742,30 @@ describe Chef::Provider::Package::Rubygems do
|
|
737
742
|
let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
|
738
743
|
let(:gem_binary) { "/foo/bar" }
|
739
744
|
|
740
|
-
it "installs the gem
|
741
|
-
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}"
|
742
747
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
743
748
|
provider.run_action(:install)
|
744
749
|
expect(new_resource).to be_updated_by_last_action
|
745
750
|
end
|
746
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
|
+
|
747
763
|
context "with include_default_source false" do
|
748
764
|
let(:include_default_source) { false }
|
749
765
|
|
750
766
|
it "ignores the Chef::Config setting" do
|
751
767
|
Chef::Config[:rubygems_url] = "https://ignored"
|
752
|
-
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}"
|
753
769
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
754
770
|
provider.run_action(:install)
|
755
771
|
expect(new_resource).to be_updated_by_last_action
|
@@ -762,18 +778,29 @@ describe Chef::Provider::Package::Rubygems do
|
|
762
778
|
let(:gem_binary) { "/foo/bar" }
|
763
779
|
|
764
780
|
it "installs the gem with an array as an added source" do
|
765
|
-
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"
|
766
782
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
767
783
|
provider.run_action(:install)
|
768
784
|
expect(new_resource).to be_updated_by_last_action
|
769
785
|
end
|
770
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
|
+
|
771
798
|
context "with include_default_source false" do
|
772
799
|
let(:include_default_source) { false }
|
773
800
|
|
774
801
|
it "ignores the Chef::Config setting" do
|
775
802
|
Chef::Config[:rubygems_url] = "https://ignored"
|
776
|
-
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"
|
777
804
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
778
805
|
provider.run_action(:install)
|
779
806
|
expect(new_resource).to be_updated_by_last_action
|
@@ -781,13 +808,26 @@ describe Chef::Provider::Package::Rubygems do
|
|
781
808
|
end
|
782
809
|
end
|
783
810
|
|
784
|
-
context "when
|
811
|
+
context "when clear_sources is set true and an explicit source is specified" do
|
785
812
|
let(:gem_binary) { "/foo/bar" }
|
786
813
|
let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
|
787
814
|
|
788
815
|
it "installs the gem" do
|
789
816
|
new_resource.clear_sources(true)
|
790
|
-
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}"
|
791
831
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
792
832
|
provider.run_action(:install)
|
793
833
|
expect(new_resource).to be_updated_by_last_action
|
@@ -799,7 +839,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
799
839
|
let(:options) { "-i /alt/install/location" }
|
800
840
|
|
801
841
|
it "installs the gem by shelling out when options are provided but no version is given" do
|
802
|
-
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}"
|
803
843
|
expect(provider).to receive(:shell_out_compacted!).with(expected, env: nil, timeout: 900)
|
804
844
|
provider.run_action(:install)
|
805
845
|
expect(new_resource).to be_updated_by_last_action
|
@@ -810,7 +850,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
810
850
|
let(:options) { { install_dir: "/alt/install/location" } }
|
811
851
|
|
812
852
|
it "installs the gem via the gems api when options are given as a Hash" do
|
813
|
-
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))
|
814
854
|
provider.run_action(:install)
|
815
855
|
expect(new_resource).to be_updated_by_last_action
|
816
856
|
end
|
@@ -820,7 +860,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
820
860
|
let(:target_version) { "9000.0.2" }
|
821
861
|
|
822
862
|
it "installs the gem via the gems api" do
|
823
|
-
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" ] )
|
824
864
|
provider.run_action(:install)
|
825
865
|
expect(new_resource).to be_updated_by_last_action
|
826
866
|
end
|
@@ -863,7 +903,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
863
903
|
let(:gem_binary) { "/usr/weird/bin/gem" }
|
864
904
|
|
865
905
|
it "installs the gem by shelling out to gem install" do
|
866
|
-
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)
|
867
907
|
provider.run_action(:install)
|
868
908
|
expect(new_resource).to be_updated_by_last_action
|
869
909
|
end
|
@@ -871,7 +911,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
871
911
|
it "unmockening needs_nodocument?" do
|
872
912
|
expect(provider).to receive(:needs_nodocument?).and_call_original
|
873
913
|
expect(provider.gem_env).to receive(:shell_out!).with("#{gem_binary} --version").and_return(instance_double(Mixlib::ShellOut, stdout: "3.0.0\n"))
|
874
|
-
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)
|
875
915
|
provider.run_action(:install)
|
876
916
|
expect(new_resource).to be_updated_by_last_action
|
877
917
|
end
|
@@ -879,7 +919,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
879
919
|
it "when the rubygems_version is old it uses the old flags" do
|
880
920
|
expect(provider).to receive(:needs_nodocument?).and_call_original
|
881
921
|
expect(provider.gem_env).to receive(:shell_out!).with("#{gem_binary} --version").and_return(instance_double(Mixlib::ShellOut, stdout: "2.8.0\n"))
|
882
|
-
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)
|
883
923
|
provider.run_action(:install)
|
884
924
|
expect(new_resource).to be_updated_by_last_action
|
885
925
|
end
|
@@ -974,3 +1014,153 @@ describe Chef::Provider::Package::Rubygems do
|
|
974
1014
|
end
|
975
1015
|
end
|
976
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
|
@@ -169,7 +169,7 @@ describe Chef::Provider::Package::Snap do
|
|
169
169
|
|
170
170
|
it "does not throw an error if installed version not found" do
|
171
171
|
provider.load_current_resource
|
172
|
-
expect(provider.get_current_versions).to eq([])
|
172
|
+
expect(provider.get_current_versions).to eq([nil])
|
173
173
|
end
|
174
174
|
end
|
175
175
|
end
|
@@ -126,7 +126,7 @@ describe Chef::Provider::Package::Windows::Exe do
|
|
126
126
|
it "removes installed package and quotes uninstall string" do
|
127
127
|
new_resource.timeout = 300
|
128
128
|
allow(::File).to receive(:exist?).with("uninst_dir/uninst_file").and_return(true)
|
129
|
-
expect(provider).to receive(:shell_out!).with(%r{start \"\" /wait \"uninst_dir/uninst_file\" /S /NCRC & exit %%%%ERRORLEVEL%%%%}, default_env: false, timeout: 300, returns: [0])
|
129
|
+
expect(provider).to receive(:shell_out!).with(%r{start \"\" /wait \"uninst_dir/uninst_file\" /S /NCRC & exit %%%%ERRORLEVEL%%%%}, default_env: false, timeout: 300, returns: [0, 3010])
|
130
130
|
provider.remove_package
|
131
131
|
end
|
132
132
|
end
|
@@ -42,7 +42,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
42
42
|
let(:cache_path) { 'c:\\cache\\' }
|
43
43
|
|
44
44
|
before(:each) do
|
45
|
-
allow(::File).to receive(:exist?).with(new_resource.source).and_return(true)
|
45
|
+
allow(::File).to receive(:exist?).with(provider.new_resource.source).and_return(true)
|
46
46
|
end
|
47
47
|
|
48
48
|
describe "load_current_resource" do
|
@@ -66,22 +66,20 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
66
66
|
|
67
67
|
it "sets the version to be installed" do
|
68
68
|
provider.load_current_resource
|
69
|
-
expect(new_resource.version).to eql("2.0")
|
69
|
+
expect(provider.new_resource.version).to eql("2.0")
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
-
context "when the source is
|
74
|
-
|
73
|
+
context "when the source is a uri" do
|
74
|
+
let(:resource_source) { "https://foo.bar/calculator.msi" }
|
75
|
+
|
76
|
+
context "when the source has not been downloaded" do
|
75
77
|
before(:each) do
|
76
|
-
allow(provider).to receive(:
|
77
|
-
allow(provider.package_provider).to receive(:get_product_property).and_return(nil)
|
78
|
-
allow(provider.package_provider).to receive(:get_installed_version).and_return(nil)
|
79
|
-
allow(provider.package_provider).to receive(:package_version).and_return(nil)
|
78
|
+
allow(provider).to receive(:downloadable_file_missing?).and_return(true)
|
80
79
|
end
|
81
|
-
|
82
|
-
it "sets the current version nil" do
|
80
|
+
it "sets the current version to unknown" do
|
83
81
|
provider.load_current_resource
|
84
|
-
expect(provider.current_resource.version).to eql(
|
82
|
+
expect(provider.current_resource.version).to eql("unknown")
|
85
83
|
end
|
86
84
|
end
|
87
85
|
|
@@ -235,9 +233,9 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
235
233
|
end
|
236
234
|
end
|
237
235
|
|
238
|
-
it "returns
|
239
|
-
new_resource.installer_type(:
|
240
|
-
expect(provider.installer_type).to eql(:
|
236
|
+
it "returns @installer_type if it is set" do
|
237
|
+
provider.new_resource.installer_type(:downeaster)
|
238
|
+
expect(provider.installer_type).to eql(:downeaster)
|
241
239
|
end
|
242
240
|
|
243
241
|
it "sets installer_type to inno if the source contains inno" do
|
@@ -277,7 +275,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
277
275
|
|
278
276
|
it "raises an error" do
|
279
277
|
allow(::Kernel).to receive(:open).and_yield(StringIO.new(""))
|
280
|
-
new_resource.installer_type(nil)
|
278
|
+
provider.new_resource.installer_type(nil)
|
281
279
|
expect { provider.installer_type }.to raise_error(Chef::Exceptions::CannotDetermineWindowsInstallerType)
|
282
280
|
end
|
283
281
|
end
|
@@ -314,10 +312,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
314
312
|
let(:resource_source) { "https://foo.bar/calculator.exe" }
|
315
313
|
|
316
314
|
it "downloads the http resource" do
|
317
|
-
allow(
|
318
|
-
allow(provider).to receive(:installer_type).and_return(nil)
|
319
|
-
allow(File).to receive(:exist?).with("https\\foo.bar\\calculator.exe").and_return(false)
|
320
|
-
allow(provider).to receive(:compile_and_converge_action)
|
315
|
+
allow(File).to receive(:exist?).with('c:\cache\calculator.exe').and_return(false)
|
321
316
|
expect(provider).to receive(:download_source_file)
|
322
317
|
provider.run_action(:install)
|
323
318
|
end
|
@@ -405,7 +400,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
405
400
|
let(:resource_source) { "C:/a_missing_file.exe" }
|
406
401
|
let(:installer_type) { nil }
|
407
402
|
before do
|
408
|
-
allow(::File).to receive(:exist?).with(new_resource.source).and_return(false)
|
403
|
+
allow(::File).to receive(:exist?).with(provider.new_resource.source).and_return(false)
|
409
404
|
provider.load_current_resource
|
410
405
|
end
|
411
406
|
|
@@ -419,23 +414,51 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
419
414
|
Chef::Config[:why_run] = false
|
420
415
|
end
|
421
416
|
end
|
417
|
+
end
|
422
418
|
|
423
|
-
|
424
|
-
|
425
|
-
|
419
|
+
shared_context "valid checksum" do
|
420
|
+
context "checksum is valid" do
|
421
|
+
before do
|
422
|
+
allow(provider).to receive(:checksum).and_return("jiie00u3bbs92vsbhvgvklb2lasgh20ah")
|
423
|
+
end
|
426
424
|
|
427
|
-
|
425
|
+
it "does not raise the checksum mismatch exception" do
|
426
|
+
expect { provider.send(:validate_content!) }.to_not raise_error
|
427
|
+
end
|
428
|
+
end
|
429
|
+
end
|
430
|
+
|
431
|
+
shared_context "invalid checksum" do
|
432
|
+
context "checksum is invalid" do
|
433
|
+
before do
|
434
|
+
allow(provider).to receive(:checksum).and_return("kiie30u3bbs92vsbhvgvklb2lasgh20ah")
|
435
|
+
end
|
428
436
|
|
429
|
-
|
437
|
+
it "raises the checksum mismatch exception" do
|
438
|
+
expect { provider.send(:validate_content!) }.to raise_error(
|
439
|
+
Chef::Exceptions::ChecksumMismatch
|
440
|
+
)
|
441
|
+
end
|
430
442
|
end
|
443
|
+
end
|
431
444
|
|
432
|
-
|
433
|
-
|
434
|
-
|
445
|
+
describe "validate_content!" do
|
446
|
+
before(:each) do
|
447
|
+
new_resource.checksum("jiie00u3bbs92vsbhvgvklb2lasgh20ah")
|
448
|
+
end
|
449
|
+
|
450
|
+
context "checksum is in lowercase" do
|
451
|
+
include_context "valid checksum"
|
452
|
+
include_context "invalid checksum"
|
453
|
+
end
|
435
454
|
|
436
|
-
|
455
|
+
context "checksum is in uppercase" do
|
456
|
+
before do
|
457
|
+
new_resource.checksum = new_resource.checksum.upcase
|
458
|
+
end
|
437
459
|
|
438
|
-
|
460
|
+
include_context "valid checksum"
|
461
|
+
include_context "invalid checksum"
|
439
462
|
end
|
440
463
|
end
|
441
464
|
end
|