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
@@ -165,7 +165,7 @@ describe Chef::Dist::SOLOEXEC do
|
|
165
165
|
ruby_block "sleeping" do
|
166
166
|
block do
|
167
167
|
retries = 200
|
168
|
-
while IO.read(Chef::Config[:log_location]) !~ /.* is running, will wait for it to finish and then run./
|
168
|
+
while IO.read(Chef::Config[:log_location][0]) !~ /.* is running, will wait for it to finish and then run./
|
169
169
|
sleep 0.1
|
170
170
|
raise "we ran out of retries" if ( retries -= 1 ) <= 0
|
171
171
|
end
|
@@ -189,13 +189,13 @@ describe Chef::Dist::SOLOEXEC do
|
|
189
189
|
|
190
190
|
# Instantiate the first chef-solo run
|
191
191
|
threads << Thread.new do
|
192
|
-
s1 = Process.spawn("#{chef_solo} -c \"#{path_to("config/solo.rb")}\" -o 'x::default'
|
192
|
+
s1 = Process.spawn("#{chef_solo} -c \"#{path_to("config/solo.rb")}\" -o 'x::default' -l debug -L #{path_to("logs/runs.log")}", chdir: chef_dir)
|
193
193
|
Process.waitpid(s1)
|
194
194
|
end
|
195
195
|
|
196
196
|
# Instantiate the second chef-solo run
|
197
197
|
threads << Thread.new do
|
198
|
-
s2 = Process.spawn("#{chef_solo} -c \"#{path_to("config/solo.rb")}\" -o 'x::default'
|
198
|
+
s2 = Process.spawn("#{chef_solo} -c \"#{path_to("config/solo.rb")}\" -o 'x::default' -l debug -L #{path_to("logs/runs.log")}", chdir: chef_dir)
|
199
199
|
Process.waitpid(s2)
|
200
200
|
end
|
201
201
|
|
data/spec/scripts/ssl-serve.rb
CHANGED
@@ -12,7 +12,7 @@ require "webrick/https"
|
|
12
12
|
|
13
13
|
$ssl = true
|
14
14
|
|
15
|
-
CHEF_SPEC_DATA = File.expand_path("
|
15
|
+
CHEF_SPEC_DATA = File.expand_path("../../data", __FILE__)
|
16
16
|
cert_text = File.read(File.expand_path("ssl/chef-rspec.cert", CHEF_SPEC_DATA))
|
17
17
|
cert = OpenSSL::X509::Certificate.new(cert_text)
|
18
18
|
key_text = File.read(File.expand_path("ssl/chef-rspec.key", CHEF_SPEC_DATA))
|
data/spec/spec_helper.rb
CHANGED
@@ -24,11 +24,10 @@ module Shell
|
|
24
24
|
IRB = nil unless defined? IRB
|
25
25
|
end
|
26
26
|
|
27
|
-
$LOAD_PATH.unshift File.expand_path("
|
28
|
-
|
29
|
-
$LOAD_PATH.unshift File.expand_path("
|
30
|
-
$LOAD_PATH.unshift File.expand_path("
|
31
|
-
$LOAD_PATH.unshift File.dirname(__FILE__)
|
27
|
+
$LOAD_PATH.unshift File.expand_path("../..", __FILE__)
|
28
|
+
|
29
|
+
$LOAD_PATH.unshift File.expand_path("../../chef-config/lib", __FILE__)
|
30
|
+
$LOAD_PATH.unshift File.expand_path("../../chef-utils/lib", __FILE__)
|
32
31
|
|
33
32
|
require "rubygems"
|
34
33
|
require "rspec/mocks"
|
@@ -69,12 +68,14 @@ end
|
|
69
68
|
|
70
69
|
# If you want to load anything into the testing environment
|
71
70
|
# without versioning it, add it to spec/support/local_gems.rb
|
72
|
-
require "spec/support/local_gems.rb" if File.
|
71
|
+
require "spec/support/local_gems.rb" if File.exists?(File.join(File.dirname(__FILE__), "support", "local_gems.rb"))
|
73
72
|
|
74
73
|
# Explicitly require spec helpers that need to load first
|
75
74
|
require "spec/support/platform_helpers"
|
76
75
|
require "spec/support/shared/unit/mock_shellout"
|
77
76
|
|
77
|
+
require "spec/support/recipe_dsl_helper"
|
78
|
+
|
78
79
|
# Autoloads support files
|
79
80
|
# Excludes support/platforms by default
|
80
81
|
# Do not change the gsub.
|
@@ -124,7 +125,6 @@ RSpec.configure do |config|
|
|
124
125
|
end
|
125
126
|
config.mock_with :rspec do |c|
|
126
127
|
c.syntax = :expect
|
127
|
-
c.allow_message_expectations_on_nil = false
|
128
128
|
end
|
129
129
|
|
130
130
|
# Only run these tests on platforms that are also chef workstations
|
@@ -139,18 +139,15 @@ RSpec.configure do |config|
|
|
139
139
|
|
140
140
|
config.filter_run_excluding windows_only: true unless windows?
|
141
141
|
config.filter_run_excluding not_supported_on_windows: true if windows?
|
142
|
-
config.filter_run_excluding not_supported_on_macos: true if
|
143
|
-
config.filter_run_excluding macos_only: true unless
|
144
|
-
config.filter_run_excluding
|
145
|
-
config.filter_run_excluding macos_gte_1014: true unless macos_gte_1014?
|
142
|
+
config.filter_run_excluding not_supported_on_macos: true if mac_osx?
|
143
|
+
config.filter_run_excluding macos_only: true unless mac_osx?
|
144
|
+
config.filter_run_excluding macos_1014: true unless mac_osx_1014?
|
146
145
|
config.filter_run_excluding not_supported_on_aix: true if aix?
|
147
146
|
config.filter_run_excluding not_supported_on_solaris: true if solaris?
|
148
147
|
config.filter_run_excluding not_supported_on_gce: true if gce?
|
149
|
-
config.filter_run_excluding not_supported_on_nano: true if windows_nano_server?
|
150
148
|
config.filter_run_excluding win2012r2_only: true unless windows_2012r2?
|
151
149
|
config.filter_run_excluding windows64_only: true unless windows64?
|
152
150
|
config.filter_run_excluding windows32_only: true unless windows32?
|
153
|
-
config.filter_run_excluding windows_nano_only: true unless windows_nano_server?
|
154
151
|
config.filter_run_excluding windows_gte_10: true unless windows_gte_10?
|
155
152
|
config.filter_run_excluding windows_lt_10: true if windows_gte_10?
|
156
153
|
config.filter_run_excluding ruby64_only: true unless ruby_64bit?
|
@@ -169,7 +166,7 @@ RSpec.configure do |config|
|
|
169
166
|
config.filter_run_excluding linux_only: true unless linux?
|
170
167
|
config.filter_run_excluding aix_only: true unless aix?
|
171
168
|
config.filter_run_excluding suse_only: true unless suse?
|
172
|
-
config.filter_run_excluding
|
169
|
+
config.filter_run_excluding opensuse: true unless opensuse?
|
173
170
|
config.filter_run_excluding debian_family_only: true unless debian_family?
|
174
171
|
config.filter_run_excluding supports_cloexec: true unless supports_cloexec?
|
175
172
|
config.filter_run_excluding selinux_only: true unless selinux_enabled?
|
@@ -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.hexdigest(
|
30
|
+
OpenSSL::Digest::SHA256.hexdigest(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
|
@@ -3,6 +3,7 @@ require "chef/mixin/shell_out"
|
|
3
3
|
require "ohai/mixin/http_helper"
|
4
4
|
require "ohai/mixin/gce_metadata"
|
5
5
|
require "chef/mixin/powershell_out"
|
6
|
+
require "chef/version_class"
|
6
7
|
|
7
8
|
class ShellHelpers
|
8
9
|
extend Chef::Mixin::ShellOut
|
@@ -87,11 +88,6 @@ def windows_powershell_dsc?
|
|
87
88
|
supports_dsc
|
88
89
|
end
|
89
90
|
|
90
|
-
def windows_nano_server?
|
91
|
-
require "chef/platform/query_helpers"
|
92
|
-
Chef::Platform.windows_nano_server?
|
93
|
-
end
|
94
|
-
|
95
91
|
def windows_user_right?(right)
|
96
92
|
return false unless windows?
|
97
93
|
|
@@ -99,12 +95,39 @@ def windows_user_right?(right)
|
|
99
95
|
Chef::ReservedNames::Win32::Security.get_account_right(ENV["USERNAME"]).include?(right)
|
100
96
|
end
|
101
97
|
|
102
|
-
def
|
103
|
-
|
98
|
+
def mac_osx_106?
|
99
|
+
if File.exists? "/usr/bin/sw_vers"
|
100
|
+
result = ShellHelpers.shell_out("/usr/bin/sw_vers")
|
101
|
+
result.stdout.each_line do |line|
|
102
|
+
if line =~ /^ProductVersion:\s10.6.*$/
|
103
|
+
return true
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
false
|
109
|
+
end
|
110
|
+
|
111
|
+
def mac_osx_1014?
|
112
|
+
if mac_osx?
|
113
|
+
ver = Chef::Version.new(ohai[:platform_version])
|
114
|
+
return ver.major == 10 && ver.minor == 14
|
115
|
+
end
|
116
|
+
|
117
|
+
false
|
104
118
|
end
|
105
119
|
|
106
|
-
def
|
107
|
-
|
120
|
+
def mac_osx?
|
121
|
+
if File.exists? "/usr/bin/sw_vers"
|
122
|
+
result = ShellHelpers.shell_out("/usr/bin/sw_vers")
|
123
|
+
result.stdout.each_line do |line|
|
124
|
+
if line =~ /^ProductName:\sMac OS X.*$/
|
125
|
+
return true
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
false
|
108
131
|
end
|
109
132
|
|
110
133
|
# detects if the hardware is 64-bit (evaluates to true in "WOW64" mode in a 32-bit app on a 64-bit system)
|
@@ -117,24 +140,26 @@ def windows32?
|
|
117
140
|
windows? && !windows64?
|
118
141
|
end
|
119
142
|
|
143
|
+
# def jruby?
|
144
|
+
|
120
145
|
def unix?
|
121
146
|
!windows?
|
122
147
|
end
|
123
148
|
|
124
149
|
def linux?
|
125
|
-
RUBY_PLATFORM
|
150
|
+
!!(RUBY_PLATFORM =~ /linux/)
|
126
151
|
end
|
127
152
|
|
128
|
-
def
|
129
|
-
RUBY_PLATFORM
|
153
|
+
def os_x?
|
154
|
+
!!(RUBY_PLATFORM =~ /darwin/)
|
130
155
|
end
|
131
156
|
|
132
157
|
def solaris?
|
133
|
-
RUBY_PLATFORM
|
158
|
+
!!(RUBY_PLATFORM =~ /solaris/)
|
134
159
|
end
|
135
160
|
|
136
161
|
def freebsd?
|
137
|
-
RUBY_PLATFORM
|
162
|
+
!!(RUBY_PLATFORM =~ /freebsd/)
|
138
163
|
end
|
139
164
|
|
140
165
|
def intel_64bit?
|
@@ -149,8 +174,8 @@ def rhel6?
|
|
149
174
|
rhel? && !!(ohai[:platform_version].to_i == 6)
|
150
175
|
end
|
151
176
|
|
152
|
-
def
|
153
|
-
suse? && !!(ohai[:platform_version].to_i
|
177
|
+
def opensuse?
|
178
|
+
suse? && !!(ohai[:platform_version].to_i >= 15)
|
154
179
|
end
|
155
180
|
|
156
181
|
def rhel7?
|
@@ -170,7 +195,7 @@ def debian_family?
|
|
170
195
|
end
|
171
196
|
|
172
197
|
def aix?
|
173
|
-
RUBY_PLATFORM
|
198
|
+
!!(RUBY_PLATFORM =~ /aix/)
|
174
199
|
end
|
175
200
|
|
176
201
|
def wpar?
|
@@ -206,8 +231,8 @@ def selinux_enabled?
|
|
206
231
|
end
|
207
232
|
|
208
233
|
def suse?
|
209
|
-
::File.
|
210
|
-
( ::File.
|
234
|
+
::File.exists?("/etc/SuSE-release") ||
|
235
|
+
( ::File.exists?("/etc/os-release") && /sles|suse/.match?(File.read("/etc/os-release")) )
|
211
236
|
end
|
212
237
|
|
213
238
|
def root?
|
@@ -26,7 +26,7 @@ if RUBY_PLATFORM =~ /mswin|mingw|windows/
|
|
26
26
|
|
27
27
|
def service_main(*startup_parameters)
|
28
28
|
while running?
|
29
|
-
unless File.
|
29
|
+
unless File.exists?(@test_service_file)
|
30
30
|
File.open(@test_service_file, "wb") do |f|
|
31
31
|
f.write("This file is created by SpecService")
|
32
32
|
end
|
@@ -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
|
@@ -62,7 +62,7 @@ shared_context "a command that can be executed as an alternate user" do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
after do
|
65
|
-
File.delete(script_output_path) if File.
|
65
|
+
File.delete(script_output_path) if File.exists?(script_output_path)
|
66
66
|
Dir.rmdir(script_output_dir) if Dir.exist?(script_output_dir)
|
67
67
|
end
|
68
68
|
end
|
@@ -370,7 +370,7 @@ shared_examples_for "a configured file resource" do
|
|
370
370
|
Chef::Config[:ssl_verify_mode] = :verify_none
|
371
371
|
end
|
372
372
|
|
373
|
-
|
373
|
+
# note the stripping of the drive letter from the tmpdir on windows
|
374
374
|
let(:backup_glob) { File.join(CHEF_SPEC_BACKUP_PATH, test_file_dir.sub(/^([A-Za-z]:)/, ""), "#{file_base}*") }
|
375
375
|
|
376
376
|
# Most tests update the resource, but a few do not. We need to test that the
|
@@ -1038,8 +1038,8 @@ shared_context Chef::Resource::File do
|
|
1038
1038
|
end
|
1039
1039
|
|
1040
1040
|
after(:each) do
|
1041
|
-
FileUtils.rm_r(path) if File.
|
1042
|
-
FileUtils.rm_r(CHEF_SPEC_BACKUP_PATH) if File.
|
1041
|
+
FileUtils.rm_r(path) if File.exists?(path)
|
1042
|
+
FileUtils.rm_r(CHEF_SPEC_BACKUP_PATH) if File.exists?(CHEF_SPEC_BACKUP_PATH)
|
1043
1043
|
end
|
1044
1044
|
|
1045
1045
|
after do
|
@@ -39,11 +39,11 @@ shared_context Chef::Resource::WindowsScript do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
before(:each) do
|
42
|
-
File.delete(script_output_path) if File.
|
42
|
+
File.delete(script_output_path) if File.exists?(script_output_path)
|
43
43
|
end
|
44
44
|
|
45
45
|
after(:each) do
|
46
|
-
File.delete(script_output_path) if File.
|
46
|
+
File.delete(script_output_path) if File.exists?(script_output_path)
|
47
47
|
end
|
48
48
|
|
49
49
|
shared_examples_for "a script resource with architecture attribute" do
|
@@ -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
|
|
@@ -149,7 +138,7 @@ shared_context Chef::Resource::WindowsScript do
|
|
149
138
|
|
150
139
|
after do
|
151
140
|
script_file.close! if script_file
|
152
|
-
::File.delete(script_file.to_path) if script_file && ::File.
|
141
|
+
::File.delete(script_file.to_path) if script_file && ::File.exists?(script_file.to_path)
|
153
142
|
end
|
154
143
|
|
155
144
|
include_context "alternate user identity"
|
@@ -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
|