chef 12.18.31 → 13.0.118
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 +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
|
@@ -144,30 +144,30 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
|
|
|
144
144
|
|
|
145
145
|
it "installs a gem with a hash of options for the dependency installer" do
|
|
146
146
|
dep_installer = Gem::DependencyInstaller.new
|
|
147
|
-
expect(@gem_env).to receive(:dependency_installer).with(:
|
|
147
|
+
expect(@gem_env).to receive(:dependency_installer).with(install_dir: "/foo/bar").and_return(dep_installer)
|
|
148
148
|
expect(@gem_env).to receive(:with_gem_sources).with("http://gems.example.com").and_yield
|
|
149
149
|
expect(dep_installer).to receive(:install).with(Gem::Dependency.new("rspec", ">= 0"))
|
|
150
|
-
@gem_env.install(Gem::Dependency.new("rspec", ">= 0"), :
|
|
150
|
+
@gem_env.install(Gem::Dependency.new("rspec", ">= 0"), install_dir: "/foo/bar", sources: ["http://gems.example.com"])
|
|
151
151
|
end
|
|
152
152
|
|
|
153
153
|
it "builds an uninstaller for a gem with options set to avoid requiring user input" do
|
|
154
154
|
# default options for uninstaller should be:
|
|
155
155
|
# :ignore => true, :executables => true
|
|
156
|
-
expect(Gem::Uninstaller).to receive(:new).with("rspec", :
|
|
156
|
+
expect(Gem::Uninstaller).to receive(:new).with("rspec", ignore: true, executables: true)
|
|
157
157
|
@gem_env.uninstaller("rspec")
|
|
158
158
|
end
|
|
159
159
|
|
|
160
160
|
it "uninstalls all versions of a gem" do
|
|
161
161
|
uninstaller = double("gem uninstaller")
|
|
162
162
|
expect(uninstaller).to receive(:uninstall)
|
|
163
|
-
expect(@gem_env).to receive(:uninstaller).with("rspec", :
|
|
163
|
+
expect(@gem_env).to receive(:uninstaller).with("rspec", all: true).and_return(uninstaller)
|
|
164
164
|
@gem_env.uninstall("rspec")
|
|
165
165
|
end
|
|
166
166
|
|
|
167
167
|
it "uninstalls a specific version of a gem" do
|
|
168
168
|
uninstaller = double("gem uninstaller")
|
|
169
169
|
expect(uninstaller).to receive(:uninstall)
|
|
170
|
-
expect(@gem_env).to receive(:uninstaller).with("rspec", :
|
|
170
|
+
expect(@gem_env).to receive(:uninstaller).with("rspec", version: "1.2.3").and_return(uninstaller)
|
|
171
171
|
@gem_env.uninstall("rspec", "1.2.3")
|
|
172
172
|
end
|
|
173
173
|
|
|
@@ -184,14 +184,14 @@ describe Chef::Provider::Package::Rubygems::AlternateGemEnvironment do
|
|
|
184
184
|
|
|
185
185
|
it "determines the gem paths from shelling out to gem env" do
|
|
186
186
|
gem_env_output = ["/path/to/gems", "/another/path/to/gems"].join(File::PATH_SEPARATOR)
|
|
187
|
-
shell_out_result = OpenStruct.new(:
|
|
187
|
+
shell_out_result = OpenStruct.new(stdout: gem_env_output)
|
|
188
188
|
expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env gempath").and_return(shell_out_result)
|
|
189
189
|
expect(@gem_env.gem_paths).to eq(["/path/to/gems", "/another/path/to/gems"])
|
|
190
190
|
end
|
|
191
191
|
|
|
192
192
|
it "caches the gempaths by gem_binary" do
|
|
193
193
|
gem_env_output = ["/path/to/gems", "/another/path/to/gems"].join(File::PATH_SEPARATOR)
|
|
194
|
-
shell_out_result = OpenStruct.new(:
|
|
194
|
+
shell_out_result = OpenStruct.new(stdout: gem_env_output)
|
|
195
195
|
expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env gempath").and_return(shell_out_result)
|
|
196
196
|
expected = ["/path/to/gems", "/another/path/to/gems"]
|
|
197
197
|
expect(@gem_env.gem_paths).to eq(["/path/to/gems", "/another/path/to/gems"])
|
|
@@ -271,7 +271,7 @@ RubyGems Environment:
|
|
|
271
271
|
- https://rubygems.org/
|
|
272
272
|
- http://gems.github.com/
|
|
273
273
|
JRUBY_GEM_ENV
|
|
274
|
-
expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env").and_return(double("jruby_gem_env", :
|
|
274
|
+
expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env").and_return(double("jruby_gem_env", stdout: gem_env_out))
|
|
275
275
|
expected = ["ruby", Gem::Platform.new("universal-java-1.6")]
|
|
276
276
|
expect(@gem_env.gem_platforms).to eq(expected)
|
|
277
277
|
# it should also cache the result
|
|
@@ -313,7 +313,7 @@ RubyGems Environment:
|
|
|
313
313
|
- https://rubygems.org/
|
|
314
314
|
- http://gems.github.com/
|
|
315
315
|
RBX_GEM_ENV
|
|
316
|
-
expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env").and_return(double("rbx_gem_env", :
|
|
316
|
+
expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env").and_return(double("rbx_gem_env", stdout: gem_env_out))
|
|
317
317
|
expect(@gem_env.gem_platforms).to eq(Gem.platforms)
|
|
318
318
|
expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache["/usr/weird/bin/gem"]).to eq(Gem.platforms)
|
|
319
319
|
end
|
|
@@ -341,6 +341,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
341
341
|
let(:bindir) { "/usr/bin/ruby" }
|
|
342
342
|
let(:options) { nil }
|
|
343
343
|
let(:source) { nil }
|
|
344
|
+
let(:include_default_source) { true }
|
|
344
345
|
|
|
345
346
|
let(:new_resource) do
|
|
346
347
|
new_resource = Chef::Resource::GemPackage.new(gem_name)
|
|
@@ -348,10 +349,11 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
348
349
|
new_resource.gem_binary(gem_binary) if gem_binary
|
|
349
350
|
new_resource.options(options) if options
|
|
350
351
|
new_resource.source(source) if source
|
|
352
|
+
new_resource.include_default_source(include_default_source)
|
|
351
353
|
new_resource
|
|
352
354
|
end
|
|
353
355
|
|
|
354
|
-
let
|
|
356
|
+
let(:current_resource) { nil }
|
|
355
357
|
|
|
356
358
|
let(:provider) do
|
|
357
359
|
run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
|
|
@@ -403,7 +405,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
403
405
|
end
|
|
404
406
|
|
|
405
407
|
context "when you try to use a hash of install options" do
|
|
406
|
-
let(:options) { { :
|
|
408
|
+
let(:options) { { fail: :burger } }
|
|
407
409
|
|
|
408
410
|
it "smites you" do
|
|
409
411
|
expect { provider }.to raise_error(ArgumentError)
|
|
@@ -437,9 +439,9 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
437
439
|
it "searches for a gem binary when running on Omnibus on Unix" do
|
|
438
440
|
platform_mock :unix do
|
|
439
441
|
allow(ENV).to receive(:[]).with("PATH").and_return("/usr/bin:/usr/sbin:/opt/chef/embedded/bin")
|
|
440
|
-
allow(File).to receive(:
|
|
441
|
-
allow(File).to receive(:
|
|
442
|
-
allow(File).to receive(:
|
|
442
|
+
allow(File).to receive(:exist?).with("/usr/bin/gem").and_return(false)
|
|
443
|
+
allow(File).to receive(:exist?).with("/usr/sbin/gem").and_return(true)
|
|
444
|
+
allow(File).to receive(:exist?).with("/opt/chef/embedded/bin/gem").and_return(true) # should not get here
|
|
443
445
|
expect(provider.gem_env.gem_binary_location).to eq("/usr/sbin/gem")
|
|
444
446
|
end
|
|
445
447
|
end
|
|
@@ -450,11 +452,11 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
450
452
|
it "searches for a gem binary when running on Omnibus on Windows" do
|
|
451
453
|
platform_mock :windows do
|
|
452
454
|
allow(ENV).to receive(:[]).with("PATH").and_return('C:\windows\system32;C:\windows;C:\Ruby186\bin;d:\opscode\chef\embedded\bin')
|
|
453
|
-
allow(File).to receive(:
|
|
454
|
-
allow(File).to receive(:
|
|
455
|
-
allow(File).to receive(:
|
|
456
|
-
allow(File).to receive(:
|
|
457
|
-
allow(File).to receive(:
|
|
455
|
+
allow(File).to receive(:exist?).with('C:\\windows\\system32\\gem').and_return(false)
|
|
456
|
+
allow(File).to receive(:exist?).with('C:\\windows\\gem').and_return(false)
|
|
457
|
+
allow(File).to receive(:exist?).with('C:\\Ruby186\\bin\\gem').and_return(true)
|
|
458
|
+
allow(File).to receive(:exist?).with('d:\\opscode\\chef\\bin\\gem').and_return(false) # should not get here
|
|
459
|
+
allow(File).to receive(:exist?).with('d:\\opscode\\chef\\embedded\\bin\\gem').and_return(false) # should not get here
|
|
458
460
|
expect(provider.gem_env.gem_binary_location).to eq('C:\Ruby186\bin\gem')
|
|
459
461
|
end
|
|
460
462
|
end
|
|
@@ -526,29 +528,68 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
526
528
|
end
|
|
527
529
|
|
|
528
530
|
it "queries for available versions on upgrade" do
|
|
529
|
-
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
|
530
|
-
and_return(Gem::Version.new("9000.0.2"))
|
|
531
|
+
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
|
532
|
+
.and_return(Gem::Version.new("9000.0.2"))
|
|
531
533
|
expect(provider.gem_env).to receive(:install)
|
|
532
534
|
provider.run_action(:upgrade)
|
|
533
535
|
expect(new_resource).to be_updated_by_last_action
|
|
534
536
|
end
|
|
535
537
|
end
|
|
536
538
|
|
|
539
|
+
context "when the source is from the rubygems_uri" do
|
|
540
|
+
it "determines the candidate version by querying the remote gem servers" do
|
|
541
|
+
Chef::Config[:rubygems_url] = "https://mirror1/"
|
|
542
|
+
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
|
543
|
+
.with(gem_dep, "https://mirror1/")
|
|
544
|
+
.and_return(Gem::Version.new(target_version))
|
|
545
|
+
expect(provider.candidate_version).to eq(target_version)
|
|
546
|
+
end
|
|
547
|
+
end
|
|
548
|
+
|
|
537
549
|
context "when the requested source is a remote server" do
|
|
538
550
|
let(:source) { "http://mygems.example.com" }
|
|
539
551
|
|
|
540
552
|
it "determines the candidate version by querying the remote gem servers" do
|
|
541
|
-
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
|
542
|
-
with(gem_dep, source)
|
|
543
|
-
and_return(Gem::Version.new(target_version))
|
|
553
|
+
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
|
554
|
+
.with(gem_dep, source, Chef::Config[:rubygems_url])
|
|
555
|
+
.and_return(Gem::Version.new(target_version))
|
|
556
|
+
expect(provider.candidate_version).to eq(target_version)
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
it "overwrites the config variable" do
|
|
560
|
+
new_resource.include_default_source false
|
|
561
|
+
Chef::Config[:rubygems_url] = "https://overridden"
|
|
562
|
+
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
|
563
|
+
.with(gem_dep, source)
|
|
564
|
+
.and_return(Gem::Version.new(target_version))
|
|
565
|
+
expect(provider.candidate_version).to eq(target_version)
|
|
566
|
+
end
|
|
567
|
+
end
|
|
568
|
+
|
|
569
|
+
context "when the requested source is an array" do
|
|
570
|
+
let(:source) { [ "https://mirror1", "https://mirror2" ] }
|
|
571
|
+
|
|
572
|
+
it "determines the candidate version by querying the remote gem servers" do
|
|
573
|
+
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
|
574
|
+
.with(gem_dep, *[source, Chef::Config[:rubygems_url] ].flatten)
|
|
575
|
+
.and_return(Gem::Version.new(target_version))
|
|
576
|
+
expect(provider.candidate_version).to eq(target_version)
|
|
577
|
+
end
|
|
578
|
+
|
|
579
|
+
it "overwrites the config variable" do
|
|
580
|
+
new_resource.include_default_source false
|
|
581
|
+
Chef::Config[:rubygems_url] = "https://overridden"
|
|
582
|
+
expect(provider.gem_env).to receive(:candidate_version_from_remote)
|
|
583
|
+
.with(gem_dep, *source)
|
|
584
|
+
.and_return(Gem::Version.new(target_version))
|
|
544
585
|
expect(provider.candidate_version).to eq(target_version)
|
|
545
586
|
end
|
|
546
587
|
end
|
|
547
588
|
|
|
548
589
|
context "when the requested source is a file" do
|
|
549
|
-
let
|
|
550
|
-
let
|
|
551
|
-
let
|
|
590
|
+
let(:gem_name) { "chef-integration-test" }
|
|
591
|
+
let(:source) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
|
|
592
|
+
let(:target_version) { ">= 0" }
|
|
552
593
|
|
|
553
594
|
it "parses the gem's specification" do
|
|
554
595
|
expect(provider.candidate_version).to eq("0.1.0")
|
|
@@ -566,18 +607,17 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
566
607
|
current_resource
|
|
567
608
|
end
|
|
568
609
|
|
|
610
|
+
let(:version) { Gem::Version.new(candidate_version) }
|
|
611
|
+
|
|
569
612
|
before do
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
allow(provider.gem_env).to receive(:candidate_version_from_remote).
|
|
574
|
-
with(*args).
|
|
575
|
-
and_return(version)
|
|
613
|
+
expected_source = [ source ]
|
|
614
|
+
expected_source << Chef::Config[:rubygems_url] if include_default_source
|
|
615
|
+
allow(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, *expected_source.flatten.compact).and_return(version)
|
|
576
616
|
end
|
|
577
617
|
|
|
578
618
|
describe "in the current gem environment" do
|
|
579
619
|
it "installs the gem via the gems api when no explicit options are used" do
|
|
580
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, :
|
|
620
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ])
|
|
581
621
|
provider.run_action(:install)
|
|
582
622
|
expect(new_resource).to be_updated_by_last_action
|
|
583
623
|
end
|
|
@@ -586,7 +626,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
586
626
|
let(:source) { "http://gems.example.org" }
|
|
587
627
|
|
|
588
628
|
it "installs the gem via the gems api" do
|
|
589
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, :
|
|
629
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [source, Chef::Config[:rubygems_url]])
|
|
590
630
|
provider.run_action(:install)
|
|
591
631
|
expect(new_resource).to be_updated_by_last_action
|
|
592
632
|
end
|
|
@@ -615,9 +655,9 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
615
655
|
|
|
616
656
|
# this catches 'gem_package "foo"' when "./foo" is a file in the cwd, and instead of installing './foo' it fetches the remote gem
|
|
617
657
|
it "installs the gem via the gems api, when the package has no file separator characters in it, but a matching file exists in cwd" do
|
|
618
|
-
allow(::File).to receive(:
|
|
658
|
+
allow(::File).to receive(:exist?).and_return(true)
|
|
619
659
|
new_resource.package_name("rspec-core")
|
|
620
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, :
|
|
660
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ])
|
|
621
661
|
provider.run_action(:install)
|
|
622
662
|
expect(new_resource).to be_updated_by_last_action
|
|
623
663
|
end
|
|
@@ -626,7 +666,20 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
626
666
|
let(:options) { "-i /alt/install/location" }
|
|
627
667
|
|
|
628
668
|
it "installs the gem by shelling out when options are provided as a String" do
|
|
629
|
-
expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" #{options}"
|
|
669
|
+
expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://www.rubygems.org #{options}"
|
|
670
|
+
expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
|
|
671
|
+
provider.run_action(:install)
|
|
672
|
+
expect(new_resource).to be_updated_by_last_action
|
|
673
|
+
end
|
|
674
|
+
end
|
|
675
|
+
|
|
676
|
+
context "when the Chef::Config[:rubygems_url] option is provided" do
|
|
677
|
+
let(:gem_binary) { "/foo/bar" }
|
|
678
|
+
|
|
679
|
+
it "installs the gem with rubygems.org as an added source" do
|
|
680
|
+
Chef::Config[:rubygems_url] = "https://mirror1"
|
|
681
|
+
expect(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, Chef::Config[:rubygems_url]).and_return(version)
|
|
682
|
+
expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1"
|
|
630
683
|
expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
|
|
631
684
|
provider.run_action(:install)
|
|
632
685
|
expect(new_resource).to be_updated_by_last_action
|
|
@@ -638,11 +691,47 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
638
691
|
let(:gem_binary) { "/foo/bar" }
|
|
639
692
|
|
|
640
693
|
it "installs the gem with rubygems.org as an added source" do
|
|
641
|
-
expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=#{source} --source=https://rubygems.org"
|
|
694
|
+
expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=#{source} --source=https://www.rubygems.org"
|
|
642
695
|
expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
|
|
643
696
|
provider.run_action(:install)
|
|
644
697
|
expect(new_resource).to be_updated_by_last_action
|
|
645
698
|
end
|
|
699
|
+
|
|
700
|
+
context "with include_default_source false" do
|
|
701
|
+
let(:include_default_source) { false }
|
|
702
|
+
|
|
703
|
+
it "ignores the Chef::Config setting" do
|
|
704
|
+
Chef::Config[:rubygems_url] = "https://ignored"
|
|
705
|
+
expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=#{source}"
|
|
706
|
+
expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
|
|
707
|
+
provider.run_action(:install)
|
|
708
|
+
expect(new_resource).to be_updated_by_last_action
|
|
709
|
+
end
|
|
710
|
+
end
|
|
711
|
+
end
|
|
712
|
+
|
|
713
|
+
context "when the source is an array" do
|
|
714
|
+
let(:source) { [ "https://mirror1" , "https://mirror2" ] }
|
|
715
|
+
let(:gem_binary) { "/foo/bar" }
|
|
716
|
+
|
|
717
|
+
it "installs the gem with an array as an added source" do
|
|
718
|
+
expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1 --source=https://mirror2 --source=https://www.rubygems.org"
|
|
719
|
+
expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
|
|
720
|
+
provider.run_action(:install)
|
|
721
|
+
expect(new_resource).to be_updated_by_last_action
|
|
722
|
+
end
|
|
723
|
+
|
|
724
|
+
context "with include_default_source false" do
|
|
725
|
+
let(:include_default_source) { false }
|
|
726
|
+
|
|
727
|
+
it "ignores the Chef::Config setting" do
|
|
728
|
+
Chef::Config[:rubygems_url] = "https://ignored"
|
|
729
|
+
expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1 --source=https://mirror2"
|
|
730
|
+
expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
|
|
731
|
+
provider.run_action(:install)
|
|
732
|
+
expect(new_resource).to be_updated_by_last_action
|
|
733
|
+
end
|
|
734
|
+
end
|
|
646
735
|
end
|
|
647
736
|
|
|
648
737
|
context "when we have cleared sources and an explict source is specified" do
|
|
@@ -651,7 +740,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
651
740
|
|
|
652
741
|
it "installs the gem" do
|
|
653
742
|
new_resource.clear_sources(true)
|
|
654
|
-
expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --clear-sources --source=#{source}"
|
|
743
|
+
expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --clear-sources --source=#{source} --source=https://www.rubygems.org"
|
|
655
744
|
expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
|
|
656
745
|
provider.run_action(:install)
|
|
657
746
|
expect(new_resource).to be_updated_by_last_action
|
|
@@ -663,7 +752,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
663
752
|
let(:options) { "-i /alt/install/location" }
|
|
664
753
|
|
|
665
754
|
it "installs the gem by shelling out when options are provided but no version is given" do
|
|
666
|
-
expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{candidate_version}\" #{options}"
|
|
755
|
+
expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{candidate_version}\" --source=https://www.rubygems.org #{options}"
|
|
667
756
|
expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
|
|
668
757
|
provider.run_action(:install)
|
|
669
758
|
expect(new_resource).to be_updated_by_last_action
|
|
@@ -671,10 +760,10 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
671
760
|
end
|
|
672
761
|
|
|
673
762
|
context "when options are given as a Hash" do
|
|
674
|
-
let(:options) { { :
|
|
763
|
+
let(:options) { { install_dir: "/alt/install/location" } }
|
|
675
764
|
|
|
676
765
|
it "installs the gem via the gems api when options are given as a Hash" do
|
|
677
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, { :
|
|
766
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, { sources: [ Chef::Config[:rubygems_url] ] }.merge(options))
|
|
678
767
|
provider.run_action(:install)
|
|
679
768
|
expect(new_resource).to be_updated_by_last_action
|
|
680
769
|
end
|
|
@@ -684,7 +773,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
684
773
|
let(:target_version) { "9000.0.2" }
|
|
685
774
|
|
|
686
775
|
it "installs the gem via the gems api" do
|
|
687
|
-
expect(provider.gem_env).to receive(:install).with(gem_dep, :
|
|
776
|
+
expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ] )
|
|
688
777
|
provider.run_action(:install)
|
|
689
778
|
expect(new_resource).to be_updated_by_last_action
|
|
690
779
|
end
|
|
@@ -727,7 +816,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
727
816
|
let(:gem_binary) { "/usr/weird/bin/gem" }
|
|
728
817
|
|
|
729
818
|
it "installs the gem by shelling out to gem install" do
|
|
730
|
-
expect(provider).to receive(:shell_out!).with("#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\"", env: nil, timeout: 900)
|
|
819
|
+
expect(provider).to receive(:shell_out!).with("#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://www.rubygems.org", env: nil, timeout: 900)
|
|
731
820
|
provider.run_action(:install)
|
|
732
821
|
expect(new_resource).to be_updated_by_last_action
|
|
733
822
|
end
|
|
@@ -780,7 +869,7 @@ describe Chef::Provider::Package::Rubygems do
|
|
|
780
869
|
end
|
|
781
870
|
|
|
782
871
|
context "when options are given as a Hash" do
|
|
783
|
-
let(:options) { { :
|
|
872
|
+
let(:options) { { install_dir: "/alt/install/location" } }
|
|
784
873
|
|
|
785
874
|
it "uninstalls via the api" do
|
|
786
875
|
# pre-reqs for action_remove to actually remove the package:
|
|
@@ -27,7 +27,7 @@ describe Chef::Provider::Package::Solaris do
|
|
|
27
27
|
@new_resource.source("/tmp/bash.pkg")
|
|
28
28
|
|
|
29
29
|
@provider = Chef::Provider::Package::Solaris.new(@new_resource, @run_context)
|
|
30
|
-
allow(::File).to receive(:
|
|
30
|
+
allow(::File).to receive(:exist?).and_return(true)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
describe "assessing the current package status" do
|
|
@@ -63,7 +63,7 @@ PKGINFO
|
|
|
63
63
|
|
|
64
64
|
it "should raise an exception if a source is supplied but not found" do
|
|
65
65
|
allow(@provider).to receive(:shell_out).and_return(@status)
|
|
66
|
-
allow(::File).to receive(:
|
|
66
|
+
allow(::File).to receive(:exist?).and_return(false)
|
|
67
67
|
@provider.load_current_resource
|
|
68
68
|
@provider.define_resource_requirements
|
|
69
69
|
expect { @provider.process_resource_requirements }.to raise_error(Chef::Exceptions::Package)
|
|
@@ -71,8 +71,8 @@ PKGINFO
|
|
|
71
71
|
|
|
72
72
|
it "should get the source package version from pkginfo if provided" do
|
|
73
73
|
status = double(:stdout => @pkginfo, :exitstatus => 0)
|
|
74
|
-
expect(@provider).to receive(:shell_out).with("pkginfo -l -d /tmp/bash.pkg SUNWbash", { timeout: 900 }).and_return(status)
|
|
75
|
-
expect(@provider).to receive(:shell_out).with("pkginfo -l SUNWbash", { timeout: 900 }).and_return(@status)
|
|
74
|
+
expect(@provider).to receive(:shell_out).with("pkginfo", "-l", "-d", "/tmp/bash.pkg", "SUNWbash", { timeout: 900 }).and_return(status)
|
|
75
|
+
expect(@provider).to receive(:shell_out).with("pkginfo", "-l", "SUNWbash", { timeout: 900 }).and_return(@status)
|
|
76
76
|
@provider.load_current_resource
|
|
77
77
|
|
|
78
78
|
expect(@provider.current_resource.package_name).to eq("SUNWbash")
|
|
@@ -81,8 +81,8 @@ PKGINFO
|
|
|
81
81
|
|
|
82
82
|
it "should return the current version installed if found by pkginfo" do
|
|
83
83
|
status = double(:stdout => @pkginfo, :exitstatus => 0)
|
|
84
|
-
expect(@provider).to receive(:shell_out).with("pkginfo -l -d /tmp/bash.pkg SUNWbash", { timeout: 900 }).and_return(@status)
|
|
85
|
-
expect(@provider).to receive(:shell_out).with("pkginfo -l SUNWbash", { timeout: 900 }).and_return(status)
|
|
84
|
+
expect(@provider).to receive(:shell_out).with("pkginfo", "-l", "-d", "/tmp/bash.pkg", "SUNWbash", { timeout: 900 }).and_return(@status)
|
|
85
|
+
expect(@provider).to receive(:shell_out).with("pkginfo", "-l", "SUNWbash", { timeout: 900 }).and_return(status)
|
|
86
86
|
@provider.load_current_resource
|
|
87
87
|
expect(@provider.current_resource.version).to eq("11.10.0,REV=2005.01.08.05.16")
|
|
88
88
|
end
|
|
@@ -101,8 +101,8 @@ PKGINFO
|
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
it "should return a current resource with a nil version if the package is not found" do
|
|
104
|
-
expect(@provider).to receive(:shell_out).with("pkginfo -l -d /tmp/bash.pkg SUNWbash", { timeout: 900 }).and_return(@status)
|
|
105
|
-
expect(@provider).to receive(:shell_out).with("pkginfo -l SUNWbash", { timeout: 900 }).and_return(@status)
|
|
104
|
+
expect(@provider).to receive(:shell_out).with("pkginfo", "-l", "-d", "/tmp/bash.pkg", "SUNWbash", { timeout: 900 }).and_return(@status)
|
|
105
|
+
expect(@provider).to receive(:shell_out).with("pkginfo", "-l", "SUNWbash", { timeout: 900 }).and_return(@status)
|
|
106
106
|
@provider.load_current_resource
|
|
107
107
|
expect(@provider.current_resource.version).to be_nil
|
|
108
108
|
end
|
|
@@ -132,7 +132,7 @@ PKGINFO
|
|
|
132
132
|
|
|
133
133
|
describe "install and upgrade" do
|
|
134
134
|
it "should run pkgadd -n -d with the package source to install" do
|
|
135
|
-
expect(@provider).to receive(:shell_out!).with("pkgadd -n -d /tmp/bash.pkg all", { timeout: 900 })
|
|
135
|
+
expect(@provider).to receive(:shell_out!).with("pkgadd", "-n", "-d", "/tmp/bash.pkg", "all", { timeout: 900 })
|
|
136
136
|
@provider.install_package("SUNWbash", "11.10.0,REV=2005.01.08.05.16")
|
|
137
137
|
end
|
|
138
138
|
|
|
@@ -140,26 +140,26 @@ PKGINFO
|
|
|
140
140
|
@new_resource = Chef::Resource::Package.new("/tmp/bash.pkg")
|
|
141
141
|
@provider = Chef::Provider::Package::Solaris.new(@new_resource, @run_context)
|
|
142
142
|
expect(@new_resource.source).to eq("/tmp/bash.pkg")
|
|
143
|
-
expect(@provider).to receive(:shell_out!).with("pkgadd -n -d /tmp/bash.pkg all", { timeout: 900 })
|
|
143
|
+
expect(@provider).to receive(:shell_out!).with("pkgadd", "-n", "-d", "/tmp/bash.pkg", "all", { timeout: 900 })
|
|
144
144
|
@provider.install_package("/tmp/bash.pkg", "11.10.0,REV=2005.01.08.05.16")
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
it "should run pkgadd -n -a /tmp/myadmin -d with the package options -a /tmp/myadmin" do
|
|
148
|
-
|
|
149
|
-
expect(@provider).to receive(:shell_out!).with("pkgadd -n -a /tmp/myadmin -d /tmp/bash.pkg all", { timeout: 900 })
|
|
148
|
+
@new_resource.options "-a /tmp/myadmin"
|
|
149
|
+
expect(@provider).to receive(:shell_out!).with("pkgadd", "-n", "-a", "/tmp/myadmin", "-d", "/tmp/bash.pkg", "all", { timeout: 900 })
|
|
150
150
|
@provider.install_package("SUNWbash", "11.10.0,REV=2005.01.08.05.16")
|
|
151
151
|
end
|
|
152
152
|
end
|
|
153
153
|
|
|
154
154
|
describe "remove" do
|
|
155
155
|
it "should run pkgrm -n to remove the package" do
|
|
156
|
-
expect(@provider).to receive(:shell_out!).with("pkgrm -n SUNWbash", { timeout: 900 })
|
|
156
|
+
expect(@provider).to receive(:shell_out!).with("pkgrm", "-n", "SUNWbash", { timeout: 900 })
|
|
157
157
|
@provider.remove_package("SUNWbash", "11.10.0,REV=2005.01.08.05.16")
|
|
158
158
|
end
|
|
159
159
|
|
|
160
160
|
it "should run pkgrm -n -a /tmp/myadmin with options -a /tmp/myadmin" do
|
|
161
|
-
|
|
162
|
-
expect(@provider).to receive(:shell_out!).with("pkgrm -n -a /tmp/myadmin SUNWbash", { timeout: 900 })
|
|
161
|
+
@new_resource.options "-a /tmp/myadmin"
|
|
162
|
+
expect(@provider).to receive(:shell_out!).with("pkgrm", "-n", "-a", "/tmp/myadmin", "SUNWbash", { timeout: 900 })
|
|
163
163
|
@provider.remove_package("SUNWbash", "11.10.0,REV=2005.01.08.05.16")
|
|
164
164
|
end
|
|
165
165
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Bryan McLellan <btm@loftninjas.org>
|
|
3
|
-
# Copyright:: Copyright 2014-
|
|
3
|
+
# Copyright:: Copyright 2014-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
require "chef/provider/package/windows/registry_uninstall_entry"
|
|
3
|
+
|
|
4
|
+
describe Chef::Provider::Package::Windows::RegistryUninstallEntry do
|
|
5
|
+
let(:hkey) { :hkey } # mock all the methods
|
|
6
|
+
let(:key) { :key }
|
|
7
|
+
let(:entry) { { "UninstallString" => "UninstallStringPath", "QuietUninstallString" => "QuietUninstallStringPath" } }
|
|
8
|
+
|
|
9
|
+
describe "when QuietUninstallString key not present" do
|
|
10
|
+
let(:quiet_uninstall_string) { nil }
|
|
11
|
+
let (:quiet_uninstall_string_key) { Chef::Provider::Package::Windows::RegistryUninstallEntry.quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry).uninstall_string }
|
|
12
|
+
it "should return UninstallString key value" do
|
|
13
|
+
expect(quiet_uninstall_string_key).to eql "UninstallStringPath"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "when QuietUninstallString key present" do
|
|
18
|
+
let(:quiet_uninstall_string) { "QuietUninstallString" }
|
|
19
|
+
let (:quiet_uninstall_string_key) { Chef::Provider::Package::Windows::RegistryUninstallEntry.quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry).uninstall_string }
|
|
20
|
+
|
|
21
|
+
it "should return QuietUninstallString key value" do
|
|
22
|
+
expect(quiet_uninstall_string_key).to eql "QuietUninstallStringPath"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Bryan McLellan <btm@loftninjas.org>
|
|
3
|
-
# Copyright:: Copyright 2014-
|
|
3
|
+
# Copyright:: Copyright 2014-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -312,6 +312,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
|
312
312
|
let(:resource_source) { "https://foo.bar/calculator.exe" }
|
|
313
313
|
|
|
314
314
|
it "downloads the http resource" do
|
|
315
|
+
allow(File).to receive(:exist?).with('c:\cache\calculator.exe').and_return(false)
|
|
315
316
|
expect(provider).to receive(:download_source_file)
|
|
316
317
|
provider.run_action(:install)
|
|
317
318
|
end
|