chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +3 -7
- data/README.md +1 -1
- data/Rakefile +44 -16
- data/chef.gemspec +6 -4
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/action_collection.rb +16 -5
- data/lib/chef/application.rb +33 -54
- data/lib/chef/application/apply.rb +18 -1
- data/lib/chef/application/base.rb +8 -3
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/chef_class.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +3 -3
- data/lib/chef/client.rb +16 -14
- data/lib/chef/config.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +45 -22
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +38 -3
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/data_collector/run_end_message.rb +7 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dist.rb +8 -0
- data/lib/chef/dsl/chef_vault.rb +84 -0
- data/lib/chef/dsl/declare_resource.rb +7 -5
- data/lib/chef/dsl/platform_introspection.rb +3 -2
- data/lib/chef/dsl/recipe.rb +7 -12
- data/lib/chef/dsl/universal.rb +3 -7
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/event_dispatch/base.rb +3 -0
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/doc.rb +1 -1
- data/lib/chef/formatters/indentable_output_stream.rb +7 -16
- data/lib/chef/http.rb +1 -1
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +3 -2
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -4
- data/lib/chef/knife/acl_add.rb +57 -0
- data/lib/chef/knife/acl_base.rb +183 -0
- data/lib/chef/knife/acl_bulk_add.rb +78 -0
- data/lib/chef/knife/acl_bulk_remove.rb +83 -0
- data/lib/chef/knife/acl_remove.rb +62 -0
- data/lib/chef/knife/acl_show.rb +56 -0
- data/lib/chef/knife/bootstrap.rb +84 -90
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
- data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
- data/lib/chef/knife/core/bootstrap_context.rb +63 -60
- data/lib/chef/knife/core/generic_presenter.rb +4 -3
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +2 -2
- data/lib/chef/knife/core/status_presenter.rb +5 -5
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +17 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
- data/lib/chef/knife/data_bag_secret_options.rb +18 -45
- data/lib/chef/knife/group_add.rb +55 -0
- data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
- data/lib/chef/knife/group_destroy.rb +53 -0
- data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
- data/lib/chef/knife/group_remove.rb +56 -0
- data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/ssh.rb +12 -31
- data/lib/chef/knife/status.rb +3 -3
- data/lib/chef/knife/supermarket_download.rb +1 -2
- data/lib/chef/knife/supermarket_install.rb +2 -3
- data/lib/chef/knife/supermarket_list.rb +1 -2
- data/lib/chef/knife/supermarket_search.rb +1 -2
- data/lib/chef/knife/supermarket_share.rb +1 -2
- data/lib/chef/knife/supermarket_show.rb +1 -2
- data/lib/chef/knife/supermarket_unshare.rb +1 -2
- data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
- data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
- data/lib/chef/knife/user_invite_list.rb +34 -0
- data/lib/chef/knife/user_invite_rescind.rb +63 -0
- data/lib/chef/knife/yaml_convert.rb +91 -0
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/powershell_exec.rb +10 -1
- data/lib/chef/mixin/powershell_out.rb +1 -1
- data/lib/chef/mixin/properties.rb +16 -2
- data/lib/chef/mixin/shell_out.rb +1 -5
- data/lib/chef/monkey_patches/net_http.rb +0 -4
- data/lib/chef/node.rb +18 -6
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/immutablize_array.rb +4 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/node_map.rb +5 -31
- data/lib/chef/platform/priority_map.rb +4 -4
- data/lib/chef/platform/query_helpers.rb +6 -34
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +14 -0
- data/lib/chef/property.rb +24 -6
- data/lib/chef/provider.rb +40 -6
- data/lib/chef/provider/cron.rb +2 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_resource.rb +1 -1
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/execute.rb +3 -9
- data/lib/chef/provider/file.rb +6 -6
- data/lib/chef/provider/git.rb +84 -27
- data/lib/chef/provider/group.rb +4 -4
- data/lib/chef/provider/http_request.rb +6 -6
- data/lib/chef/provider/ifconfig.rb +4 -4
- data/lib/chef/provider/launchd.rb +45 -64
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/osx_profile.rb +7 -3
- data/lib/chef/provider/package.rb +2 -2
- data/lib/chef/provider/package/cab.rb +5 -6
- data/lib/chef/provider/package/chocolatey.rb +1 -3
- data/lib/chef/provider/package/dnf.rb +66 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
- data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
- data/lib/chef/provider/package/dnf/version.rb +5 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/freebsd/base.rb +2 -1
- data/lib/chef/provider/package/homebrew.rb +107 -43
- data/lib/chef/provider/package/macports.rb +0 -2
- data/lib/chef/provider/package/msu.rb +4 -1
- data/lib/chef/provider/package/pacman.rb +25 -34
- data/lib/chef/provider/package/portage.rb +1 -0
- data/lib/chef/provider/package/powershell.rb +1 -1
- data/lib/chef/provider/package/rubygems.rb +30 -3
- data/lib/chef/provider/package/windows.rb +29 -53
- data/lib/chef/provider/package/windows/msi.rb +2 -2
- data/lib/chef/provider/package/yum.rb +1 -9
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +0 -1
- data/lib/chef/provider/powershell_script.rb +5 -11
- data/lib/chef/provider/registry_key.rb +4 -4
- data/lib/chef/provider/remote_directory.rb +5 -5
- data/lib/chef/provider/remote_file/ftp.rb +3 -2
- data/lib/chef/provider/remote_file/local_file.rb +2 -1
- data/lib/chef/provider/remote_file/sftp.rb +3 -2
- data/lib/chef/provider/route.rb +5 -3
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/script.rb +2 -2
- data/lib/chef/provider/service.rb +8 -8
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +30 -28
- data/lib/chef/provider/service/macosx.rb +16 -10
- data/lib/chef/provider/service/systemd.rb +12 -12
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +5 -11
- data/lib/chef/provider/subversion.rb +25 -5
- data/lib/chef/provider/systemd_unit.rb +26 -25
- data/lib/chef/provider/user.rb +6 -6
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/mac.rb +20 -15
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
- data/lib/chef/provider/windows_env.rb +3 -3
- data/lib/chef/provider/windows_script.rb +2 -2
- data/lib/chef/provider/windows_task.rb +10 -10
- data/lib/chef/providers.rb +0 -6
- data/lib/chef/recipe.rb +36 -0
- data/lib/chef/resource.rb +44 -57
- data/lib/chef/resource/action_class.rb +24 -22
- data/lib/chef/resource/alternatives.rb +210 -0
- data/lib/chef/resource/apt_package.rb +33 -3
- data/lib/chef/resource/apt_preference.rb +103 -7
- data/lib/chef/resource/apt_repository.rb +357 -18
- data/lib/chef/resource/apt_update.rb +58 -5
- data/lib/chef/resource/archive_file.rb +6 -5
- data/lib/chef/resource/bash.rb +3 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/bff_package.rb +10 -2
- data/lib/chef/resource/breakpoint.rb +1 -2
- data/lib/chef/resource/build_essential.rb +49 -51
- data/lib/chef/resource/cab_package.rb +9 -2
- data/lib/chef/resource/chef_client_cron.rb +228 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
- data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
- data/lib/chef/resource/chef_gem.rb +15 -18
- data/lib/chef/resource/chef_handler.rb +5 -4
- data/lib/chef/resource/chef_sleep.rb +7 -5
- data/lib/chef/resource/chef_vault_secret.rb +135 -0
- data/lib/chef/resource/chocolatey_config.rb +8 -4
- data/lib/chef/resource/chocolatey_feature.rb +7 -4
- data/lib/chef/resource/chocolatey_package.rb +7 -4
- data/lib/chef/resource/chocolatey_source.rb +7 -4
- data/lib/chef/resource/cookbook_file.rb +4 -3
- data/lib/chef/resource/cron.rb +34 -80
- data/lib/chef/resource/cron_access.rb +10 -6
- data/lib/chef/resource/cron_d.rb +44 -95
- data/lib/chef/resource/csh.rb +3 -1
- data/lib/chef/resource/directory.rb +3 -3
- data/lib/chef/resource/dmg_package.rb +22 -19
- data/lib/chef/resource/dnf_package.rb +3 -4
- data/lib/chef/resource/dpkg_package.rb +3 -2
- data/lib/chef/resource/dsc_resource.rb +6 -4
- data/lib/chef/resource/dsc_script.rb +3 -2
- data/lib/chef/resource/execute.rb +15 -14
- data/lib/chef/resource/file.rb +14 -9
- data/lib/chef/resource/freebsd_package.rb +3 -2
- data/lib/chef/resource/gem_package.rb +19 -11
- data/lib/chef/resource/group.rb +5 -2
- data/lib/chef/resource/helpers/cron_validations.rb +98 -0
- data/lib/chef/resource/homebrew_cask.rb +3 -2
- data/lib/chef/resource/homebrew_package.rb +5 -3
- data/lib/chef/resource/homebrew_tap.rb +3 -2
- data/lib/chef/resource/hostname.rb +26 -20
- data/lib/chef/resource/http_request.rb +1 -2
- data/lib/chef/resource/ifconfig.rb +8 -8
- data/lib/chef/resource/ips_package.rb +11 -3
- data/lib/chef/resource/kernel_module.rb +30 -30
- data/lib/chef/resource/ksh.rb +3 -1
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/link.rb +5 -27
- data/lib/chef/resource/locale.rb +60 -26
- data/lib/chef/resource/log.rb +13 -2
- data/lib/chef/resource/lwrp_base.rb +1 -1
- data/lib/chef/resource/macos_userdefaults.rb +18 -10
- data/lib/chef/resource/macosx_service.rb +3 -2
- data/lib/chef/resource/macports_package.rb +10 -2
- data/lib/chef/resource/mdadm.rb +63 -3
- data/lib/chef/resource/mount.rb +4 -1
- data/lib/chef/resource/msu_package.rb +19 -2
- data/lib/chef/resource/notify_group.rb +8 -3
- data/lib/chef/resource/ohai.rb +20 -4
- data/lib/chef/resource/ohai_hint.rb +4 -13
- data/lib/chef/resource/openbsd_package.rb +10 -2
- data/lib/chef/resource/openssl_dhparam.rb +11 -2
- data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
- data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
- data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
- data/lib/chef/resource/openssl_x509_crl.rb +13 -2
- data/lib/chef/resource/openssl_x509_request.rb +38 -2
- data/lib/chef/resource/osx_profile.rb +4 -3
- data/lib/chef/resource/package.rb +3 -2
- data/lib/chef/resource/pacman_package.rb +3 -2
- data/lib/chef/resource/paludis_package.rb +13 -4
- data/lib/chef/resource/perl.rb +3 -1
- data/lib/chef/resource/plist.rb +207 -0
- data/lib/chef/resource/portage_package.rb +14 -4
- data/lib/chef/resource/powershell_package.rb +2 -4
- data/lib/chef/resource/powershell_package_source.rb +4 -2
- data/lib/chef/resource/powershell_script.rb +8 -18
- data/lib/chef/resource/python.rb +3 -1
- data/lib/chef/resource/reboot.rb +1 -2
- data/lib/chef/resource/registry_key.rb +2 -3
- data/lib/chef/resource/remote_directory.rb +3 -1
- data/lib/chef/resource/remote_file.rb +3 -2
- data/lib/chef/resource/rhsm_errata.rb +1 -4
- data/lib/chef/resource/rhsm_errata_level.rb +1 -2
- data/lib/chef/resource/rhsm_register.rb +3 -3
- data/lib/chef/resource/rhsm_repo.rb +4 -3
- data/lib/chef/resource/rhsm_subscription.rb +5 -4
- data/lib/chef/resource/route.rb +6 -2
- data/lib/chef/resource/rpm_package.rb +13 -3
- data/lib/chef/resource/ruby.rb +3 -1
- data/lib/chef/resource/ruby_block.rb +2 -5
- data/lib/chef/resource/scm/_scm.rb +49 -0
- data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
- data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
- data/lib/chef/resource/script.rb +7 -4
- data/lib/chef/resource/service.rb +7 -8
- data/lib/chef/resource/smartos_package.rb +10 -2
- data/lib/chef/resource/snap_package.rb +4 -2
- data/lib/chef/resource/solaris_package.rb +10 -2
- data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
- data/lib/chef/resource/sudo.rb +11 -11
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -2
- data/lib/chef/resource/support/ulimit.erb +41 -0
- data/lib/chef/resource/swap_file.rb +7 -5
- data/lib/chef/resource/sysctl.rb +63 -4
- data/lib/chef/resource/systemd_unit.rb +6 -4
- data/lib/chef/resource/template.rb +0 -1
- data/lib/chef/resource/timezone.rb +8 -19
- data/lib/chef/resource/user.rb +3 -5
- data/lib/chef/resource/user/aix_user.rb +0 -2
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +0 -2
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user/pw_user.rb +0 -2
- data/lib/chef/resource/user/solaris_user.rb +0 -2
- data/lib/chef/resource/user/windows_user.rb +0 -2
- data/lib/chef/resource/user_ulimit.rb +116 -0
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
- data/lib/chef/resource/windows_ad_join.rb +20 -7
- data/lib/chef/resource/windows_auto_run.rb +2 -3
- data/lib/chef/resource/windows_certificate.rb +3 -3
- data/lib/chef/resource/windows_dfs_folder.rb +1 -2
- data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
- data/lib/chef/resource/windows_dfs_server.rb +2 -3
- data/lib/chef/resource/windows_dns_record.rb +0 -1
- data/lib/chef/resource/windows_dns_zone.rb +0 -1
- data/lib/chef/resource/windows_env.rb +12 -4
- data/lib/chef/resource/windows_feature.rb +59 -4
- data/lib/chef/resource/windows_feature_dism.rb +24 -24
- data/lib/chef/resource/windows_feature_powershell.rb +44 -78
- data/lib/chef/resource/windows_firewall_rule.rb +121 -8
- data/lib/chef/resource/windows_font.rb +10 -2
- data/lib/chef/resource/windows_package.rb +76 -7
- data/lib/chef/resource/windows_pagefile.rb +31 -4
- data/lib/chef/resource/windows_path.rb +18 -2
- data/lib/chef/resource/windows_printer.rb +26 -7
- data/lib/chef/resource/windows_printer_port.rb +29 -2
- data/lib/chef/resource/windows_script.rb +3 -4
- data/lib/chef/resource/windows_security_policy.rb +119 -0
- data/lib/chef/resource/windows_service.rb +46 -32
- data/lib/chef/resource/windows_share.rb +22 -6
- data/lib/chef/resource/windows_shortcut.rb +13 -3
- data/lib/chef/resource/windows_task.rb +129 -16
- data/lib/chef/resource/windows_uac.rb +20 -2
- data/lib/chef/resource/windows_user_privilege.rb +199 -0
- data/lib/chef/resource/windows_workgroup.rb +19 -4
- data/lib/chef/resource/yum_package.rb +91 -7
- data/lib/chef/resource/yum_repository.rb +30 -12
- data/lib/chef/resource/zypper_package.rb +32 -5
- data/lib/chef/resource/zypper_repository.rb +19 -6
- data/lib/chef/resource_builder.rb +8 -0
- data/lib/chef/resource_inspector.rb +3 -2
- data/lib/chef/resource_resolver.rb +7 -14
- data/lib/chef/resources.rb +11 -3
- data/lib/chef/run_context/cookbook_compiler.rb +29 -5
- data/lib/chef/scan_access_control.rb +1 -1
- data/lib/chef/shell.rb +22 -0
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +1 -1
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/api/security.rb +6 -0
- data/lib/chef/win32/file.rb +1 -9
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/security.rb +40 -2
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/functional/assets/inittest +8 -7
- data/spec/functional/knife/ssh_spec.rb +23 -19
- data/spec/functional/resource/cron_spec.rb +10 -29
- data/spec/functional/resource/dnf_package_spec.rb +441 -156
- data/spec/functional/resource/git_spec.rb +184 -134
- data/spec/functional/resource/insserv_spec.rb +1 -1
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/locale_spec.rb +13 -2
- data/spec/functional/resource/msu_package_spec.rb +5 -2
- data/spec/functional/resource/powershell_script_spec.rb +7 -68
- data/spec/functional/resource/remote_file_spec.rb +1 -1
- data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
- data/spec/functional/resource/windows_task_spec.rb +4 -4
- data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
- data/spec/functional/run_lock_spec.rb +1 -1
- data/spec/functional/shell_spec.rb +1 -1
- data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +0 -6
- data/spec/functional/win32/security_spec.rb +22 -0
- data/spec/integration/client/client_spec.rb +123 -2
- data/spec/integration/knife/cookbook_show_spec.rb +28 -26
- data/spec/integration/knife/data_bag_show_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +34 -6
- data/spec/integration/knife/redirection_spec.rb +2 -2
- data/spec/integration/knife/show_spec.rb +32 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
- data/spec/integration/recipes/noop_resource_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +49 -20
- data/spec/integration/recipes/notifying_block_spec.rb +8 -5
- data/spec/integration/recipes/provider_choice.rb +2 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
- data/spec/integration/recipes/resource_action_spec.rb +16 -11
- data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
- data/spec/integration/recipes/resource_load_spec.rb +133 -12
- data/spec/integration/recipes/use_partial_spec.rb +112 -0
- data/spec/integration/solo/solo_spec.rb +3 -3
- data/spec/spec_helper.rb +18 -3
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
- data/spec/support/platform_helpers.rb +2 -20
- data/spec/support/recipe_dsl_helper.rb +83 -0
- data/spec/support/shared/functional/http.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -16
- data/spec/support/shared/integration/knife_support.rb +9 -6
- data/spec/support/shared/unit/mock_shellout.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application/apply_spec.rb +3 -0
- data/spec/unit/application/client_spec.rb +5 -1
- data/spec/unit/application_spec.rb +1 -2
- data/spec/unit/client_spec.rb +7 -5
- data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
- data/spec/unit/cookbook/metadata_spec.rb +38 -19
- data/spec/unit/data_collector_spec.rb +39 -18
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/json_compat_spec.rb +1 -1
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
- data/spec/unit/knife/bootstrap_spec.rb +20 -38
- data/spec/unit/knife/cookbook_show_spec.rb +1 -0
- data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
- data/spec/unit/knife/core/ui_spec.rb +16 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
- data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
- data/spec/unit/knife/ssh_spec.rb +8 -111
- data/spec/unit/knife/status_spec.rb +1 -1
- data/spec/unit/knife_spec.rb +18 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
- data/spec/unit/mixin/shell_out_spec.rb +25 -31
- data/spec/unit/node/attribute_spec.rb +3 -3
- data/spec/unit/node_spec.rb +24 -0
- data/spec/unit/platform/query_helpers_spec.rb +0 -143
- data/spec/unit/property/state_spec.rb +12 -7
- data/spec/unit/property/validation_spec.rb +25 -1
- data/spec/unit/property_spec.rb +12 -9
- data/spec/unit/provider/apt_preference_spec.rb +14 -10
- data/spec/unit/provider/apt_repository_spec.rb +34 -36
- data/spec/unit/provider/apt_update_spec.rb +12 -11
- data/spec/unit/provider/cookbook_file_spec.rb +4 -4
- data/spec/unit/provider/cron_spec.rb +2 -2
- data/spec/unit/provider/directory_spec.rb +4 -15
- data/spec/unit/provider/file_spec.rb +4 -4
- data/spec/unit/provider/git_spec.rb +41 -1
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/link_spec.rb +0 -1
- data/spec/unit/provider/log_spec.rb +3 -3
- data/spec/unit/provider/mdadm_spec.rb +3 -3
- data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
- data/spec/unit/provider/package/homebrew_spec.rb +280 -174
- data/spec/unit/provider/package/pacman_spec.rb +65 -147
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +3 -2
- data/spec/unit/provider/package/rubygems_spec.rb +211 -26
- data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +21 -61
- data/spec/unit/provider/remote_file_spec.rb +3 -4
- data/spec/unit/provider/service/debian_service_spec.rb +34 -13
- data/spec/unit/provider/service/macosx_spec.rb +210 -214
- data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
- data/spec/unit/provider/subversion_spec.rb +4 -2
- data/spec/unit/provider/template_spec.rb +3 -4
- data/spec/unit/provider/zypper_repository_spec.rb +17 -17
- data/spec/unit/provider_resolver_spec.rb +4 -4
- data/spec/unit/recipe_spec.rb +68 -0
- data/spec/unit/resource/alternatives_spec.rb +120 -0
- data/spec/unit/resource/apt_preference_spec.rb +0 -18
- data/spec/unit/resource/apt_repository_spec.rb +0 -18
- data/spec/unit/resource/apt_update_spec.rb +0 -18
- data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
- data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
- data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
- data/spec/unit/resource/cron_d_spec.rb +6 -48
- data/spec/unit/resource/cron_spec.rb +4 -10
- data/spec/unit/resource/gem_package_spec.rb +3 -3
- data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
- data/spec/unit/resource/link_spec.rb +0 -4
- data/spec/unit/resource/locale_spec.rb +0 -34
- data/spec/unit/resource/msu_package_spec.rb +4 -0
- data/spec/unit/resource/ohai_spec.rb +56 -2
- data/spec/unit/resource/plist_spec.rb +130 -0
- data/spec/unit/resource/powershell_script_spec.rb +0 -5
- data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
- data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
- data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
- data/spec/unit/resource/service_spec.rb +4 -0
- data/spec/unit/resource/user_spec.rb +2 -2
- data/spec/unit/resource/user_ulimit_spec.rb +53 -0
- data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
- data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
- data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
- data/spec/unit/resource/windows_package_spec.rb +14 -0
- data/spec/unit/resource/windows_service_spec.rb +9 -0
- data/spec/unit/resource_reporter_spec.rb +2 -6
- data/spec/unit/resource_spec.rb +10 -3
- data/spec/unit/run_lock_spec.rb +1 -1
- data/spec/unit/scan_access_control_spec.rb +1 -1
- data/spec/unit/search/query_spec.rb +1 -1
- data/spec/unit/win32/registry_spec.rb +1 -1
- data/tasks/rspec.rb +6 -14
- metadata +92 -37
- data/lib/chef/dsl/core.rb +0 -52
- data/lib/chef/knife/cookbook_site_share.rb +0 -41
- data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
- data/lib/chef/provider/apt_preference.rb +0 -93
- data/lib/chef/provider/apt_repository.rb +0 -358
- data/lib/chef/provider/apt_update.rb +0 -79
- data/lib/chef/provider/log.rb +0 -43
- data/lib/chef/provider/mdadm.rb +0 -85
- data/lib/chef/provider/ohai.rb +0 -45
- data/lib/chef/resource/git.rb +0 -37
- data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -17,30 +17,18 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require "spec_helper"
|
20
|
-
require "chef/mixin/shell_out"
|
21
20
|
require "tmpdir"
|
22
|
-
require "shellwords"
|
23
21
|
|
24
22
|
# Deploy relies heavily on symlinks, so it doesn't work on windows.
|
25
23
|
describe Chef::Resource::Git, requires_git: true do
|
26
|
-
include
|
27
|
-
|
24
|
+
include RecipeDSLHelper
|
25
|
+
|
28
26
|
# Some versions of git complains when the deploy directory is
|
29
27
|
# already created. Here we intentionally don't create the deploy
|
30
28
|
# directory beforehand.
|
31
29
|
let(:base_dir_path) { Dir.mktmpdir }
|
32
30
|
let(:deploy_directory) { File.join(base_dir_path, make_tmpname("git_base")) }
|
33
31
|
|
34
|
-
let(:node) do
|
35
|
-
Chef::Node.new.tap do |n|
|
36
|
-
n.name "rspec-test"
|
37
|
-
n.consume_external_attrs(@ohai.data, {})
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
let(:event_dispatch) { Chef::EventDispatch::Dispatcher.new }
|
42
|
-
let(:run_context) { Chef::RunContext.new(node, {}, event_dispatch) }
|
43
|
-
|
44
32
|
# These tests use git's bundle feature, which is a way to export an entire
|
45
33
|
# git repo (or subset of commits) as a single file.
|
46
34
|
#
|
@@ -64,33 +52,31 @@ describe Chef::Resource::Git, requires_git: true do
|
|
64
52
|
let(:rev_testing) { "972d153654503bccec29f630c5dd369854a561e8" }
|
65
53
|
let(:rev_head) { "d294fbfd05aa7709ad9a9b8ef6343b17d355bf5f" }
|
66
54
|
|
67
|
-
let(:git_user_config) do
|
68
|
-
<<~E
|
69
|
-
[user]
|
70
|
-
name = frodoTbaggins
|
71
|
-
email = frodo@shire.org
|
72
|
-
E
|
73
|
-
end
|
74
|
-
|
75
55
|
before(:each) do
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
56
|
+
shell_out!("git", "clone", git_bundle_repo, "example", cwd: origin_repo_dir)
|
57
|
+
File.open("#{origin_repo}/.git/config", "a+") do |f|
|
58
|
+
f.print <<~EOF
|
59
|
+
[user]
|
60
|
+
name = frodoTbaggins
|
61
|
+
email = frodo@shire.org
|
62
|
+
EOF
|
63
|
+
end
|
81
64
|
end
|
82
65
|
|
83
66
|
after(:each) do
|
84
|
-
Chef::Config[:file_cache_path] = @old_file_cache_path
|
85
67
|
FileUtils.remove_entry_secure deploy_directory if File.exist?(deploy_directory)
|
86
68
|
FileUtils.remove_entry_secure base_dir_path
|
87
|
-
FileUtils.remove_entry_secure file_cache_path
|
88
69
|
FileUtils.remove_entry_secure origin_repo_dir
|
89
70
|
end
|
90
71
|
|
91
|
-
|
92
|
-
|
93
|
-
|
72
|
+
def expect_revision_to_be(revision, version)
|
73
|
+
rev_ver = shell_out!("git", "rev-parse", revision, cwd: deploy_directory).stdout.strip
|
74
|
+
expect(rev_ver).to eq(version)
|
75
|
+
end
|
76
|
+
|
77
|
+
def expect_branch_to_be(branch)
|
78
|
+
head_branch = shell_out!("git name-rev --name-only HEAD", cwd: deploy_directory).stdout.strip
|
79
|
+
expect(head_branch).to eq(branch)
|
94
80
|
end
|
95
81
|
|
96
82
|
context "working with pathes with special characters" do
|
@@ -102,156 +88,220 @@ describe Chef::Resource::Git, requires_git: true do
|
|
102
88
|
end
|
103
89
|
|
104
90
|
it "clones a repository with a space in the path" do
|
105
|
-
|
106
|
-
|
107
|
-
|
91
|
+
repo = "#{path_with_spaces}/example-repo.gitbundle"
|
92
|
+
git(deploy_directory) do
|
93
|
+
repository repo
|
94
|
+
end.should_be_updated
|
95
|
+
expect_revision_to_be("HEAD", rev_head)
|
108
96
|
end
|
109
97
|
end
|
110
98
|
|
111
99
|
context "when deploying from an annotated tag" do
|
112
|
-
let(:basic_git_resource) do
|
113
|
-
Chef::Resource::Git.new(deploy_directory, run_context).tap do |r|
|
114
|
-
r.repository origin_repo
|
115
|
-
r.revision "v1.0.0"
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
# We create a copy of the basic_git_resource so that we can run
|
120
|
-
# the resource again and verify that it doesn't update.
|
121
|
-
let(:copy_git_resource) do
|
122
|
-
Chef::Resource::Git.new(deploy_directory, run_context).tap do |r|
|
123
|
-
r.repository origin_repo
|
124
|
-
r.revision "v1.0.0"
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
100
|
it "checks out the revision pointed to by the tag commit, not the tag commit itself" do
|
129
|
-
|
130
|
-
|
131
|
-
|
101
|
+
git deploy_directory do
|
102
|
+
repository origin_repo
|
103
|
+
revision "v1.0.0"
|
104
|
+
end.should_be_updated
|
105
|
+
expect_revision_to_be("HEAD", v1_commit)
|
106
|
+
expect_branch_to_be("tags/v1.0.0^0") # detached
|
132
107
|
# also verify the tag commit itself is what we expect as an extra sanity check
|
133
|
-
|
134
|
-
expect(rev).to eq(v1_tag)
|
108
|
+
expect_revision_to_be("v1.0.0", v1_tag)
|
135
109
|
end
|
136
110
|
|
137
111
|
it "doesn't update if up-to-date" do
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
112
|
+
git deploy_directory do
|
113
|
+
repository origin_repo
|
114
|
+
revision "v1.0.0"
|
115
|
+
end.should_be_updated
|
116
|
+
git deploy_directory do
|
117
|
+
repository origin_repo
|
118
|
+
revision "v1.0.0"
|
119
|
+
expect_branch_to_be("tags/v1.0.0^0") # detached
|
120
|
+
end.should_not_be_updated
|
146
121
|
end
|
147
122
|
end
|
148
123
|
|
149
124
|
context "when deploying from a SHA revision" do
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
125
|
+
it "checks out the expected revision ed18" do
|
126
|
+
git deploy_directory do
|
127
|
+
repository git_bundle_repo
|
128
|
+
revision rev_foo
|
129
|
+
end.should_be_updated
|
130
|
+
expect_revision_to_be("HEAD", rev_foo)
|
131
|
+
expect_branch_to_be("master~1") # detached
|
154
132
|
end
|
155
133
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
end
|
162
|
-
|
163
|
-
|
164
|
-
it "checks out the expected revision ed18" do
|
165
|
-
basic_git_resource.revision rev_foo
|
166
|
-
basic_git_resource.run_action(:sync)
|
167
|
-
head_rev = shell_out!("git rev-parse HEAD", cwd: deploy_directory, returns: [0]).stdout.strip
|
168
|
-
expect(head_rev).to eq(rev_foo)
|
134
|
+
it "checks out the expected revision ed18 to a local branch" do
|
135
|
+
git deploy_directory do
|
136
|
+
repository git_bundle_repo
|
137
|
+
revision rev_foo
|
138
|
+
checkout_branch "deploy"
|
139
|
+
end.should_be_updated
|
140
|
+
expect_revision_to_be("HEAD", rev_foo)
|
141
|
+
expect_branch_to_be("deploy") # detached
|
169
142
|
end
|
170
143
|
|
171
144
|
it "doesn't update if up-to-date" do
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
145
|
+
git deploy_directory do
|
146
|
+
repository git_bundle_repo
|
147
|
+
revision rev_foo
|
148
|
+
end.should_be_updated
|
149
|
+
expect_revision_to_be("HEAD", rev_foo)
|
150
|
+
|
151
|
+
git deploy_directory do
|
152
|
+
repository origin_repo
|
153
|
+
revision rev_foo
|
154
|
+
end.should_not_be_updated
|
155
|
+
expect_branch_to_be("master~1") # detached
|
180
156
|
end
|
181
157
|
|
182
158
|
it "checks out the expected revision 972d" do
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
159
|
+
git deploy_directory do
|
160
|
+
repository git_bundle_repo
|
161
|
+
revision rev_testing
|
162
|
+
end.should_be_updated
|
163
|
+
expect_revision_to_be("HEAD", rev_testing)
|
164
|
+
expect_branch_to_be("master~2") # detached
|
165
|
+
end
|
166
|
+
|
167
|
+
it "checks out the expected revision 972d to a local branch" do
|
168
|
+
git deploy_directory do
|
169
|
+
repository git_bundle_repo
|
170
|
+
revision rev_testing
|
171
|
+
checkout_branch "deploy"
|
172
|
+
end.should_be_updated
|
173
|
+
expect_revision_to_be("HEAD", rev_testing)
|
174
|
+
expect_branch_to_be("deploy")
|
187
175
|
end
|
188
176
|
end
|
189
177
|
|
190
178
|
context "when deploying from a revision named 'HEAD'" do
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
end
|
179
|
+
it "checks out the expected revision" do
|
180
|
+
git deploy_directory do
|
181
|
+
repository origin_repo
|
182
|
+
revision "HEAD"
|
183
|
+
end.should_be_updated
|
184
|
+
expect_revision_to_be("HEAD", rev_head)
|
185
|
+
expect_branch_to_be("master")
|
196
186
|
end
|
197
187
|
|
198
|
-
it "checks out the expected revision" do
|
199
|
-
|
200
|
-
|
201
|
-
|
188
|
+
it "checks out the expected revision, and is idempotent" do
|
189
|
+
git deploy_directory do
|
190
|
+
repository origin_repo
|
191
|
+
revision "HEAD"
|
192
|
+
end.should_be_updated
|
193
|
+
git deploy_directory do
|
194
|
+
repository origin_repo
|
195
|
+
revision "HEAD"
|
196
|
+
end.should_not_be_updated
|
197
|
+
expect_revision_to_be("HEAD", rev_head)
|
198
|
+
expect_branch_to_be("master")
|
199
|
+
end
|
200
|
+
|
201
|
+
it "checks out the expected revision to a local branch" do
|
202
|
+
git deploy_directory do
|
203
|
+
repository origin_repo
|
204
|
+
revision "HEAD"
|
205
|
+
checkout_branch "deploy"
|
206
|
+
end.should_be_updated
|
207
|
+
expect_revision_to_be("HEAD", rev_head)
|
208
|
+
expect_branch_to_be("deploy")
|
202
209
|
end
|
203
210
|
end
|
204
211
|
|
205
212
|
context "when deploying from the default revision" do
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
213
|
+
it "checks out HEAD as the default revision" do
|
214
|
+
git deploy_directory do
|
215
|
+
repository origin_repo
|
216
|
+
end.should_be_updated
|
217
|
+
expect_revision_to_be("HEAD", rev_head)
|
218
|
+
expect_branch_to_be("master")
|
211
219
|
end
|
212
220
|
|
213
|
-
it "checks out HEAD as the default revision" do
|
214
|
-
|
215
|
-
|
216
|
-
|
221
|
+
it "checks out HEAD as the default revision, and is idempotent" do
|
222
|
+
git deploy_directory do
|
223
|
+
repository origin_repo
|
224
|
+
end.should_be_updated
|
225
|
+
git deploy_directory do
|
226
|
+
repository origin_repo
|
227
|
+
end.should_not_be_updated
|
228
|
+
expect_revision_to_be("HEAD", rev_head)
|
229
|
+
expect_branch_to_be("master")
|
230
|
+
end
|
231
|
+
|
232
|
+
it "checks out HEAD as the default revision to a local branch" do
|
233
|
+
git deploy_directory do
|
234
|
+
repository origin_repo
|
235
|
+
checkout_branch "deploy"
|
236
|
+
end.should_be_updated
|
237
|
+
expect_revision_to_be("HEAD", rev_head)
|
238
|
+
expect_branch_to_be("deploy")
|
217
239
|
end
|
218
240
|
end
|
219
241
|
|
220
242
|
context "when dealing with a repo with a degenerate tag named 'HEAD'" do
|
221
243
|
before do
|
222
|
-
shell_out!("git tag -m\"degenerate tag\" HEAD ed181b3419b6f489bedab282348162a110d6d3a1",
|
223
|
-
cwd: origin_repo)
|
244
|
+
shell_out!("git", "tag", "-m\"degenerate tag\"", "HEAD", "ed181b3419b6f489bedab282348162a110d6d3a1", cwd: origin_repo)
|
224
245
|
end
|
225
246
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
end
|
247
|
+
it "checks out the (master) HEAD revision and ignores the tag" do
|
248
|
+
git deploy_directory do
|
249
|
+
repository origin_repo
|
250
|
+
revision "HEAD"
|
251
|
+
end.should_be_updated
|
252
|
+
expect_revision_to_be("HEAD", rev_head)
|
253
|
+
expect_branch_to_be("master")
|
231
254
|
end
|
232
255
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
end
|
256
|
+
it "checks out the (master) HEAD revision and ignores the tag, and is idempotent" do
|
257
|
+
git deploy_directory do
|
258
|
+
repository origin_repo
|
259
|
+
revision "HEAD"
|
260
|
+
end.should_be_updated
|
261
|
+
git deploy_directory do
|
262
|
+
repository origin_repo
|
263
|
+
revision "HEAD"
|
264
|
+
end.should_not_be_updated
|
265
|
+
expect_revision_to_be("HEAD", rev_head)
|
266
|
+
expect_branch_to_be("master")
|
238
267
|
end
|
239
268
|
|
240
|
-
it "checks out the (master) HEAD revision and ignores the tag" do
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
269
|
+
it "checks out the (master) HEAD revision and ignores the tag to a local branch" do
|
270
|
+
git deploy_directory do
|
271
|
+
repository origin_repo
|
272
|
+
revision "HEAD"
|
273
|
+
checkout_branch "deploy"
|
274
|
+
end.should_be_updated
|
275
|
+
expect_revision_to_be("HEAD", rev_head)
|
276
|
+
expect_branch_to_be("deploy")
|
246
277
|
end
|
247
278
|
|
248
279
|
it "checks out the (master) HEAD revision when no revision is specified (ignores tag)" do
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
280
|
+
git deploy_directory do
|
281
|
+
repository origin_repo
|
282
|
+
end.should_be_updated
|
283
|
+
expect_revision_to_be("HEAD", rev_head)
|
284
|
+
expect_branch_to_be("master")
|
285
|
+
end
|
286
|
+
|
287
|
+
it "checks out the (master) HEAD revision when no revision is specified (ignores tag), and is idempotent" do
|
288
|
+
git deploy_directory do
|
289
|
+
repository origin_repo
|
290
|
+
end.should_be_updated
|
291
|
+
git deploy_directory do
|
292
|
+
repository origin_repo
|
293
|
+
end.should_not_be_updated
|
294
|
+
expect_revision_to_be("HEAD", rev_head)
|
295
|
+
expect_branch_to_be("master")
|
254
296
|
end
|
255
297
|
|
298
|
+
it "checks out the (master) HEAD revision when no revision is specified (ignores tag) to a local branch" do
|
299
|
+
git deploy_directory do
|
300
|
+
repository origin_repo
|
301
|
+
checkout_branch "deploy"
|
302
|
+
end.should_be_updated
|
303
|
+
expect_revision_to_be("HEAD", rev_head)
|
304
|
+
expect_branch_to_be("deploy")
|
305
|
+
end
|
256
306
|
end
|
257
307
|
end
|
@@ -22,7 +22,7 @@ require "functional/resource/base"
|
|
22
22
|
require "chef/mixin/shell_out"
|
23
23
|
require "fileutils"
|
24
24
|
|
25
|
-
describe Chef::Resource::Service, :requires_root, :
|
25
|
+
describe Chef::Resource::Service, :requires_root, :opensuse do
|
26
26
|
|
27
27
|
include Chef::Mixin::ShellOut
|
28
28
|
|
@@ -0,0 +1,232 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require "spec_helper"
|
19
|
+
|
20
|
+
# Deploy relies heavily on symlinks, so it doesn't work on windows.
|
21
|
+
describe Chef::Resource::Launchd, :macos_only, requires_root: true do
|
22
|
+
include RecipeDSLHelper
|
23
|
+
|
24
|
+
before(:each) do
|
25
|
+
shell_out("launchctl unload -wF /Library/LaunchDaemons/io.chef.testing.fake.plist")
|
26
|
+
FileUtils.rm_f "/Library/LaunchDaemons/io.chef.testing.fake.plist"
|
27
|
+
end
|
28
|
+
|
29
|
+
after(:each) do
|
30
|
+
shell_out("launchctl unload -wF /Library/LaunchDaemons/io.chef.testing.fake.plist")
|
31
|
+
FileUtils.rm_f "/Library/LaunchDaemons/io.chef.testing.fake.plist"
|
32
|
+
end
|
33
|
+
|
34
|
+
context ":enable" do
|
35
|
+
it "enables a service" do
|
36
|
+
launchd "io.chef.testing.fake" do
|
37
|
+
program_arguments [
|
38
|
+
"/bin/sleep",
|
39
|
+
"60",
|
40
|
+
]
|
41
|
+
run_at_load true
|
42
|
+
type "daemon"
|
43
|
+
action :enable
|
44
|
+
end.should_be_updated
|
45
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be true
|
46
|
+
expect(shell_out!("launchctl list io.chef.testing.fake").stdout).to match('"PID" = \d+')
|
47
|
+
expect(shell_out!("launchctl list io.chef.testing.fake").stdout).not_to match('"PID" = 0')
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should be idempotent" do
|
51
|
+
launchd "io.chef.testing.fake" do
|
52
|
+
program_arguments [
|
53
|
+
"/bin/sleep",
|
54
|
+
"60",
|
55
|
+
]
|
56
|
+
run_at_load true
|
57
|
+
type "daemon"
|
58
|
+
action :enable
|
59
|
+
end.should_be_updated
|
60
|
+
launchd "io.chef.testing.fake" do
|
61
|
+
program_arguments [
|
62
|
+
"/bin/sleep",
|
63
|
+
"60",
|
64
|
+
]
|
65
|
+
run_at_load true
|
66
|
+
type "daemon"
|
67
|
+
action :enable
|
68
|
+
end.should_not_be_updated
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context ":create" do
|
73
|
+
it "creates a service" do
|
74
|
+
launchd "io.chef.testing.fake" do
|
75
|
+
program_arguments [
|
76
|
+
"/bin/sleep",
|
77
|
+
"60",
|
78
|
+
]
|
79
|
+
run_at_load true
|
80
|
+
type "daemon"
|
81
|
+
action :create
|
82
|
+
end.should_be_updated
|
83
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be true
|
84
|
+
expect(shell_out("launchctl list io.chef.testing.fake").exitstatus).not_to eql(0)
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should be idempotent" do
|
88
|
+
launchd "io.chef.testing.fake" do
|
89
|
+
program_arguments [
|
90
|
+
"/bin/sleep",
|
91
|
+
"60",
|
92
|
+
]
|
93
|
+
run_at_load true
|
94
|
+
type "daemon"
|
95
|
+
action :create
|
96
|
+
end.should_be_updated
|
97
|
+
launchd "io.chef.testing.fake" do
|
98
|
+
program_arguments [
|
99
|
+
"/bin/sleep",
|
100
|
+
"60",
|
101
|
+
]
|
102
|
+
run_at_load true
|
103
|
+
type "daemon"
|
104
|
+
action :create
|
105
|
+
end.should_not_be_updated
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context ":create_if_missing" do
|
110
|
+
it "creates a service if it is missing" do
|
111
|
+
launchd "io.chef.testing.fake" do
|
112
|
+
program_arguments [
|
113
|
+
"/bin/sleep",
|
114
|
+
"60",
|
115
|
+
]
|
116
|
+
run_at_load true
|
117
|
+
type "daemon"
|
118
|
+
action :create_if_missing
|
119
|
+
end.should_be_updated
|
120
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be true
|
121
|
+
expect(shell_out("launchctl list io.chef.testing.fake").exitstatus).not_to eql(0)
|
122
|
+
end
|
123
|
+
it "is idempotent" do
|
124
|
+
launchd "io.chef.testing.fake" do
|
125
|
+
program_arguments [
|
126
|
+
"/bin/sleep",
|
127
|
+
"60",
|
128
|
+
]
|
129
|
+
run_at_load true
|
130
|
+
type "daemon"
|
131
|
+
action :create_if_missing
|
132
|
+
end.should_be_updated
|
133
|
+
launchd "io.chef.testing.fake" do
|
134
|
+
program_arguments [
|
135
|
+
"/bin/sleep",
|
136
|
+
"60",
|
137
|
+
]
|
138
|
+
run_at_load true
|
139
|
+
type "daemon"
|
140
|
+
action :create_if_missing
|
141
|
+
end.should_not_be_updated
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
context ":delete" do
|
146
|
+
it "deletes a service" do
|
147
|
+
launchd "io.chef.testing.fake" do
|
148
|
+
program_arguments [
|
149
|
+
"/bin/sleep",
|
150
|
+
"60",
|
151
|
+
]
|
152
|
+
run_at_load true
|
153
|
+
type "daemon"
|
154
|
+
action :enable
|
155
|
+
end
|
156
|
+
launchd "io.chef.testing.fake" do
|
157
|
+
type "daemon"
|
158
|
+
action :delete
|
159
|
+
end.should_be_updated
|
160
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be false
|
161
|
+
expect(shell_out("launchctl list io.chef.testing.fake").exitstatus).not_to eql(0)
|
162
|
+
end
|
163
|
+
it "is idempotent" do
|
164
|
+
launchd "io.chef.testing.fake" do
|
165
|
+
program_arguments [
|
166
|
+
"/bin/sleep",
|
167
|
+
"60",
|
168
|
+
]
|
169
|
+
run_at_load true
|
170
|
+
type "daemon"
|
171
|
+
action :enable
|
172
|
+
end
|
173
|
+
launchd "io.chef.testing.fake" do
|
174
|
+
type "daemon"
|
175
|
+
action :delete
|
176
|
+
end.should_be_updated
|
177
|
+
launchd "io.chef.testing.fake" do
|
178
|
+
type "daemon"
|
179
|
+
action :delete
|
180
|
+
end.should_not_be_updated
|
181
|
+
end
|
182
|
+
it "works if the file does not exist" do
|
183
|
+
launchd "io.chef.testing.fake" do
|
184
|
+
type "daemon"
|
185
|
+
action :delete
|
186
|
+
end.should_not_be_updated
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
context ":disable" do
|
191
|
+
it "deletes a service" do
|
192
|
+
launchd "io.chef.testing.fake" do
|
193
|
+
program_arguments [
|
194
|
+
"/bin/sleep",
|
195
|
+
"1",
|
196
|
+
]
|
197
|
+
type "daemon"
|
198
|
+
action :enable
|
199
|
+
end
|
200
|
+
launchd "io.chef.testing.fake" do
|
201
|
+
type "daemon"
|
202
|
+
action :disable
|
203
|
+
end.should_be_updated
|
204
|
+
expect(File.exist?("/Library/LaunchDaemons/io.chef.testing.fake.plist")).to be true
|
205
|
+
expect(shell_out("launchctl list io.chef.testing.fake").exitstatus).not_to eql(0)
|
206
|
+
end
|
207
|
+
it "is idempotent" do
|
208
|
+
launchd "io.chef.testing.fake" do
|
209
|
+
program_arguments [
|
210
|
+
"/bin/sleep",
|
211
|
+
"1",
|
212
|
+
]
|
213
|
+
type "daemon"
|
214
|
+
action :enable
|
215
|
+
end
|
216
|
+
launchd "io.chef.testing.fake" do
|
217
|
+
type "daemon"
|
218
|
+
action :disable
|
219
|
+
end.should_be_updated
|
220
|
+
launchd "io.chef.testing.fake" do
|
221
|
+
type "daemon"
|
222
|
+
action :disable
|
223
|
+
end.should_not_be_updated
|
224
|
+
end
|
225
|
+
it "should work if the plist does not exist" do
|
226
|
+
launchd "io.chef.testing.fake" do
|
227
|
+
type "daemon"
|
228
|
+
action :disable
|
229
|
+
end.should_not_be_updated
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|