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
@@ -39,7 +39,10 @@ module KnifeSupport
|
|
39
39
|
|
40
40
|
# Work on machines where we can't access /var
|
41
41
|
Dir.mktmpdir("checksums") do |checksums_cache_dir|
|
42
|
-
Chef::Config[:
|
42
|
+
Chef::Config[:cache_options] = {
|
43
|
+
path: checksums_cache_dir,
|
44
|
+
skip_expires: true,
|
45
|
+
}
|
43
46
|
|
44
47
|
# This is Chef::Knife.run without load_commands--we'll load stuff
|
45
48
|
# ourselves, thank you very much
|
@@ -114,7 +117,7 @@ module KnifeSupport
|
|
114
117
|
ensure
|
115
118
|
Chef::Log.use_log_devices(old_loggers)
|
116
119
|
Chef::Log.level = old_log_level
|
117
|
-
Chef::Config.delete(:
|
120
|
+
Chef::Config.delete(:cache_options)
|
118
121
|
Chef::Config.delete(:concurrency)
|
119
122
|
end
|
120
123
|
|
@@ -167,21 +170,24 @@ module KnifeSupport
|
|
167
170
|
|
168
171
|
def should_result_in(expected)
|
169
172
|
expected[:stdout] = "" unless expected[:stdout]
|
173
|
+
expected[:stdout] = expected[:stdout].is_a?(String) ? expected[:stdout].gsub(/[ \t\f\v]+$/, "") : expected[:stdout]
|
170
174
|
expected[:stderr] = "" unless expected[:stderr]
|
175
|
+
expected[:stderr] = expected[:stderr].is_a?(String) ? expected[:stderr].gsub(/[ \t\f\v]+$/, "") : expected[:stderr]
|
171
176
|
expected[:exit_code] = 0 unless expected[:exit_code]
|
172
177
|
# TODO make this go away
|
173
178
|
stderr_actual = @stderr.sub(/^WARNING: No knife configuration file found\n/, "")
|
174
|
-
|
175
|
-
if expected[:stderr].is_a?(Regexp)
|
176
|
-
expect(stderr_actual).to match(expected[:stderr])
|
177
|
-
else
|
178
|
-
expect(stderr_actual).to eq(expected[:stderr])
|
179
|
-
end
|
179
|
+
stderr_actual = stderr_actual.gsub(/[ \t\f\v]+$/, "")
|
180
180
|
stdout_actual = @stdout
|
181
|
+
stdout_actual = stdout_actual.gsub(/[ \t\f\v]+$/, "")
|
181
182
|
if ChefUtils.windows?
|
182
183
|
stderr_actual = stderr_actual.gsub("\r\n", "\n")
|
183
184
|
stdout_actual = stdout_actual.gsub("\r\n", "\n")
|
184
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
|
185
191
|
expect(@exit_code).to eq(expected[:exit_code])
|
186
192
|
if expected[:stdout].is_a?(Regexp)
|
187
193
|
expect(stdout_actual).to match(expected[:stdout])
|
@@ -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
|
@@ -94,13 +94,6 @@ describe Chef::Application do
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
-
describe "when enforce_license is set to false" do
|
98
|
-
it "should not check the license acceptance" do
|
99
|
-
expect(@app).to_not receive(:check_license_acceptance)
|
100
|
-
@app.run(enforce_license: false)
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
97
|
it "should run the actual application" do
|
105
98
|
expect(@app).to receive(:run_application).and_return(true)
|
106
99
|
@app.run
|
@@ -201,7 +194,6 @@ describe Chef::Application do
|
|
201
194
|
it "should initialise the chef logger" do
|
202
195
|
allow(Chef::Log).to receive(:level=)
|
203
196
|
@monologger = double("Monologger")
|
204
|
-
expect(MonoLogger).to receive(:new).with(Chef::Config[:log_location]).and_return(@monologger)
|
205
197
|
allow(MonoLogger).to receive(:new).with(STDOUT).and_return(@monologger)
|
206
198
|
allow(@monologger).to receive(:formatter=).with(Chef::Log.logger.formatter)
|
207
199
|
expect(Chef::Log).to receive(:init).with(@monologger)
|
@@ -279,7 +271,7 @@ describe Chef::Application do
|
|
279
271
|
it "it sets log_location to an instance of #{expected_class}" do
|
280
272
|
expect(expected_class).to receive(:new).with no_args
|
281
273
|
@app.configure_logging
|
282
|
-
expect(Chef::Config[:log_location]).to
|
274
|
+
expect(Chef::Config[:log_location]).to eq([ logger_instance, STDOUT ])
|
283
275
|
end
|
284
276
|
end
|
285
277
|
end
|
@@ -25,9 +25,11 @@ describe Chef::ChefFS::FileSystem::OperationFailedError do
|
|
25
25
|
|
26
26
|
context "has a cause attribute and HTTP result code is 400" do
|
27
27
|
it "include error cause" do
|
28
|
+
allow_message_expectations_on_nil
|
28
29
|
response_body = '{"error":["Invalid key test in request body"]}'
|
29
|
-
response
|
30
|
-
|
30
|
+
allow(@response).to receive(:code).and_return("400")
|
31
|
+
allow(@response).to receive(:body).and_return(response_body)
|
32
|
+
exception = Net::HTTPClientException.new("(exception) unauthorized", @response)
|
31
33
|
expect do
|
32
34
|
raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, exception), error_message
|
33
35
|
end.to raise_error(Chef::ChefFS::FileSystem::OperationFailedError, "#{error_message} cause: #{response_body}")
|
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
|
@@ -78,7 +78,7 @@ describe Chef::Cookbook::GemInstaller do
|
|
78
78
|
|
79
79
|
it "generates a valid Gemfile when Chef::Config[:rubygems_url] is set to a String" do
|
80
80
|
expect(gem_installer).to receive(:shell_out!).and_return(shell_out)
|
81
|
-
Chef::Config[:rubygems_url] = "https://
|
81
|
+
Chef::Config[:rubygems_url] = "https://rubygems.org"
|
82
82
|
expect { gem_installer.install }.to_not raise_error
|
83
83
|
|
84
84
|
expect(bundler_dsl.dependencies.find { |d| d.name == "httpclient" }.requirements_list.length).to eql(2)
|
@@ -86,7 +86,7 @@ describe Chef::Cookbook::GemInstaller do
|
|
86
86
|
|
87
87
|
it "generates a valid Gemfile when Chef::Config[:rubygems_url] is set to an Array" do
|
88
88
|
expect(gem_installer).to receive(:shell_out!).and_return(shell_out)
|
89
|
-
Chef::Config[:rubygems_url] = [ "https://
|
89
|
+
Chef::Config[:rubygems_url] = [ "https://rubygems.org" ]
|
90
90
|
|
91
91
|
expect { gem_installer.install }.to_not raise_error
|
92
92
|
|
@@ -95,8 +95,7 @@ describe Chef::Cookbook::GemInstaller do
|
|
95
95
|
|
96
96
|
it "skip metadata installation when Chef::Config[:skip_gem_metadata_installation] is set to true" do
|
97
97
|
Chef::Config[:skip_gem_metadata_installation] = true
|
98
|
-
expect(gem_installer).to_not receive(:shell_out!)
|
99
|
-
expect(gem_installer.install).to be_nil
|
98
|
+
expect(gem_installer.install).to_not receive(:shell_out!)
|
100
99
|
end
|
101
100
|
|
102
101
|
it "install metadata when Chef::Config[:skip_gem_metadata_installation] is not true" do
|
@@ -29,7 +29,7 @@ describe Chef::Cookbook::Metadata do
|
|
29
29
|
@fields = %i{name description long_description maintainer
|
30
30
|
maintainer_email license platforms dependencies
|
31
31
|
providing recipes version source_url issues_url
|
32
|
-
privacy ohai_versions chef_versions gems}
|
32
|
+
privacy ohai_versions chef_versions gems eager_load_libraries}
|
33
33
|
end
|
34
34
|
|
35
35
|
it "does not depend on object identity for equality" do
|
@@ -127,6 +127,10 @@ describe Chef::Cookbook::Metadata do
|
|
127
127
|
it "is not private" do
|
128
128
|
expect(metadata.privacy).to eq(false)
|
129
129
|
end
|
130
|
+
|
131
|
+
it "has eager_load_libraries set to true" do
|
132
|
+
expect(metadata.eager_load_libraries).to eq(true)
|
133
|
+
end
|
130
134
|
end
|
131
135
|
|
132
136
|
describe "validation" do
|
@@ -179,6 +183,7 @@ describe Chef::Cookbook::Metadata do
|
|
179
183
|
source_url: "http://example.com",
|
180
184
|
issues_url: "http://example.com/issues",
|
181
185
|
privacy: true,
|
186
|
+
eager_load_libraries: false,
|
182
187
|
}
|
183
188
|
params.sort_by(&:to_s).each do |field, field_value|
|
184
189
|
describe field do
|
@@ -269,8 +274,33 @@ describe Chef::Cookbook::Metadata do
|
|
269
274
|
|
270
275
|
it "errors on self-dependencies" do
|
271
276
|
metadata.name("foo")
|
272
|
-
expect { metadata.depends("foo") }.to raise_error
|
273
|
-
|
277
|
+
expect { metadata.depends("foo") }.to raise_error(RuntimeError, /Cookbook depends on itself/)
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
describe "eager_load_libraries" do
|
282
|
+
it "can be set to true" do
|
283
|
+
metadata.send(:eager_load_libraries, true)
|
284
|
+
expect(metadata.send(:eager_load_libraries)).to eql(true)
|
285
|
+
end
|
286
|
+
|
287
|
+
it "can be set to false" do
|
288
|
+
metadata.send(:eager_load_libraries, false)
|
289
|
+
expect(metadata.send(:eager_load_libraries)).to eql(false)
|
290
|
+
end
|
291
|
+
|
292
|
+
it "can be set to a string" do
|
293
|
+
metadata.send(:eager_load_libraries, "default.rb")
|
294
|
+
expect(metadata.send(:eager_load_libraries)).to eql("default.rb")
|
295
|
+
end
|
296
|
+
|
297
|
+
it "can be set to an array" do
|
298
|
+
metadata.send(:eager_load_libraries, [ "default.rb", "foo/*/**.rb" ])
|
299
|
+
expect(metadata.send(:eager_load_libraries)).to eql([ "default.rb", "foo/*/**.rb" ])
|
300
|
+
end
|
301
|
+
|
302
|
+
it "cannot be set to a number" do
|
303
|
+
expect { metadata.send(:eager_load_libraries, 1) }.to raise_error(Chef::Exceptions::ValidationFailed)
|
274
304
|
end
|
275
305
|
end
|
276
306
|
|
@@ -448,10 +478,11 @@ describe Chef::Cookbook::Metadata do
|
|
448
478
|
metadata.version "1.2.3"
|
449
479
|
metadata.gem "foo", "~> 1.2"
|
450
480
|
metadata.gem "bar", ">= 2.2", "< 4.0"
|
451
|
-
metadata.chef_version "
|
452
|
-
metadata.chef_version "
|
453
|
-
metadata.ohai_version "
|
454
|
-
metadata.ohai_version "
|
481
|
+
metadata.chef_version "< 11.18.10", ">= 11.14.2"
|
482
|
+
metadata.chef_version "< 12.5.1", ">= 12.2.1"
|
483
|
+
metadata.ohai_version "< 7.5.0", ">= 7.1.0"
|
484
|
+
metadata.ohai_version "< 8.6.0", ">= 8.0.1"
|
485
|
+
metadata.eager_load_libraries [ "default.rb", "foo/*/**.rb" ]
|
455
486
|
end
|
456
487
|
|
457
488
|
it "should produce the same output from to_json and Chef::JSONCompat" do
|
@@ -537,18 +568,6 @@ describe Chef::Cookbook::Metadata do
|
|
537
568
|
@hash = metadata.to_hash
|
538
569
|
end
|
539
570
|
|
540
|
-
it "should transform deprecated greater than syntax for :dependencies" do
|
541
|
-
@hash[:dependencies.to_s]["foo::bar"] = ">> 0.2"
|
542
|
-
deserial = Chef::Cookbook::Metadata.from_hash(@hash)
|
543
|
-
expect(deserial.send(:dependencies)["foo::bar"]).to eq("> 0.2")
|
544
|
-
end
|
545
|
-
|
546
|
-
it "should transform deprecated less than syntax for :dependencies" do
|
547
|
-
@hash[:dependencies.to_s]["foo::bar"] = "<< 0.2"
|
548
|
-
deserial = Chef::Cookbook::Metadata.from_hash(@hash)
|
549
|
-
expect(deserial.send(:dependencies)["foo::bar"]).to eq("< 0.2")
|
550
|
-
end
|
551
|
-
|
552
571
|
it "should ignore multiple dependency constraints for :dependencies" do
|
553
572
|
@hash[:dependencies.to_s]["foo::bar"] = [ ">= 1.0", "<= 5.2" ]
|
554
573
|
deserial = Chef::Cookbook::Metadata.from_hash(@hash)
|
data/spec/unit/data_bag_spec.rb
CHANGED
@@ -243,7 +243,7 @@ describe Chef::DataBag do
|
|
243
243
|
|
244
244
|
expect do
|
245
245
|
Chef::DataBag.load("foo")
|
246
|
-
end.to raise_error Chef::Exceptions::InvalidDataBagPath, "Data bag path '/var/chef/data_bags'
|
246
|
+
end.to raise_error Chef::Exceptions::InvalidDataBagPath, "Data bag path '/var/chef/data_bags' is invalid"
|
247
247
|
end
|
248
248
|
|
249
249
|
end
|
@@ -19,6 +19,12 @@ require_relative "../spec_helper"
|
|
19
19
|
require "chef/data_collector"
|
20
20
|
require "socket"
|
21
21
|
|
22
|
+
#
|
23
|
+
# FIXME FIXME FIXME: What we need to do here is have the ability to construct a real resource collection
|
24
|
+
# with some test resources that will correctly be up-to-date/updated/skipped/failed/unprocessed and really
|
25
|
+
# converge a client with them (sort of chefspec-like construction of a Chef::Client but with the actions
|
26
|
+
# actually running -- another testing requirement similar to the integration testing framework in cheffish as well)
|
27
|
+
#
|
22
28
|
describe Chef::DataCollector do
|
23
29
|
before(:each) do
|
24
30
|
Chef::Config[:enable_reporting] = true
|
@@ -30,9 +36,23 @@ describe Chef::DataCollector do
|
|
30
36
|
|
31
37
|
let(:data_collector) { Chef::DataCollector::Reporter.new(events) }
|
32
38
|
|
33
|
-
let(:new_resource)
|
39
|
+
let(:new_resource) do
|
40
|
+
new_resource = Chef::Resource::File.new("/tmp/a-file.txt")
|
41
|
+
new_resource.checksum nil
|
42
|
+
new_resource
|
43
|
+
end
|
44
|
+
|
45
|
+
let(:current_resource) do
|
46
|
+
current_resource = Chef::Resource::File.new("/tmp/a-file.txt")
|
47
|
+
current_resource.checksum "1234123412341234123412341234123412341234123412341234123412341234"
|
48
|
+
current_resource
|
49
|
+
end
|
34
50
|
|
35
|
-
let(:
|
51
|
+
let(:after_resource) do
|
52
|
+
after_resource = Chef::Resource::File.new("/tmp/a-file.txt")
|
53
|
+
after_resource.checksum "6789678967896789678967896789678967896789678967896789678967896789"
|
54
|
+
after_resource
|
55
|
+
end
|
36
56
|
|
37
57
|
let(:events) { Chef::EventDispatch::Dispatcher.new }
|
38
58
|
|
@@ -130,10 +150,10 @@ describe Chef::DataCollector do
|
|
130
150
|
new_resource.respond_to?(:diff) && %w{updated failed}.include?(status)
|
131
151
|
end
|
132
152
|
|
133
|
-
def resource_record_for(
|
153
|
+
def resource_record_for(new_resource, before_resource, after_resource, action, status, duration)
|
134
154
|
{
|
135
|
-
"after" =>
|
136
|
-
"before" =>
|
155
|
+
"after" => after_resource&.state_for_resource_reporter || {},
|
156
|
+
"before" => before_resource&.state_for_resource_reporter || {},
|
137
157
|
"cookbook_name" => cookbook_name,
|
138
158
|
"cookbook_version" => cookbook_version.version,
|
139
159
|
"delta" => resource_has_diff(new_resource, status) ? new_resource.diff : "",
|
@@ -634,13 +654,14 @@ describe Chef::DataCollector do
|
|
634
654
|
context "when the run contains a file resource that is up-to-date" do
|
635
655
|
let(:total_resource_count) { 1 }
|
636
656
|
let(:updated_resource_count) { 0 }
|
637
|
-
let(:resource_record) { [ resource_record_for(current_resource,
|
657
|
+
let(:resource_record) { [ resource_record_for(new_resource, current_resource, after_resource, :create, "up-to-date", "1234") ] }
|
638
658
|
let(:status) { "success" }
|
639
659
|
|
640
660
|
before do
|
641
661
|
events.resource_action_start(new_resource, :create)
|
642
662
|
events.resource_current_state_loaded(new_resource, :create, current_resource)
|
643
663
|
events.resource_up_to_date(new_resource, :create)
|
664
|
+
events.resource_after_state_loaded(new_resource, :create, after_resource)
|
644
665
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
645
666
|
events.resource_completed(new_resource)
|
646
667
|
events.converge_complete
|
@@ -653,13 +674,14 @@ describe Chef::DataCollector do
|
|
653
674
|
context "when the run contains a file resource that is updated" do
|
654
675
|
let(:total_resource_count) { 1 }
|
655
676
|
let(:updated_resource_count) { 1 }
|
656
|
-
let(:resource_record) { [ resource_record_for(current_resource,
|
677
|
+
let(:resource_record) { [ resource_record_for(new_resource, current_resource, after_resource, :create, "updated", "1234") ] }
|
657
678
|
let(:status) { "success" }
|
658
679
|
|
659
680
|
before do
|
660
681
|
events.resource_action_start(new_resource, :create)
|
661
682
|
events.resource_current_state_loaded(new_resource, :create, current_resource)
|
662
683
|
events.resource_updated(new_resource, :create)
|
684
|
+
events.resource_after_state_loaded(new_resource, :create, after_resource)
|
663
685
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
664
686
|
events.resource_completed(new_resource)
|
665
687
|
events.converge_complete
|
@@ -679,7 +701,7 @@ describe Chef::DataCollector do
|
|
679
701
|
allow(r).to receive(:cookbook_version).and_return(cookbook_version)
|
680
702
|
r
|
681
703
|
end
|
682
|
-
let(:resource_record) { [ resource_record_for(implementation_resource, implementation_resource, :create, "updated", "2345"), resource_record_for(current_resource,
|
704
|
+
let(:resource_record) { [ resource_record_for(implementation_resource, implementation_resource, implementation_resource, :create, "updated", "2345"), resource_record_for(new_resource, current_resource, after_resource, :create, "updated", "1234") ] }
|
683
705
|
let(:status) { "success" }
|
684
706
|
|
685
707
|
before do
|
@@ -689,10 +711,12 @@ describe Chef::DataCollector do
|
|
689
711
|
events.resource_action_start(implementation_resource , :create)
|
690
712
|
events.resource_current_state_loaded(implementation_resource, :create, implementation_resource)
|
691
713
|
events.resource_updated(implementation_resource, :create)
|
714
|
+
events.resource_after_state_loaded(implementation_resource, :create, implementation_resource)
|
692
715
|
implementation_resource.instance_variable_set(:@elapsed_time, 2.3456)
|
693
716
|
events.resource_completed(implementation_resource)
|
694
717
|
|
695
718
|
events.resource_updated(new_resource, :create)
|
719
|
+
events.resource_after_state_loaded(new_resource, :create, after_resource)
|
696
720
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
697
721
|
events.resource_completed(new_resource)
|
698
722
|
events.converge_complete
|
@@ -706,7 +730,7 @@ describe Chef::DataCollector do
|
|
706
730
|
let(:total_resource_count) { 1 }
|
707
731
|
let(:updated_resource_count) { 0 }
|
708
732
|
let(:resource_record) do
|
709
|
-
rec = resource_record_for(
|
733
|
+
rec = resource_record_for(new_resource, nil, nil, :create, "skipped", "1234")
|
710
734
|
rec["conditional"] = "not_if { #code block }" # FIXME: "#code block" is poor, is there some way to fix this?
|
711
735
|
[ rec ]
|
712
736
|
end
|
@@ -715,7 +739,6 @@ describe Chef::DataCollector do
|
|
715
739
|
before do
|
716
740
|
conditional = (new_resource.not_if { true }).first
|
717
741
|
events.resource_action_start(new_resource, :create)
|
718
|
-
events.resource_current_state_loaded(new_resource, :create, current_resource)
|
719
742
|
events.resource_skipped(new_resource, :create, conditional)
|
720
743
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
721
744
|
events.resource_completed(new_resource)
|
@@ -730,7 +753,7 @@ describe Chef::DataCollector do
|
|
730
753
|
let(:total_resource_count) { 1 }
|
731
754
|
let(:updated_resource_count) { 0 }
|
732
755
|
let(:resource_record) do
|
733
|
-
rec = resource_record_for(
|
756
|
+
rec = resource_record_for(new_resource, nil, nil, :create, "skipped", "1234")
|
734
757
|
rec["conditional"] = 'not_if "true"'
|
735
758
|
[ rec ]
|
736
759
|
end
|
@@ -739,7 +762,6 @@ describe Chef::DataCollector do
|
|
739
762
|
before do
|
740
763
|
conditional = (new_resource.not_if "true").first
|
741
764
|
events.resource_action_start(new_resource, :create)
|
742
|
-
events.resource_current_state_loaded(new_resource, :create, current_resource)
|
743
765
|
events.resource_skipped(new_resource, :create, conditional)
|
744
766
|
new_resource.instance_variable_set(:@elapsed_time, 1.2345)
|
745
767
|
events.resource_completed(new_resource)
|
@@ -756,7 +778,7 @@ describe Chef::DataCollector do
|
|
756
778
|
let(:total_resource_count) { 1 }
|
757
779
|
let(:updated_resource_count) { 0 }
|
758
780
|
let(:resource_record) do
|
759
|
-
rec = resource_record_for(current_resource,
|
781
|
+
rec = resource_record_for(new_resource, current_resource, nil, :create, "failed", "1234")
|
760
782
|
rec["error_message"] = "imperial to metric conversion error"
|
761
783
|
[ rec ]
|
762
784
|
end
|
@@ -783,7 +805,7 @@ describe Chef::DataCollector do
|
|
783
805
|
let(:total_resource_count) { 1 }
|
784
806
|
let(:updated_resource_count) { 0 }
|
785
807
|
let(:resource_record) do
|
786
|
-
rec = resource_record_for(
|
808
|
+
rec = resource_record_for(new_resource, nil, nil, :create, "failed", "1234")
|
787
809
|
rec["before"] = {}
|
788
810
|
rec["error_message"] = "imperial to metric conversion error"
|
789
811
|
[ rec ]
|
@@ -818,10 +840,9 @@ describe Chef::DataCollector do
|
|
818
840
|
res
|
819
841
|
end
|
820
842
|
let(:resource_record) do
|
821
|
-
rec1 = resource_record_for(current_resource,
|
843
|
+
rec1 = resource_record_for(new_resource, current_resource, nil, :create, "failed", "1234")
|
822
844
|
rec1["error_message"] = "imperial to metric conversion error"
|
823
|
-
rec2 = resource_record_for(nil,
|
824
|
-
rec2["before"] = {}
|
845
|
+
rec2 = resource_record_for(unprocessed_resource, nil, nil, :nothing, "unprocessed", "")
|
825
846
|
[ rec1, rec2 ]
|
826
847
|
end
|
827
848
|
let(:status) { "failure" }
|