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
data/spec/spec_helper.rb
CHANGED
@@ -74,6 +74,8 @@ require "spec/support/local_gems.rb" if File.exists?(File.join(File.dirname(__FI
|
|
74
74
|
require "spec/support/platform_helpers"
|
75
75
|
require "spec/support/shared/unit/mock_shellout"
|
76
76
|
|
77
|
+
require "spec/support/recipe_dsl_helper"
|
78
|
+
|
77
79
|
# Autoloads support files
|
78
80
|
# Excludes support/platforms by default
|
79
81
|
# Do not change the gsub.
|
@@ -103,6 +105,12 @@ resource_priority_map ||= nil
|
|
103
105
|
provider_handler_map ||= nil
|
104
106
|
resource_handler_map ||= nil
|
105
107
|
|
108
|
+
class UnexpectedSystemExit < RuntimeError
|
109
|
+
def self.from(system_exit)
|
110
|
+
new(system_exit.message).tap { |e| e.set_backtrace(system_exit.backtrace) }
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
106
114
|
RSpec.configure do |config|
|
107
115
|
config.include(Matchers)
|
108
116
|
config.include(MockShellout::RSpec)
|
@@ -137,11 +145,9 @@ RSpec.configure do |config|
|
|
137
145
|
config.filter_run_excluding not_supported_on_aix: true if aix?
|
138
146
|
config.filter_run_excluding not_supported_on_solaris: true if solaris?
|
139
147
|
config.filter_run_excluding not_supported_on_gce: true if gce?
|
140
|
-
config.filter_run_excluding not_supported_on_nano: true if windows_nano_server?
|
141
148
|
config.filter_run_excluding win2012r2_only: true unless windows_2012r2?
|
142
149
|
config.filter_run_excluding windows64_only: true unless windows64?
|
143
150
|
config.filter_run_excluding windows32_only: true unless windows32?
|
144
|
-
config.filter_run_excluding windows_nano_only: true unless windows_nano_server?
|
145
151
|
config.filter_run_excluding windows_gte_10: true unless windows_gte_10?
|
146
152
|
config.filter_run_excluding windows_lt_10: true if windows_gte_10?
|
147
153
|
config.filter_run_excluding ruby64_only: true unless ruby_64bit?
|
@@ -160,7 +166,7 @@ RSpec.configure do |config|
|
|
160
166
|
config.filter_run_excluding linux_only: true unless linux?
|
161
167
|
config.filter_run_excluding aix_only: true unless aix?
|
162
168
|
config.filter_run_excluding suse_only: true unless suse?
|
163
|
-
config.filter_run_excluding
|
169
|
+
config.filter_run_excluding opensuse: true unless opensuse?
|
164
170
|
config.filter_run_excluding debian_family_only: true unless debian_family?
|
165
171
|
config.filter_run_excluding supports_cloexec: true unless supports_cloexec?
|
166
172
|
config.filter_run_excluding selinux_only: true unless selinux_enabled?
|
@@ -282,6 +288,15 @@ RSpec.configure do |config|
|
|
282
288
|
config.before(:suite) do
|
283
289
|
ARGV.clear
|
284
290
|
end
|
291
|
+
|
292
|
+
# Protect Rspec from accidental exit(0) causing rspec to terminate without error
|
293
|
+
config.around(:example) do |ex|
|
294
|
+
begin
|
295
|
+
ex.run
|
296
|
+
rescue SystemExit => e
|
297
|
+
raise UnexpectedSystemExit.from(e)
|
298
|
+
end
|
299
|
+
end
|
285
300
|
end
|
286
301
|
|
287
302
|
require "webrick/utils"
|
@@ -27,7 +27,7 @@ Chef::Log.level(Chef::Config.log_level)
|
|
27
27
|
Chef::Config.solo(false)
|
28
28
|
|
29
29
|
def sha256_checksum(path)
|
30
|
-
OpenSSL::Digest
|
30
|
+
OpenSSL::Digest.hexdigest("SHA256", File.read(path))
|
31
31
|
end
|
32
32
|
|
33
33
|
# extracted from Ruby < 2.5 to return a unique temp file name without creating it
|
@@ -65,7 +65,7 @@ end
|
|
65
65
|
def system_windows_service_gem?
|
66
66
|
windows_service_gem_check_command = %{ruby -r "win32/daemon" -e ":noop" > #{DEV_NULL} 2>&1}
|
67
67
|
if defined?(Bundler)
|
68
|
-
Bundler.
|
68
|
+
Bundler.with_unbundled_env do
|
69
69
|
# This returns true if the gem can be loaded
|
70
70
|
system(windows_service_gem_check_command)
|
71
71
|
end
|
@@ -88,11 +88,6 @@ def windows_powershell_dsc?
|
|
88
88
|
supports_dsc
|
89
89
|
end
|
90
90
|
|
91
|
-
def windows_nano_server?
|
92
|
-
require "chef/platform/query_helpers"
|
93
|
-
Chef::Platform.windows_nano_server?
|
94
|
-
end
|
95
|
-
|
96
91
|
def windows_user_right?(right)
|
97
92
|
return false unless windows?
|
98
93
|
|
@@ -100,19 +95,6 @@ def windows_user_right?(right)
|
|
100
95
|
Chef::ReservedNames::Win32::Security.get_account_right(ENV["USERNAME"]).include?(right)
|
101
96
|
end
|
102
97
|
|
103
|
-
def mac_osx_106?
|
104
|
-
if File.exists? "/usr/bin/sw_vers"
|
105
|
-
result = ShellHelpers.shell_out("/usr/bin/sw_vers")
|
106
|
-
result.stdout.each_line do |line|
|
107
|
-
if line =~ /^ProductVersion:\s10.6.*$/
|
108
|
-
return true
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
false
|
114
|
-
end
|
115
|
-
|
116
98
|
def mac_osx_1014?
|
117
99
|
if mac_osx?
|
118
100
|
ver = Chef::Version.new(ohai[:platform_version])
|
@@ -179,8 +161,8 @@ def rhel6?
|
|
179
161
|
rhel? && !!(ohai[:platform_version].to_i == 6)
|
180
162
|
end
|
181
163
|
|
182
|
-
def
|
183
|
-
suse? && !!(ohai[:platform_version].to_i
|
164
|
+
def opensuse?
|
165
|
+
suse? && !!(ohai[:platform_version].to_i >= 15)
|
184
166
|
end
|
185
167
|
|
186
168
|
def rhel7?
|
@@ -0,0 +1,83 @@
|
|
1
|
+
#
|
2
|
+
# This is a helper for functional tests to embed the recipe DSL directly into the rspec example blocks using
|
3
|
+
# unified mode.
|
4
|
+
#
|
5
|
+
# If you wind up wanting to stub/expect on internal details of the resource/provider you are not testing the
|
6
|
+
# public API and are trying to write a unit test, which this is not designed for.
|
7
|
+
#
|
8
|
+
# If you want to start writing full recipes and testing them, doing notifies/subscribes/etc then you are writing
|
9
|
+
# an integration test, and not a functional single-resource test, which this is not designed for.
|
10
|
+
#
|
11
|
+
# Examples:
|
12
|
+
#
|
13
|
+
# it "creates a file" do
|
14
|
+
# FileUtils.rm_f("/tmp/foo.xyz")
|
15
|
+
# file "/tmp/foo.xyz" do # please use proper tmpdir though
|
16
|
+
# content "whatever"
|
17
|
+
# end.should_be_updated
|
18
|
+
# expect(IO.read("/tmp/foo.xyz").to eql("content")
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# it "is idempotent" do
|
22
|
+
# FileUtils.rm_f("/tmp/foo.xyz")
|
23
|
+
# file "/tmp/foo.xyz" do # please use proper tmpdir though
|
24
|
+
# content "whatever"
|
25
|
+
# end.should_be_updated
|
26
|
+
# file "/tmp/foo.xyz" do # please use proper tmpdir though
|
27
|
+
# content "whatever"
|
28
|
+
# end.should_not_be_updated
|
29
|
+
# expect(IO.read("/tmp/foo.xyz").to eql("content")
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# it "has a failure" do
|
33
|
+
# FileUtils.rm_f("/tmp/foo.xyz")
|
34
|
+
# expect { file "/tmp/lksjdflksjdf/foo.xyz" do
|
35
|
+
# content "whatever"
|
36
|
+
# end }.to raise_error(Chef::Exception::EnclosingDirectoryDoesNotExist)
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
module RecipeDSLHelper
|
40
|
+
include Chef::DSL::Recipe
|
41
|
+
def event_dispatch
|
42
|
+
@event_dispatch ||= Chef::EventDispatch::Dispatcher.new
|
43
|
+
end
|
44
|
+
|
45
|
+
def node
|
46
|
+
@node ||= Chef::Node.new.tap do |n|
|
47
|
+
# clone the global ohai data to keep tests fast but reasonably isolated
|
48
|
+
n.consume_external_attrs(OHAI_SYSTEM.data.dup, {})
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def run_context
|
53
|
+
@run_context ||= Chef::RunContext.new(node, {}, event_dispatch).tap do |rc|
|
54
|
+
rc.resource_collection.unified_mode = true
|
55
|
+
Chef::Runner.new(rc)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def cookbook_name
|
60
|
+
"rspec"
|
61
|
+
end
|
62
|
+
|
63
|
+
def recipe_name
|
64
|
+
"default"
|
65
|
+
end
|
66
|
+
|
67
|
+
def declare_resource(type, name, created_at: nil, run_context: self.run_context, &resource_attrs_block)
|
68
|
+
created_at = caller[0]
|
69
|
+
rspec_context = self
|
70
|
+
# we slightly abuse the "enclosing_provider" method_missing magic to send methods to the rspec example block so that
|
71
|
+
# rspec `let` methods work as arguments to resource properties
|
72
|
+
resource = super(type, name, created_at: created_at, run_context: run_context, enclosing_provider: rspec_context, &resource_attrs_block)
|
73
|
+
# we also inject these methods to make terse expression of checking the updated status (so it is more readiable and
|
74
|
+
# therefore should get used more -- even though it is "should" vs. "expect")
|
75
|
+
resource.define_singleton_method(:should_be_updated) do
|
76
|
+
rspec_context.expect(self).to be_updated
|
77
|
+
end
|
78
|
+
resource.define_singleton_method(:should_not_be_updated) do
|
79
|
+
rspec_context.expect(self).not_to be_updated
|
80
|
+
end
|
81
|
+
resource
|
82
|
+
end
|
83
|
+
end
|
@@ -35,11 +35,11 @@ module ChefHTTPShared
|
|
35
35
|
content
|
36
36
|
end
|
37
37
|
|
38
|
-
def start_tiny_server(server_opts
|
38
|
+
def start_tiny_server(**server_opts)
|
39
39
|
nyan_uncompressed_size = File::Stat.new(nyan_uncompressed_filename).size
|
40
40
|
nyan_compressed_size = File::Stat.new(nyan_compressed_filename).size
|
41
41
|
|
42
|
-
@server = TinyServer::Manager.new(server_opts)
|
42
|
+
@server = TinyServer::Manager.new(**server_opts)
|
43
43
|
@server.start
|
44
44
|
@api = TinyServer::API.instance
|
45
45
|
@api.clear
|
@@ -99,7 +99,7 @@ shared_context Chef::Resource::WindowsScript do
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
-
context "when the guard's architecture is specified as 32-bit"
|
102
|
+
context "when the guard's architecture is specified as 32-bit" do
|
103
103
|
let (:guard_architecture) { :i386 }
|
104
104
|
it "executes a 32-bit guard" do
|
105
105
|
resource.only_if resource_guard_command, architecture: guard_architecture
|
@@ -107,17 +107,6 @@ shared_context Chef::Resource::WindowsScript do
|
|
107
107
|
expect(get_guard_process_architecture).to eq("x86")
|
108
108
|
end
|
109
109
|
end
|
110
|
-
|
111
|
-
context "when the guard's architecture is specified as 32-bit", :windows_nano_only do
|
112
|
-
let (:guard_architecture) { :i386 }
|
113
|
-
it "raises an error" do
|
114
|
-
resource.only_if resource_guard_command, architecture: guard_architecture
|
115
|
-
expect { resource.run_action(:run) }.to raise_error(
|
116
|
-
Chef::Exceptions::Win32ArchitectureIncorrect,
|
117
|
-
/cannot execute script with requested architecture 'i386' on Windows Nano Server/
|
118
|
-
)
|
119
|
-
end
|
120
|
-
end
|
121
110
|
end
|
122
111
|
end
|
123
112
|
|
@@ -157,7 +146,7 @@ shared_context Chef::Resource::WindowsScript do
|
|
157
146
|
shared_examples_for "a script whose file system location cannot be accessed by other non-admin users" do
|
158
147
|
let(:ruby_access_command) { file_access_command }
|
159
148
|
it "generates a script in the local file system that prevents read access to other non-admin users" do
|
160
|
-
shell_out!(access_command,
|
149
|
+
shell_out!(access_command, user: windows_nonadmin_user, password: windows_nonadmin_user_password, returns: [access_denied_sentinel])
|
161
150
|
end
|
162
151
|
end
|
163
152
|
|
@@ -218,8 +207,6 @@ shared_context Chef::Resource::WindowsScript do
|
|
218
207
|
|
219
208
|
context "when evaluating guards" do
|
220
209
|
it "has a guard_interpreter attribute set to the short name of the resource" do
|
221
|
-
pending "powershell.exe always exits with 0 on nano" if Chef::Platform.windows_nano_server?
|
222
|
-
|
223
210
|
expect(resource.guard_interpreter).to eq(resource.resource_name)
|
224
211
|
resource.not_if "findstr.exe /thiscommandhasnonzeroexitstatus"
|
225
212
|
expect(Chef::Resource).to receive(:resource_for_node).and_call_original
|
@@ -238,7 +225,7 @@ shared_context Chef::Resource::WindowsScript do
|
|
238
225
|
it_behaves_like "a script resource with architecture attribute"
|
239
226
|
end
|
240
227
|
|
241
|
-
context "when the architecture attribute is :i386"
|
228
|
+
context "when the architecture attribute is :i386" do
|
242
229
|
let(:resource_architecture) { :i386 }
|
243
230
|
it_behaves_like "a script resource with architecture attribute"
|
244
231
|
end
|
@@ -170,21 +170,24 @@ module KnifeSupport
|
|
170
170
|
|
171
171
|
def should_result_in(expected)
|
172
172
|
expected[:stdout] = "" unless expected[:stdout]
|
173
|
+
expected[:stdout] = expected[:stdout].is_a?(String) ? expected[:stdout].gsub(/[ \t\f\v]+$/, "") : expected[:stdout]
|
173
174
|
expected[:stderr] = "" unless expected[:stderr]
|
175
|
+
expected[:stderr] = expected[:stderr].is_a?(String) ? expected[:stderr].gsub(/[ \t\f\v]+$/, "") : expected[:stderr]
|
174
176
|
expected[:exit_code] = 0 unless expected[:exit_code]
|
175
177
|
# TODO make this go away
|
176
178
|
stderr_actual = @stderr.sub(/^WARNING: No knife configuration file found\n/, "")
|
177
|
-
|
178
|
-
if expected[:stderr].is_a?(Regexp)
|
179
|
-
expect(stderr_actual).to match(expected[:stderr])
|
180
|
-
else
|
181
|
-
expect(stderr_actual).to eq(expected[:stderr])
|
182
|
-
end
|
179
|
+
stderr_actual = stderr_actual.gsub(/[ \t\f\v]+$/, "")
|
183
180
|
stdout_actual = @stdout
|
181
|
+
stdout_actual = stdout_actual.gsub(/[ \t\f\v]+$/, "")
|
184
182
|
if ChefUtils.windows?
|
185
183
|
stderr_actual = stderr_actual.gsub("\r\n", "\n")
|
186
184
|
stdout_actual = stdout_actual.gsub("\r\n", "\n")
|
187
185
|
end
|
186
|
+
if expected[:stderr].is_a?(Regexp)
|
187
|
+
expect(stderr_actual).to match(expected[:stderr])
|
188
|
+
else
|
189
|
+
expect(stderr_actual).to eq(expected[:stderr])
|
190
|
+
end
|
188
191
|
expect(@exit_code).to eq(expected[:exit_code])
|
189
192
|
if expected[:stdout].is_a?(Regexp)
|
190
193
|
expect(stdout_actual).to match(expected[:stdout])
|
@@ -23,7 +23,7 @@
|
|
23
23
|
class MockShellout
|
24
24
|
module RSpec
|
25
25
|
def mock_shellout_command(command, **result)
|
26
|
-
allow(::Mixlib::ShellOut).to receive(:new).with(command, anything).and_return MockShellout.new(result)
|
26
|
+
allow(::Mixlib::ShellOut).to receive(:new).with(command, anything).and_return MockShellout.new(**result)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -106,25 +106,25 @@ shared_examples_for "a useradd-based user provider" do |supported_useradd_option
|
|
106
106
|
|
107
107
|
describe "when the resource has a different home directory and supports home directory management" do
|
108
108
|
before do
|
109
|
-
@new_resource.home "/
|
109
|
+
@new_resource.home "/banana"
|
110
110
|
@new_resource.manage_home true
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should set -m -d /homedir" do
|
114
|
-
expect(provider.universal_options).to eq(%w{-d /
|
114
|
+
expect(provider.universal_options).to eq(%w{-d /banana})
|
115
115
|
expect(provider.usermod_options).to eq(%w{-m})
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
119
|
describe "when the resource has a different home directory and supports home directory management (using real attributes)" do
|
120
120
|
before do
|
121
|
-
@new_resource.home("/
|
121
|
+
@new_resource.home("/banana")
|
122
122
|
@new_resource.manage_home true
|
123
123
|
@new_resource.non_unique false
|
124
124
|
end
|
125
125
|
|
126
126
|
it "should set -m -d /homedir" do
|
127
|
-
expect(provider.universal_options).to eq(%w{-d /
|
127
|
+
expect(provider.universal_options).to eq(%w{-d /banana})
|
128
128
|
expect(provider.usermod_options).to eq(%w{-m})
|
129
129
|
end
|
130
130
|
end
|
@@ -46,6 +46,7 @@ describe Chef::Application::Apply do
|
|
46
46
|
it "should read text properly" do
|
47
47
|
expect(@app.read_recipe_file(@recipe_file_name)[0]).to eq(@recipe_text)
|
48
48
|
end
|
49
|
+
|
49
50
|
it "should return a file_handle" do
|
50
51
|
expect(@app.read_recipe_file(@recipe_file_name)[1]).to be_instance_of(RSpec::Mocks::Double)
|
51
52
|
end
|
@@ -57,6 +58,7 @@ describe Chef::Application::Apply do
|
|
57
58
|
@app.read_recipe_file(nil)
|
58
59
|
end
|
59
60
|
end
|
61
|
+
|
60
62
|
describe "when recipe doesn't exist" do
|
61
63
|
before do
|
62
64
|
allow(File).to receive(:exist?).with(@recipe_path).and_return(false)
|
@@ -68,6 +70,7 @@ describe Chef::Application::Apply do
|
|
68
70
|
end
|
69
71
|
end
|
70
72
|
end
|
73
|
+
|
71
74
|
describe "temp_recipe_file" do
|
72
75
|
before do
|
73
76
|
@app.instance_variable_set(:@recipe_text, @recipe_text)
|
@@ -303,8 +303,12 @@ describe Chef::Application::Client, "reconfigure" do
|
|
303
303
|
context "when there is no new config" do
|
304
304
|
let(:config_exists) { false }
|
305
305
|
|
306
|
-
it "does not
|
306
|
+
it "does not update the config" do
|
307
307
|
expect(Chef::Config).not_to receive(:from_string)
|
308
|
+
.with(
|
309
|
+
"new_config",
|
310
|
+
File.join("the_path_to_the_repo", ".chef/config.rb")
|
311
|
+
)
|
308
312
|
|
309
313
|
app.reconfigure
|
310
314
|
end
|
@@ -194,7 +194,6 @@ describe Chef::Application do
|
|
194
194
|
it "should initialise the chef logger" do
|
195
195
|
allow(Chef::Log).to receive(:level=)
|
196
196
|
@monologger = double("Monologger")
|
197
|
-
expect(MonoLogger).to receive(:new).with(Chef::Config[:log_location]).and_return(@monologger)
|
198
197
|
allow(MonoLogger).to receive(:new).with(STDOUT).and_return(@monologger)
|
199
198
|
allow(@monologger).to receive(:formatter=).with(Chef::Log.logger.formatter)
|
200
199
|
expect(Chef::Log).to receive(:init).with(@monologger)
|
@@ -272,7 +271,7 @@ describe Chef::Application do
|
|
272
271
|
it "it sets log_location to an instance of #{expected_class}" do
|
273
272
|
expect(expected_class).to receive(:new).with no_args
|
274
273
|
@app.configure_logging
|
275
|
-
expect(Chef::Config[:log_location]).to
|
274
|
+
expect(Chef::Config[:log_location]).to eq([ logger_instance, STDOUT ])
|
276
275
|
end
|
277
276
|
end
|
278
277
|
end
|
data/spec/unit/client_spec.rb
CHANGED
@@ -308,13 +308,15 @@ describe Chef::Client do
|
|
308
308
|
end
|
309
309
|
|
310
310
|
describe "eol release warning" do
|
311
|
-
it "warns when
|
311
|
+
it "warns when running an EOL release" do
|
312
|
+
stub_const("Chef::VERSION", 15)
|
312
313
|
allow(Time).to receive(:now).and_return(Time.new(2021, 5, 1, 5))
|
313
314
|
expect(logger).to receive(:warn).with(/This release of.*became end of life \(EOL\) on May 1st 2021/)
|
314
315
|
client.warn_if_eol
|
315
316
|
end
|
316
317
|
|
317
|
-
it "does not warn when
|
318
|
+
it "does not warn when running an non-EOL release" do
|
319
|
+
stub_const("Chef::VERSION", 15)
|
318
320
|
allow(Time).to receive(:now).and_return(Time.new(2021, 4, 31))
|
319
321
|
expect(logger).to_not receive(:warn).with(/became end of life/)
|
320
322
|
client.warn_if_eol
|
@@ -349,7 +351,7 @@ describe Chef::Client do
|
|
349
351
|
describe "configuring output formatters" do
|
350
352
|
context "when no formatter has been configured" do
|
351
353
|
it "configures the :doc formatter" do
|
352
|
-
expect(client.formatters_for_run).to eq([[:doc]])
|
354
|
+
expect(client.formatters_for_run).to eq([[:doc, nil]])
|
353
355
|
end
|
354
356
|
|
355
357
|
context "and force_logger is set" do
|
@@ -368,7 +370,7 @@ describe Chef::Client do
|
|
368
370
|
end
|
369
371
|
|
370
372
|
it "configures the :doc formatter" do
|
371
|
-
expect(client.formatters_for_run).to eq([[:doc]])
|
373
|
+
expect(client.formatters_for_run).to eq([[:doc, nil]])
|
372
374
|
end
|
373
375
|
end
|
374
376
|
|
@@ -379,7 +381,7 @@ describe Chef::Client do
|
|
379
381
|
end
|
380
382
|
|
381
383
|
it "configures the :doc formatter" do
|
382
|
-
expect(client.formatters_for_run).to eq([[:doc]])
|
384
|
+
expect(client.formatters_for_run).to eq([[:doc, nil]])
|
383
385
|
end
|
384
386
|
end
|
385
387
|
end
|